This is an old revision of the document!
Signal Corps — Old School Morse Code Trainer
Introducere
Signal Corps Trainer este un dispozitiv embedded de antrenament si decodare a codului Morse, construit pe placa ATmega328P-XMINI si o cheie telegrafică vintage sovietică ca interfata de intrare.
Ce face proiectul:
Utilizatorul trimite cod Morse apasand cheia telegrafică, iar sistemul decodează caracterele in timp real si le afisează pe LCD
In modul Trainer, sistemul propune o litera aleatorie si verifica daca a fost transmisa corect
In modul Decoder, orice semnal primit este interpretat si afişat fara restrictii
Pe ecranul OLED se vizualizeaza forma de unda a semnalului
Buzzerul si LED-urile ofera feedback audio-vizual imediat
Scopul proiectului este sa transforme o cheie telegrafică intr-un instrument functional de invatare. Codul Morse nu tine doar de istorie: este folosit in radioamatorism, aviatie civila si comunicatii de urgenta.
Ideea a pornit de la curiozitatea legata de cum comunicau operatorii radio inainte de era digitala. O cheie dintr-un sertar vechi a devenit punctul de plecare.
Fata de aplicatiile software de invatare Morse, acest dispozitiv ofera senzatia mecanica reala a cheii si sunetul pe care il auzeau operatorii acum cateva decenii. Combinatia dintre feedback fizic si audio face memorarea mai rapida decat invatatul vizual.
Descriere Generala
Schema bloc:
Descrierea modulelor:
ATmega328P-XMINI ruleaza intreaga logica: masoara durata impulsurilor de la cheie, decodifica caracterele Morse, actualizeaza afisajele si controleaza buzzerul si LED-urile. Programarea se face direct prin USB via mEDBG, fara programator extern.
LCD 1602 (I2C, 0x27) afiseaza caracterele decodate si starea curenta a sistemului (modul activ, scor, erori).
OLED 0.96” SSD1306 (I2C, 0x3C) arata forma de unda a semnalului in timp real, cu scroll orizontal, si animatii la fiecare raspuns.
Hardware Design
Lista de Piese
| Referinta | Componenta | Rol | Cant. |
| U1 | ATmega328P-XMINI | Microcontroler principal | x1 |
| U2 | LCD 1602 cu interfata I2C | Afisaj text 16×2 | x1 |
| U3 | OLED 0.96” SSD1306 | Afisaj grafic 128×64 | x1 |
| SEN1 | Senzor sunet KY-037 | Intrare acustica analogica | x1 |
| SW1 | Cheie telegrafică vintage | Intrare haptica Morse | x1 |
| SW2 | Push-button | Selector mod Trainer/Decoder | x1 |
| BZ1 | Buzzer Piezo Pasiv | Iesire audio ton Morse | x1 |
| LED1 | LED Verde 5mm | Indicator raspuns corect | x1 |
| LED2 | LED Rosu 5mm | Indicator eroare / zgomot | x1 |
| R1, R2 | Rezistor 220Ω | Limitare curent LED-uri | x2 |
| R3 | Rezistor 10kΩ | Pull-up extern (optional) | x1 |
| C1 | Condensator 100nF | Decuplare alimentare | x1 |
| – | Breadboard + fire jumper | Conectica prototip | – |
Conexiuni Electrice - Pinout
Toti pinii se refera la placa ATmega328P-XMINI. Alimentarea la 5V vine direct prin USB, nu e nevoie de sursa externa.
| Pin MCU | Tip | Conectat la |
| PC4 (A4) | SDA | LCD 1602 + OLED SSD1306 (magistrala I2C partajata) |
| PC5 (A5) | SCL | LCD 1602 + OLED SSD1306 (magistrala I2C partajata) |
| PC0 (A0) | Analog | KY-037 iesire analogica (AO) |
| D2 | INT0 | Cheie telegrafică (intrerupere hardware) |
| D6 | Digital | Buton selector mod |
| D7 | Digital | LED Verde prin R1 (220Ω) |
| D8 | Digital | LED Rosu prin R2 (220Ω) |
| D9 | PWM | Buzzer Piezo Pasiv – functia tone() |
| 5V | Power | Alimentare toate componentele |
| GND | Power | Masa comuna |
Note Tehnice
Magistrala I2C este partajata intre LCD si OLED. Coexistenta functioneaza fara probleme deoarece cele doua dispozitive au adrese diferite: LCD = 0x27, OLED = 0x3C.
SW1 si SW2 folosesc pull-up intern (INPUT_PULLUP). Rezistenta de 10kΩ externa este optionala.
C1 (100nF) se plaseaza cat mai aproape de pinii VCC/GND ai MCU-ului pentru a filtra zgomotul de pe linia de alimentare.
Intreg sistemul e alimentat la 5V prin USB de pe placa X-MINI.
Schema Electrica
Circuitul este asamblat pe breadboard cu fire jumper. Schema include:
Magistrala I2C cu cele doua afisaje in paralel
R1 si R2 in serie cu LED-urile
C1 intre VCC si GND
Cheia telegrafică intre D2 si GND, cu pull-up intern activ
Software Design
TODO – va fi completat intr-o actualizare viitoare.
Rezultate Obtinute
Cheia telegrafică functioneaza corect ca intrerupator simplu, detectata prin INPUT_PULLUP pe D2
Buzzerul genereaza 700 Hz sincronizat cu apasarea cheii, fara latenta perceptibila
OLED-ul afiseaza starea si forma de unda in timp real
Magistrala I2C cu doua dispozitive la adrese 0x27 si 0x3C functioneaza stabil
LED-urile verde si rosu raspund corect pe D7 si D8
Concluzii
Proiectul a pornit de la o cheie telegrafică al bunelului si a ajuns un dispozitiv functional de invatare. Ce e interesant e ca obiectul fizic schimba complet experienta fata de o simpla aplicatie: senzatia mecanica si sunetul buzzerului fac invatatul mai intuitiv.
Pe parcurs au aparut cateva probleme neasteptate, in special cu configurarea driver-ului mEDBG in Arduino IDE si cu calibrarea timpilor pentru dot/dash la viteze diferite de tastare. Partajarea magistralei I2C intre doua dispozitive a necesitat atentie la adrese, dar a functionat fara modificari hardware.
Dificultati intampinate:
Configurarea board-ului ATmega328P-XMINI in Arduino IDE si instalarea driver-ului mEDBG
Partajarea magistralei I2C fara conflicte de adrese
Calibrarea pragurilor de timing dot/dash in functie de viteza de tastare
Download
Arhiva proiectului contine:
Codul sursa complet (.ino)
Schema electrica (PDF)
Fisier README.md cu instructiuni de instalare si utilizare
ChangeLog cu istoricul versiunilor
Fisierele se incarca pe wiki folosind facilitatea Add Images or other files.
Jurnal
TODO – va fi completat pe masura ce proiectul avanseaza.
Bibliografie / Resurse
Resurse Hardware
Resurse Software