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

Sistemul are patru blocuri functionale care comunica prin pinii microcontrolerului:

Schema bloc:

┌────────────────────────────────────────────────────────────────┐
│                    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   │              │
│  │  Senzor sunet│                               │              │
│  └──────────────┘                               │              │
│                                                 │              │
│  ┌──────────────┐                               │              │
│  │  Cheie Morse │──── D2 (INT0) ────────────────┤              │
│  │  Vintage URSS│                               │              │
│  └──────────────┘                               │              │
│                                                 │              │
│  ┌──────────────┐                               │              │
│  │  BTN Mod     │──── D6 ───────────────────────┤              │
│  │  Trainer/Dec.│                               │              │
│  └──────────────┘                               │              │
│                                                 │              │
│                      ┌──────────────────────────┘              │
│                      │                                         │
│              D7 ─────►──── R1(220Ω) ──── LED Verde             │
│              D8 ─────►──── R2(220Ω) ──── LED Rosu              │
│              D9 ─────►──── Buzzer Piezo Pasiv                  │
│                                                                │
└────────────────────────────────────────────────────────────────┘

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.
  • Senzorul KY-037 citeste nivelul de zgomot ambiental pe A0. Daca depaseste un prag setat, LED-ul rosu se aprinde ca avertizare.
  • Cheia telegrafică este conectata la D2 (INT0) si genereaza impulsuri de durata variabila. Clasificarea dot/dash se face pe baza timpului cat e apasata.
  • Butonul SW2 pe D6 comuta intre modul Trainer si modul Decoder la fiecare apasare.
  • Buzzerul piezo pasiv pe D9 scoate un ton de 700 Hz cat timp cheia e apasata, folosind functia tone().
  • LED-ul verde confirma un raspuns corect in modul Trainer, cel rosu semnalizeaza o greseala sau zgomot detectat.

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ă dintr-un sertar 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

pm/prj2026/cezar.zlatea/rodion.balaniuc.1778491634.txt.gz · Last modified: 2026/05/11 12:27 by rodion.balaniuc
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0