nico.ninja A deep dive journey about electronics, computers, radio and so on

CW Morse code trainer

This year, I enrolled in a three-month ham radio course to get my ham radio license and be able to transmit and talk with the folks. The course is divided into five steps, one of which is Morse Code, or CW, in the amateur radio jargon. Practicing some Morse code with a standalone device would be cool!

Morse Trainer powered on

At first, I thought of coding the entire thing by myself, but I gave up since I am running too many projects in parallel, so digging the Internet, I found Garry’s blog with an excellent fit of a Morse trainer project with Arduino. Even it takes care of the Prosigns! I forked out the project into my own GitHub account and adjusted the code to match some of my specs, such as using an HD44780 20x4 LCD driven through i2c, setting auto/manual modes through the same speed potentiometer, adding a button to clear out the screen, etc.

Wiring

During my practices, I found a button to clear the screen contents useful, so I didn’t need to reset the microcontroller. I attached a button that puts down D3 into the ground to clear the screen.

Front Panel

I also found the auditive feedback of a speaker helpful. I built a simple oscillator with three transistors. At first, I tried to use Arduino’s tone() command, but tone() messes up with the microcontroller timings and is unsuitable for this project when using interrupts.

Speaker

The 3D-printed case was divided into two parts: the body containing the Arduino Nano (in a USB-C flavor) and the speaker. The front panel holds the 20x4 LCD screen, two potentiometers, the clear screen button, and the audio jack for the keyer.

Bill of Materials

Here’s the complete BOM and related files for building this project.

QTY Description Usage
1 Arduino Nano Microcontroller
2 BC548 or NPN-compatible Audio Oscillator
1 BC559 or PNP-compatible Audio Oscillator
1 33k Ohm resistor Audio Oscillator
1 0.1uF x 16v capacitor Audio Oscillator
4 3.5mm jack Keyer connector
2 10k Ohm potentiometers Volume and Speed selectors
1 i2c HD44780 20x4 LCD LCD Screen
1 8 Ohm 0.5 watt speaker Speaker
1 Square button Clear screen button

Resources