Introduction: Morse Code Trainer

This instructable is about learning Morse Code with the aid of a self constructed “Morse Code Trainer”.
The 'Trainer' is based on a simple modular built STEM/game platform, plus newly developed interactive software.

This device is an alternative to the likes of the MFJ Pocket Morse Tutor (costing > $100), with some comparable features plus several not comparable features. Additionally, you can practice and test your own CW Morse Code recognition and generation; in free-form and structured activities. See videos below.

This Morse code trainer contains 6 training routines, easy to advanced, consisting of a variety of learning aids. You select them from a menu and give inputs; and they provide you feedback audibly, by means of an LED bar display and through a serial monitor. The use of the button inputs and LED display fully support portable operations without the need to relay on the serial monitor outputs.

There is some support for numbers, punctuation and special characters. Emphasis is on the letters of the alphabet. Farnsworth (longer inter char & word) spacing is used by default, but can be disabled.

I developed the software for myself as I was learning Morse code. So I was my own user Guinea pig for testing and feature validation. I hope others find the training routines and their features helpful in aiding them to effectively learn Morse code, while enjoying doing so.

Step 1: Supplies

Required Items:

  • A mini 'STEM/Game' console (which you'll put together, easily. No soldering needed) Mini-STEM-LED-Game-Platform or as of 2024 you can now do a build using a PCB board (with a Nano or RP2040 + opt. of discrete LEDs) and a 3D printed enclosure; the details for which are in this instructable project: PCB & 3D Case for STEM Game Platform
  • the “Morse Code Trainer” software [see the download file: Morse_Trainer.ino ]
  • the Hardware platform support .h include file [see the download file: 4Btn-6LED_Platform.h ]
  • “Morse Code Trainer” operators manual [ see the download file: MC_Trainer_Manual.doc ]

It is assumed that you have means to download an Arduino sketch.

Optional Items:

Step 2: What You Need to Do

1) Follow the mini 'STEM/Game' console Instructable, to build the needed hardware. Located Here

Construction overview and customizing your device:
When you put together your mini game console platform, leave space between the button module and the Arduino Nano. To allow for the potential insertion of wires to go to an external button or key. For portable operation you should opt to include an attached battery, else you might need a power-bank.

The button (btn1 used for keying in the Morse code) and piezoelectric sounder on the mini STEM platform should, for the most part, serve just fine.

But it is easy to parallel btn1 with an external Key. Also an external speaker can be attached in parallel to (or place of) the piezo sounder.
If used, an external Key needs to be attached to D16 (aka A2) and ground (@ A1). These are the same lines btn1 is between. See Photo above.

An external speaker, if used, needs to be attached to D12 and D13, the same signals used by the piezo.
Refer to the photos for examples. This speaker can be quit loud depending on its type and impedance.

2) Download the Morse-code trainer sketch (.ino & .h files below) into the mini console platform.

[ Refer here for Arduino IDE operations. ]

The include library (4Btn-6LED_Platform.h) determines button statuses, maintains LED states along with their intended brightness, and provides basic sound effects.
The secret sauce is the main Morse-Code operations software (Morse_Trainer.ino). This implements smart Morse-Code recognition and generation; utilizing adaptive timing for both. There are utilities for encoding and decoding ASCII and ditdahs into & from data bytes, strings, and properly timed ditdah audio.
With these underlying MC operations, a half dozen training routines were assembles with a range of difficulty, features, feedback aids, and challenges; designed to engage beginners to intermediates.

If you want greater understanding of the features and operation of the mini STEM/Game platform include library (.h file), or how to develop your own mini app code utilizing it, study this tutorial:

3) Read the operators manual and step through the actions on the mini console, for at least the first three training routines to generally familiarize yourself with its operations.

Watch the included video, demonstrating general operation of the 'Morse Code Trainer'.
I recommend you also studying the charts of Morse Code (memory aids), which I devised and are attached.

4) Start practicing with it regularly. Using training routines #1-#6 until you achieve near proficiency at a low level (e.g. 5-8 WPM overall) and then work on perhaps approximately 10-12 WPM rate, with each of the activities. The Morse-code trainer supports up to about 36 WPM.

Once you have reached your desired WPM speed with the alphabet, you can use menu item routine #1 & #4 (echoMorse & Relay_exercise) with numbers, punctuation and special characters to develop your full Morse code expertise.

Of course your exact order of focus, drilling and practice may differ according to what you are comfortable will and works for you. I see that many advise that you learn to 'copy', listen to till you can recognize and write down (letters then words by their sound), before you work on your keying MC skills. To do so you would start just listening to 'Rx Test' (+ 'Relay exercise'?) and looking at the reference text. Perhaps along with some online content &/or phone/PC apps.

Step 3: The Software: Training Routines

There are six training routines (exercises/tests). They range in an increasing required proficiency facilitating a smooth learning curve. Briefly they are:

