ESP32-based morse code emitter
Took in a serial connection over USB, converted input text to morse code, then both flashed an LED and played a 1200HZ tone in-sync with the generated morse code.
Computer UI
A cute Processing based UI used for egressing messages over Serial. This is what talked to the ESP-32 based emitter
Syncing between the two
Two-way communication between the UI and the ESP32 allowed for live updates in the UI on message send progress and when it was available for more transmissions
Throughout the process of development, we faced many challenges, like:
Limiting text input to valid characters. We were seeing Processing attempt to add SHIFT and other modifier characters into the text input box
This was fixed by filtering the range of allowed ASCII codes found using an ASCII lookup table
The Processing serial library does not have features to read Serial line-by-line, simply read the entire buffer, or character by character.
To get past this we chose to read the buffer by individual characters and then manually use the "\n" (newline) character as our line-deliminator so that we could properly parse the messages coming from ESP32
Touch-tone style hardware decoding of noise. One of the goals of this project was to also decode morse-code on another ESP32. This became a problem as we simply could not get the LM567 chip we were using to work. During our debugging we tried:
Using oscilloscope to verify the microphone was outputting what looked like valid sound
Using the multimeter to verify the resistor values calculated to tune the LM567 chip to a specific frequency
Re-wiring the circuit multiple times
Different microphone styles with and without built-in gain, and tested on all gain frequencies
Copying one instance of the touch-tone decoding diagram from the LM567 data sheet and using it's relevant frequency
The closest we got was it kind-of working one day, but after setting down the project and trying again at a later point, we could not reproduce the kind-of working results.Â
While this project did ultimately fall quite short of our initial goal due to issues with decoding of audio based on the chips we wanted, we believe that ultimately this project was still a massive success in an academic environment. Despite the numerous failures and to try to counteract and understand them we went through many great lengths learning how to read datasheets, use oscilloscopes, perform Root Mean Squared maths to satisfy one of the equation requirements on the datasheet, and other general debugging knowledge. During the process we re-wired the breadboard over a dozen times with varying resistor and capacitor values based on the math or copying the datasheet provided phone tone-decoder example. Aside from that we believe that the portions that were completed, namely the UI, ended up looking quite nice, with our group ultimately having a lot of fun during this whole process.