User avatar
By RichardS
#43153 User
Tired2

Description
This is my contest entry. I started it when I heard about the contest, finished it just in time.

It is a WW2 Era J-38 telegraph key with a 3d printed base to house the ESP8266 and battery pack. The additional components are a battery pack, a single resistor, a diode, and a piezo buzzer.

The ESP Runs the arduino firmware, utilizing we web server, spiffy for eeprom data, and a websocket server.

Opening the slider on the key boots the ESP8266. Once booted, the ESP connects to wifi (once the user sets it up via ad-hoc mode), and brings up a websocket enabled web server.

The user can then key in a base timing, which sets the expected duration of a "dot" in Morse code.

Opening the web interface, there will be a text box for ascii data decoded from what the user enters on the key in Morse code, provided they are keeping tight enough timing with respect to the specification for Morse code. If the timing is not valid (for instance a dot or dash is too long or not long enough within a threshold), the buzzer will sound and require the user to re-set the base timing.

The web interface also allows users to input ascii text that will be sounded from the piezo speaker at the base timing the user has selected, or a default rate if the user has not keyed in any data yet. This "receive" mode can also be accessed over a REST style api call like: http://esp/write?val=SOS

The original idea for this project was to simply make an IoT button, but things evolved when the idea for dynamic command structures via Morse code came about. With a bit of code extension, this system can easily be made into an internet of things button for home automation, not unlike the amazon 'dash' button, but with the ability to key in dynamic data. One example would be outputting a REST or MQTT command such as "L50" to a system like OpenHAB, to turn a light on to a 50% dimmer setting.

Parts
1x (Momentary Pushbutton + 1 switch) or ideally a vintage Telegraph Key available for ~$15 on eBay..
1x 1k-10k 1/4w resistor
1x 1n4001 diode or similar
1x piezo buzzer
1x battery pack, 2xAA works well.
1x ESP8266. I used a NodeMCU v1.0

Links
Github

Video


Images
Attachments
(31.86 KiB) Downloaded 593 times
Open 1.jpg
Closed.jpg
Web Interface.png
Wiring Schematic.png
Case Bottom Screenshot J-38 Key.png