
The nanoKeyer project is a CW keyer based on the Arduino platform and can
be operated with a PS/2 keyboard or a Iambic paddle.
I've started my own CW Keyer/Decoder project based on a BlackPill STM32F401
module because I'm not very good at Morse code (neither transmitting nor
receiving) and I wanted something more sophisticated as an aid.
By taking advantage of cheap modules available on Aliexpress I propose the
following schematics for a BOM of around 15$
The design will use:
- a BlackPill F401 module (which is most of the time cheaper than an Arduino board)
- an I2S speaker and up to 3W amplifier (MAX98357A)
- an I2S microphone (INMP441)
- a 16×2 alphanumeric or a 128×64 graphic LCD
- rotary encoder, buttons, switching supply, opto-couplers
Advantages:
- This design will use a modern Cortex-M4 84MHz processor with hardware floating point unit and lots of RAM.
- It can be a USB host so it will support modern (USB) computer keyboards. Typed keys will also be displayed on the LCD.
- The LCD will allow parameter setting and the unit will operate independent of computers.
- Connection and control from a computer is still possible via the USB-C connector present on the F401 module.
- The CW tone will be synthesized and the speaker will generate a pure sine wave which could be directly fed to the audio input or microphone of a SSB transceiver. Attack and decay envelopes of the sound will prevent poping noises. A CW output switch is also available.
- The I2S microphone will capture the ambient sound, apply a FFT transform and decode any captured Morse code (I'll probably use the second line of the display).
- All the components are through-hole or modules and it will be easy to build and solder.
The project schematic

- Gerber files for PCB manufacture
2 layer PCB |
 |  |
The STM32F401 processor CubeMX and its documentation
The components cost (with shipping) for one CW keyer including the PCB and the aluminium enclosure is around 25$ (or 15$ without the enclosure).