This is an old revision of the document!
Signal Corps Trainer is an embedded device for training and decoding Morse code, built around the ATmega328P-XMINI microcontroller and a vintage Soviet telegraph key.
What it does:
Project goal: The project aims to transform a vintage object — the Soviet telegraph key — into a fully functional educational tool. Morse code is not merely history: it is still actively used in amateur radio, civil aviation, and emergency communications.
Starting idea: A fascination with analogue technology and the desire to understand how radio operators communicated before the digital era. A telegraph key forgotten in a drawer became the starting point for a complete learning system.
Why it is useful: Unlike software-based Morse learning applications, this device provides the authentic mechanical feel of a real telegraph key and the characteristic sound heard by operators 70 years ago. The simultaneous physical and audio feedback accelerates the memorization of the code.
The system is organized into four functional blocks that interact in real time through the microcontroller's pins:
Block diagram:
┌────────────────────────────────────────────────────────────────┐ │ Signal Corps Trainer │ │ │ │ ┌──────────────┐ I2C (SDA/SCL) ┌─────────────────────┐ │ │ │ LCD 1602 │◄───────────────────►│ │ │ │ │ (0x27) │ │ ATmega328P-XMINI │ │ │ └──────────────┘ │ │ │ │ │ MCU + mEDBG │ │ │ ┌──────────────┐ I2C (SDA/SCL) │ │ │ │ │ OLED 0.96" │◄───────────────────►│ PC4=SDA PC5=SCL │ │ │ │ SSD1306 │ │ PC0=A0 D2=INT0 │ │ │ │ (0x3C) │ │ D6 D7 D8 │ │ │ └──────────────┘ │ D9(PWM) │ │ │ └─────────┬───────────┘ │ │ ┌──────────────┐ │ │ │ │ KY-037 │──── AO ──────────────── PC0 │ │ │ │ Sound sensor│ │ │ │ └──────────────┘ │ │ │ │ │ │ ┌──────────────┐ │ │ │ │ Morse key │──── D2 (INT0) ────────────────┤ │ │ │ Vintage USSR│ │ │ │ └──────────────┘ │ │ │ │ │ │ ┌──────────────┐ │ │ │ │ Mode BTN │──── D6 ───────────────────────┤ │ │ │ Trainer/Dec.│ │ │ │ └──────────────┘ │ │ │ │ │ │ ┌──────────────────────────┘ │ │ │ │ │ D7 ─────►──── R1(220Ω) ──── Green LED │ │ D8 ─────►──── R2(220Ω) ──── Red LED │ │ D9 ─────►──── Passive Piezo Buzzer │ │ │ └────────────────────────────────────────────────────────────────┘
Module descriptions:
| Reference | Component | Role | Qty |
|---|---|---|---|
| U1 | ATmega328P-XMINI | Main microcontroller | x1 |
| U2 | LCD 1602 with I2C interface | 16×2 text display | x1 |
| U3 | OLED 0.96” SSD1306 | 128×64 graphical display | x1 |
| SEN1 | KY-037 sound sensor | Analogue acoustic input | x1 |
| SW1 | Vintage telegraph key | Haptic Morse input | x1 |
| SW2 | Push-button | Trainer/Decoder mode selector | x1 |
| BZ1 | Passive Piezo Buzzer | Morse audio output | x1 |
| LED1 | Green LED 5mm | Correct answer indicator | x1 |
| LED2 | Red LED 5mm | Error / noise indicator | x1 |
| R1, R2 | 220Ω resistor | LED current limiting | x2 |
| R3 | 10kΩ resistor | External pull-up (optional) | x1 |
| C1 | 100nF capacitor | Power supply decoupling | x1 |
| — | Breadboard + jumper wires | Prototype wiring | — |
| MCU Pin | Type | Connected to |
|---|---|---|
| PC4 (A4) | SDA | LCD 1602 + OLED SSD1306 (shared I2C bus) |
| PC5 (A5) | SCL | LCD 1602 + OLED SSD1306 (shared I2C bus) |
| PC0 (A0) | Analog | KY-037 analogue output (AO) |
| D2 | INT0 | Telegraph key (hardware interrupt) |
| D6 | Digital | Mode selector button |
| D7 | Digital | Green LED via R1 (220Ω) |
| D8 | Digital | Red LED via R2 (220Ω) |
| D9 | PWM | Passive Piezo Buzzer — tone() function |
| 5V | Power | Power supply for all components |
| GND | Power | Common ground |
INPUT_PULLUP). The external 10kΩ resistor is optional.The circuit was assembled on a breadboard using male-to-male and male-to-female jumper wires. The detailed schematic includes:
INPUT_PULLUP on D2The project demonstrates that vintage technology can be reinterpreted in a modern educational context. The Soviet telegraph key, far from being a mere collector's item, becomes an authentic tactile interface and a bridge between 20th-century analogue communication and contemporary microelectronics.
The primary value of this project lies in the learning experience: the user does not learn Morse code through an abstract application, but through a physical object with history, a distinctive mechanical feel, and the characteristic sound heard by radio operators 70 years ago.
Challenges encountered:
.ino)README.md file with installation and usage instructionsChangeLog with version historyFiles are uploaded to the wiki using the Add Images or other files facility.