#1 'echoMorse' Simple Freeform entry of Morse code characters. Whatever you key-in (you will hear as you do so) it is then echoed back (audio & text) with the audio dit-dahs properly spaced. This allows the user to practice what ever they want and at their own rate.

#2 'A2Z_Morse_Exercise' This tests your ability to key in A thru Z in order. If you get a character wrong you'll hear a buZZ, and you'll have to try again. Each character entered is followed by the sound of the proper ditdah sequence. Refer to Morse code chart as needed. After all 26 the total number you got correct is reported to you.

#3 'Morse_AB_Exercise' Here random characters are given and the user is expected to enter the code for the letter following it in the alphabet. Given 'J' enter 'K'; given 'Z' one should enter 'A'. The exercise is 12 characters long. This activity requires recognition of codes given, the order of the letter in the alphabet combined with ability to key-in a correct letter.

#4 'Relay_exercise' You write down the letters of a made up 'word' (4 characters) as you hear them. Then try to key them in (as if to relay or re-transmit). They will be made up words, so pay attention. After a few words your correct character total is given. The added challenge here is to recognize & transcribe (Copy) multiple characters in succession as well as 'transmitting' multiple, properly formed, characters in succession.

With the advanced options, not only alphabet characters are used; also are numbers, punctuation and special characters. BTW: they are also supported in the menu item #1 routine.

#5 'Tx_test' Tests keying speed and accuracy. You are assigned one of four 10 word scripts (see below), as indicated by a color pair of LEDs, which can be referred to either on screen or as written in the user manual. After keying in the line, the testee is given their overall WPM rate & if applicable an Err count.

"The quick brown fox jumps over the lazy dog. Wowzer!"
"Pack my box with five dozen liquor jugs. You betcha."
"The five boxing wizards jump quickly. OMG, what a show."
"Bad Boys Run Over Your Garden, But Violet's Gone Wild."

The last line, is my replacement for an old distasteful mnemonic. Picture two boys running through a colorful vegetable garden, and in the foreground Violet, in a convertible, doing donuts in the lawn.

#6 'Rx_test' One of the pre-programmed 10 word lines is sounded out at 5 to 36 WPM. The Morse-code student transcribes it the best they can. After the line is completed they compare what they wrote down with the appropriate line in the user manual or on the serial monitor. The testee scores their accuracy themselves.

Please read the whole user manual operational details and so that you don't get unnecessarily confused or frustrated.

Print out the single page Cheat Sheet Reference doc and keep it with your MC Trainer, as I assure you, given time you will forget how to operate the pocket Morse Code trainer.

Step 4: Training Tips and Other Things of Potential Interest

I have included a couple of short video segments to give a sense of operations with the Morse Code Trainer. It really is smoother and more rewarding to work with than are my video demo skills.

Training Tips

You should practice-exercise-test with one of the six activities above, over time until you generally achieve a level of competence before going on to utilize the next one. Please note, that in order for you MC generation to be correctly duplicated by anyone or automated recognition, uniform rhythmic keying action is essential.

Once the Morse code for the alphabet is thoroughly learned using these 6 activities, one could effectively communicate with others by means of Morse code. As one could forego punctuation and type out numbers (eg: “I have two kids.”). So get out there and go for it. Now when you feel you need-want to add numbers and punctuation to your repertoire you can do so using 'echoMorse' and 'Relay_exercise', which can support a mix of alpha, numbers, punctuation & some special characters.

I think the numbers are pretty easy and I don't think it's a problem if you even key them at a slower rate then letters. So I don't think they need much attention or practice. Punctuation & spc. chars are more challenging.

BTW, things of potential interest

I did include a 10 word line which I feel ought to be the modern replacement for the mnemonic sentence that is used to recall the resister color code sequence.

"Bad Boys Run Over Your Garden But Violet's Gone Wild.”

I envision 2 boys running into a flower garden while a gal in a convertible does 'donuts' in the lawn. And of course the scene is full of color.

I also originated one of the sentences containing all the letters in the alphabet

“Vicky forged handsome boutique plaza ax jewelry.”

As I wanted at least 4 of them, and was not happy with any more than 3 that I found.

You could easily change the .ino sketch to put in your own chosen sentences used for testing TX and RX. Which could include HAM pro-signs, call signs & QSOs for example. Also you could create your own character sets for use in Relay_exercise.

Step 5: Update

I personally have used my Morse Code Trainer to gain quick confidence in knowing and using Morse code. Now I have got to a point where I want more variation and greater challenge in my training practice.

So have created a new set of software, utilizing a randomly accessed 900 word vocabulary (600 common words plus 300 HAM tech. & CW terms), along with several different new training routines. Highlighted in the video above.

I am waiting for someone to do an "I Made It." post before I spend time polishing it up, fully documenting it and adding it here for others to download and use.