Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
jenskueper committed Jun 26, 2020
0 parents commit 77264bf
Show file tree
Hide file tree
Showing 10 changed files with 100 additions and 0 deletions.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2020 Jens

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
46 changes: 46 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Festool CTL SYS vacuum with bluetooth remote

YouTube video: https://youtu.be/E9ytORyrOFA

I really like my Festool CTL SYS but was missing the Bluetooth features of the bigger vacuums so I decided to retrofit the Bluetooth module CT-F I/M.

## Description
The Bluetooth module has 3 wires: 5V, GND, and a signal wire which will be GND most of the time and 5V for a short time when the button is pressed.

I made a custom PCB with an ATtiny85 microcontroller to add denouncing and translate the momentary signal into a persistent on/off signal for the vacuum.

The vacuum has ZH 5 pin connector. If you connect pin 1 to pin 2, the vacuum will start. I added a 5V power supply since I couldn't find a 5V power source on the Festool PCB which could handle 100mA of current required by the Bluetooth module + my custom module. I use the 230VAC from the socket since the current is not enough to trigger the vacuum in auto mode.

You can achieve the same functionality without using a microcontroller but since I am a software developer and have more knowledge about microcontroller then analog circuits I choose this approach.

## Costs:
- 75€/85$ for Festool Bluetooth module + remote CT-F I/M-Set (202097)
- 1€/1$ for ATtiny85 microcontroler
- 5€/5$ for 5V power supply
- 3€/3$ for ZH5 cable, relay, transistor, diode and resistors
------------
84€/94$ total


## Components:
- Festool CT-F I/M
- 5V relay e.g. HJR-4102-L 5V
- 1N4007 diode
- 10kOhm pull down resistor
- NPM transistor to control relay e.g. BC547B
- Gate resistor for transistor e.g 1kOhm
- 5V power supply e.g HLK-PM01 5
- 5pin ZH5 cable

## Programming

The code is part of this GitHub repository. You can follow this guide to find out more about how to program the ATtiny85: https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829

## Images
![Festool PCB](festool_pcb.jpg)
![Test circuit](test_circuit.jpg)
![Custom PCB front](custom_pcb_front.jpg)
![Custom PCB back](custom_pcb_back.jpg)
![Bluetooth modle mounted](bluetooth_module.jpg)
![Mounted PCB 1](mounted_pcb_1.jpg)
![Mounted PCB 2](mounted_pcb_2.jpg)
Binary file added bluetooth_module.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added custom_pcb_back.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added custom_pcb_front.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 33 additions & 0 deletions festool_ctl_sys.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
const int REMOTE_IN = 3;
const int RELAY_OUT = 4;

bool vacuum_running = LOW;
bool remote_state = LOW;

unsigned long lastDebounceTime = 0; // the last time a bluetooth signal has been received
unsigned long debounceDelay = 2000; // the debounce time, can probably be reduced

void setup() {
pinMode(REMOTE_IN, INPUT);
pinMode(RELAY_OUT, OUTPUT);

// ensure a defined state at bootup
digitalWrite(RELAY_OUT, vacuum_running);
}

void loop() {
// after the remote has been triggered, "wait" debounceDelay until reading again to avoid boucing
if ((millis() - lastDebounceTime) < debounceDelay) {
return;
}
remote_state = digitalRead(REMOTE_IN);
if (remote_state == HIGH) {
// reset the debouncing timer
lastDebounceTime = millis();

// toggle vacuum
vacuum_running = !vacuum_running;
digitalWrite(RELAY_OUT, vacuum_running);
}

}
Binary file added festool_pcb.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mounted_pcb_1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mounted_pcb_2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test_circuit.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 77264bf

Please sign in to comment.