This shows you the differences between two versions of the page.
|
pm:prj2026:cezar.zlatea:rodion.balaniuc [2026/05/11 01:26] rodion.balaniuc |
pm:prj2026:cezar.zlatea:rodion.balaniuc [2026/05/14 16:55] (current) rodion.balaniuc [Concluzii] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Signal Corps — Old School Morse Code Trainer ====== | + | ====== Signal Corps - Old School Morse Code Trainer ====== |
| ===== Introducere ===== | ===== Introducere ===== | ||
| <note tip> | <note tip> | ||
| - | **Signal Corps Trainer** este un dispozitiv embedded pentru antrenament și decodare a codului Morse, construit în jurul microcontrolerului **ATmega328P-XMINI** și al unei **chei telegrafice vintage sovietice**. | + | 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. |
| </note> | </note> | ||
| - | **Ce face:** | + | Ce face proiectul: |
| - | * Permite utilizatorului să trimită cod Morse fizic, prin apăsarea cheii telegrafice, decodând automat caracterele în timp real | + | * Utilizatorul trimite cod Morse apasand cheia telegrafică, iar sistemul decodează caracterele in timp real si le afisează pe LCD |
| - | * Oferă un mod **Trainer** în care sistemul generează litere aleatorii și verifică dacă utilizatorul le transmite corect | + | * In modul Trainer, sistemul propune o litera aleatorie si verifica daca a fost transmisa corect |
| - | * Oferă un mod **Decoder** în care orice semnal de intrare este interpretat și afișat pe ecranul LCD | + | * In modul Decoder, orice semnal primit este interpretat si afişat fara restrictii |
| - | * Vizualizează forma de undă a semnalului Morse pe ecranul OLED grafic | + | * Pe ecranul OLED se vizualizeaza forma de unda a semnalului |
| - | * Oferă feedback audio prin buzzer piezo și feedback vizual prin LED-uri colorate | + | * Buzzerul si LED-urile ofera feedback audio-vizual imediat |
| - | **Scopul proiectului:** | + | 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. |
| - | Proiectul urmărește să transforme un obiect vintage — cheia telegrafică sovietică — într-un instrument educațional funcțional. Codul Morse nu este doar istorie: este folosit activ în radioamatorism, aviație civilă și comunicații de urgență. | + | |
| - | + | ||
| - | **Ideea de pornire:** | + | |
| - | Fascinația pentru tehnologia analogică și dorința de a înțelege cum comunicau operatorii radio înainte de era digitală. O cheie telegrafică dintr-un sertar uitat a devenit punctul de plecare al unui sistem complet de învățare. | + | |
| <note tip> | <note tip> | ||
| - | **De ce este util:** Spre deosebire de aplicațiile software de învățare Morse, acest dispozitiv oferă senzația mecanică autentică a unei chei telegrafice reale și sunetul caracteristic pe care îl auzeau operatorii acum 70 de ani. Feedback-ul fizic și audio simultan accelerează procesul de memorare a codului. | + | 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. |
| </note> | </note> | ||
| - | ===== Descriere Generală ===== | + | ===== Descriere Generala ===== |
| - | + | ||
| - | Sistemul este organizat în patru blocuri funcționale care interacționează în timp real prin pinii microcontrolerului: | + | |
| - | **Schemă bloc:** | + | **Schema bloc:** |
| - | <code> | + | {{:pm:prj2026:cezar.zlatea:signalcorpsdiagramdrawio.png?700|Schema bloc Signal Corps Trainer}} |
| - | ┌────────────────────────────────────────────────────────────────┐ | + | |
| - | │ 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 Roșu │ | + | |
| - | │ D9 ─────►──── Buzzer Piezo Pasiv │ | + | |
| - | │ │ | + | |
| - | └────────────────────────────────────────────────────────────────┘ | + | |
| - | </code> | + | |
| - | **Descrierea modulelor:** | + | Descrierea modulelor: |
| - | * **ATmega328P-XMINI** — Unitatea centrală de procesare. Rulează logica de decodare Morse, măsoară durata impulsurilor (dot/dash), gestionează afișajele I2C și controlează toate elementele de feedback. Debuggerul on-board mEDBG permite programarea directă prin USB fără programator extern. | + | * **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)** — Afișează textul decodat caracter cu caracter și mesajele de stare ale sistemului (modul activ, scor în Trainer, erori). | + | * **LCD 1602 (I2C, 0x27)** afiseaza caracterele decodate si starea curenta a sistemului (modul activ, scor, erori). |
| - | * **OLED 0.96" SSD1306 (I2C, 0x3C)** — Vizualizează forma de undă a semnalului Morse în timp real (scroll orizontal) și afișează animații de feedback la răspunsuri corecte/greșite. | + | * **OLED 0.96" SSD1306 (I2C, 0x3C)** arata forma de unda a semnalului in timp real, cu scroll orizontal, si animatii la fiecare raspuns. |
| - | * **Senzor sunet KY-037** — Monitorizează nivelul de zgomot ambiental prin ieșirea analogică (AO → A0). Dacă pragul este depășit, LED-ul roșu se aprinde ca avertizare. | + | * **Senzorul KY-037** citeste nivelul de zgomot ambiental pe A0. Daca depaseste un prag setat, LED-ul rosu se aprinde ca avertizare. |
| - | * **Cheie telegrafică vintage** — Interfața principală de intrare. Conectată la D2 (INT0) pentru detecție prin întrerupere hardware. Generează impulsuri de durată variabilă (dot < 150 ms, dash > 150 ms). | + | * **Cheia telegrafică** este conectata la D2 (INT0) si genereaza impulsuri de durata variabila. Clasificarea dot/dash se face pe baza timpului cat e apasata. |
| - | * **Buton selector mod (SW2)** — Conectat la D6, comută între modul Trainer și modul Decoder la fiecare apăsare. | + | * **Butonul SW2 pe D6** comuta intre modul Trainer si modul Decoder la fiecare apasare. |
| - | * **Buzzer piezo pasiv** — Generează un ton de 700 Hz pe D9 (PWM, funcția ``tone()``) sincronizat cu semnalul cheii. | + | * **Buzzerul piezo pasiv pe D9** scoate un ton de 700 Hz cat timp cheia e apasata, folosind functia tone(). |
| - | * **LED Verde / LED Roșu** — Feedback vizual instant: verde = răspuns corect în modul Trainer, roșu = eroare sau zgomot ambiental detectat. | + | * **LED verde** confirma un raspuns corect in modul Trainer, **LED rosu** semnalizeaza o greseala sau zgomot detectat. |
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | ==== Listă de Piese ==== | + | ==== Lista de Piese ==== |
| - | ^ Referință ^ Componentă ^ Rol ^ Cant. ^ | + | ^ Referinta ^ Componenta ^ Rol ^ Cant. ^ |
| | U1 | ATmega328P-XMINI | Microcontroler principal | x1 | | | U1 | ATmega328P-XMINI | Microcontroler principal | x1 | | ||
| - | | U2 | LCD 1602 cu interfață I2C | Afișaj text 16x2 | x1 | | + | | U2 | LCD 1602 cu interfata I2C | Afisaj text 16x2 | x1 | |
| - | | U3 | OLED 0.96" SSD1306 | Afișaj grafic 128x64 | x1 | | + | | U3 | OLED 0.96" SSD1306 | Afisaj grafic 128x64 | x1 | |
| - | | SEN1 | Senzor sunet KY-037 | Intrare acustică analogică | x1 | | + | | SEN1 | Senzor sunet KY-037 | Intrare acustica analogica | x1 | |
| - | | SW1 | Cheie telegrafică vintage | Intrare haptică Morse | x1 | | + | | SW1 | Cheie telegrafică vintage | Intrare haptica Morse | x1 | |
| | SW2 | Push-button | Selector mod Trainer/Decoder | x1 | | | SW2 | Push-button | Selector mod Trainer/Decoder | x1 | | ||
| - | | BZ1 | Buzzer Piezo Pasiv | Ieșire audio ton Morse | x1 | | + | | BZ1 | Buzzer Piezo Pasiv | Iesire audio ton Morse | x1 | |
| - | | LED1 | LED Verde 5mm | Indicator răspuns corect | x1 | | + | | LED1 | LED Verde 5mm | Indicator raspuns corect | x1 | |
| - | | LED2 | LED Roșu 5mm | Indicator eroare / zgomot | x1 | | + | | LED2 | LED Rosu 5mm | Indicator eroare / zgomot | x1 | |
| | R1, R2 | Rezistor 220Ω | Limitare curent LED-uri | x2 | | | R1, R2 | Rezistor 220Ω | Limitare curent LED-uri | x2 | | ||
| - | | R3 | Rezistor 10kΩ | Pull-up extern (opțional) | x1 | | + | | R3 | Rezistor 10kΩ | Pull-up extern (optional) | x1 | |
| | C1 | Condensator 100nF | Decuplare alimentare | x1 | | | C1 | Condensator 100nF | Decuplare alimentare | x1 | | ||
| - | | — | Breadboard + fire jumper | Conectică prototip | — | | + | | -- | Breadboard + fire jumper | Conectica prototip | -- | |
| - | ==== Conexiuni Electrice — Pinout ==== | + | ==== Conexiuni Electrice - Pinout ==== |
| <note tip> | <note tip> | ||
| - | Toți pinii de mai jos se referă la placa **ATmega328P-XMINI**. Alimentarea întregului sistem provine de la cei **5V furnizați prin USB** de pe placă — nu este necesar un alimentator extern. | + | Toti pinii se refera la placa ATmega328P-XMINI. Alimentarea la 5V vine direct prin USB, nu e nevoie de sursa externa. |
| </note> | </note> | ||
| ^ Pin MCU ^ Tip ^ Conectat la ^ | ^ Pin MCU ^ Tip ^ Conectat la ^ | ||
| - | | PC4 (A4) | SDA | LCD 1602 + OLED SSD1306 (magistrală I2C partajată) | | + | | PC4 (A4) | SDA | LCD 1602 + OLED SSD1306 (magistrala I2C partajata) | |
| - | | PC5 (A5) | SCL | LCD 1602 + OLED SSD1306 (magistrală I2C partajată) | | + | | PC5 (A5) | SCL | LCD 1602 + OLED SSD1306 (magistrala I2C partajata) | |
| - | | PC0 (A0) | Analog | KY-037 ieșire analogică (AO) | | + | | PC0 (A0) | Analog | KY-037 iesire analogica (AO) | |
| - | | D2 | INT0 | Cheie telegrafică (întrerupere hardware) | | + | | D2 | INT0 | Cheie telegrafică (intrerupere hardware) | |
| | D6 | Digital | Buton selector mod | | | D6 | Digital | Buton selector mod | | ||
| | D7 | Digital | LED Verde prin R1 (220Ω) | | | D7 | Digital | LED Verde prin R1 (220Ω) | | ||
| - | | D8 | Digital | LED Roșu prin R2 (220Ω) | | + | | D8 | Digital | LED Rosu prin R2 (220Ω) | |
| - | | D9 | PWM | Buzzer Piezo Pasiv — funcția tone() | | + | | D9 | PWM | Buzzer Piezo Pasiv -- functia tone() | |
| | 5V | Power | Alimentare toate componentele | | | 5V | Power | Alimentare toate componentele | | ||
| - | | GND | Power | Masă comună | | + | | GND | Power | Masa comuna | |
| ==== Note Tehnice ==== | ==== Note Tehnice ==== | ||
| <note important> | <note important> | ||
| - | Magistrala I2C este **partajată** între LCD și OLED. Cele două dispozitive coexistă pe același bus SDA/SCL datorită adreselor diferite: LCD = **0x27**, OLED = **0x3C**. | + | Magistrala I2C este partajata intre LCD si OLED. Coexistenta functioneaza fara probleme deoarece cele doua dispozitive au adrese diferite: LCD = 0x27, OLED = 0x3C. |
| </note> | </note> | ||
| - | * **Pull-up:** SW1 și SW2 folosesc rezistențele pull-up interne ale MCU (''INPUT_PULLUP''). Rezistența de 10kΩ externă este opțională. | + | * SW1 si SW2 folosesc pull-up intern (''INPUT_PULLUP''). Rezistenta de 10kΩ externa este optionala. |
| - | * **Decuplare:** Condensatorul C1 (100nF) trebuie plasat cât mai aproape de pinii VCC/GND ai MCU-ului pentru filtrarea eficientă a zgomotului de alimentare. | + | * C1 (100nF) se plaseaza cat mai aproape de pinii VCC/GND ai MCU-ului pentru a filtra zgomotul de pe linia de alimentare. |
| - | * **Alimentare:** Întregul sistem este alimentat la 5V prin USB de la placa X-MINI. | + | * Intreg sistemul e alimentat la 5V prin USB de pe placa X-MINI. |
| - | ==== Schemă Electrică ==== | + | ==== Schema Electrica ==== |
| - | Circuitul a fost asamblat pe breadboard cu fire jumper Tată-Tată și Tată-Mamă. Schema detaliată include: | + | Circuitul este asamblat pe breadboard cu fire jumper. Schema include: |
| - | * Magistrala I2C cu ambele afișaje conectate în paralel | + | * Magistrala I2C cu cele doua afisaje in paralel |
| - | * Rezistențele de protecție R1 și R2 în serie cu LED-urile | + | * R1 si R2 in serie cu LED-urile |
| - | * Condensatorul de decuplare C1 între VCC și GND | + | * C1 intre VCC si GND |
| - | * Cheia telegrafică conectată direct între D2 și GND (pull-up intern activ) | + | * Cheia telegrafică intre D2 si GND, cu pull-up intern activ |
| ===== Software Design ===== | ===== Software Design ===== | ||
| <note tip> | <note tip> | ||
| - | TODO — va fi completat într-o actualizare viitoare. | + | TODO -- va fi completat intr-o actualizare viitoare. |
| </note> | </note> | ||
| - | ===== Rezultate Obținute ===== | + | ===== Rezultate Obtinute ===== |
| <note tip> | <note tip> | ||
| - | * Cheia telegrafică sovietică funcționează corect ca întrerupător simplu — detectată prin ''INPUT_PULLUP'' pe D2 | + | * Cheia telegrafică functioneaza corect ca intrerupator simplu, detectata prin ''INPUT_PULLUP'' pe D2 |
| - | * Buzzerul piezo generează un ton de 700 Hz sincronizat cu apăsarea cheii, fără latență perceptibilă | + | * Buzzerul genereaza 700 Hz sincronizat cu apasarea cheii, fara latenta perceptibila |
| - | * Ecranul OLED afișează starea curentă și forma de undă a semnalului în timp real | + | * OLED-ul afiseaza starea si forma de unda in timp real |
| - | * Magistrala I2C partajată între LCD și OLED funcționează stabil cu adresele 0x27 și 0x3C | + | * Magistrala I2C cu doua dispozitive la adrese 0x27 si 0x3C functioneaza stabil |
| - | * Sistemul de feedback LED verde/roșu răspunde corect la comenzile de pe pinii D7/D8 | + | * LED-urile verde si rosu raspund corect pe D7 si D8 |
| </note> | </note> | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| - | Proiectul demonstrează că tehnologia vintage poate fi reinterpretată într-un context educațional modern. Cheia telegrafică sovietică, departe de a fi un simplu obiect de colecție, devine o interfață tactilă autentică și o punte între comunicația analogică a secolului XX și microelectronica contemporană. | + | Proiectul a pornit de la o cheie telegrafică veche 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. |
| - | Valoarea principală a acestui proiect constă în experiența de învățare: utilizatorul nu învață Morse dintr-o aplicație abstractă, ci printr-un obiect fizic cu istorie, cu senzație mecanică distinctă și cu sunetul caracteristic pe care îl auzeau operatorii radio acum 70 de ani. | + | 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. |
| <note tip> | <note tip> | ||
| - | **Dificultăți întâmpinate:** | + | Dificultati intampinate: |
| - | * Configurarea corectă a board-ului ATmega328P-XMINI în Arduino IDE (driver mEDBG) | + | * Configurarea board-ului ATmega328P-XMINI in Arduino IDE si instalarea driver-ului mEDBG |
| - | * Partajarea magistralei I2C fără conflicte de adrese | + | * Partajarea magistralei I2C fara conflicte de adrese |
| - | * Calibrarea pragurilor de timing pentru dot/dash în funcție de viteza utilizatorului | + | * Calibrarea pragurilor de timing dot/dash in functie de viteza de tastare |
| </note> | </note> | ||
| Line 174: | Line 131: | ||
| <note warning> | <note warning> | ||
| - | Arhiva proiectului conține: | + | Arhiva proiectului contine: |
| - | * Codul sursă complet (''.ino'') | + | * Codul sursa complet (''.ino'') |
| - | * Schema electrică (PDF) | + | * Schema electrica (PDF) |
| - | * Fișier ''README.md'' cu instrucțiuni de instalare și utilizare | + | * Fisier ''README.md'' cu instructiuni de instalare si utilizare |
| * ''ChangeLog'' cu istoricul versiunilor | * ''ChangeLog'' cu istoricul versiunilor | ||
| - | Fișierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. | + | Fisierele se incarca pe wiki folosind facilitatea **Add Images or other files**. |
| </note> | </note> | ||
| Line 186: | Line 143: | ||
| <note tip> | <note tip> | ||
| - | TODO — va fi completat pe măsură ce proiectul avansează. | + | * **25.04.2026** - Comanda componentelor |
| + | * **26-30.04.2026** - Saptamana de asteptare a livrarii, citire datasheet-uri | ||
| + | * **02.05.2026** - Primire componente, verificare individuala | ||
| + | * **03.05.2026** - Test cheie telegrafică cu multimetru si lipirea a 2 cabluri cu ciocan de lipit | ||
| + | * **04.05.2026** - Setup Arduino IDE, driver mEDBG, primul upload functional | ||
| + | * **05.05.2026** - Asamblare breadboard, test cheie + buzzer + OLED | ||
| + | * **06.05.2026** - Integrare LCD pe I2C, verificare coexistenta cu OLED | ||
| + | * **07.05.2026** - Documentatie pe wiki, schema bloc draw.io | ||
| </note> | </note> | ||
| Line 193: | Line 157: | ||
| ==== Resurse Hardware ==== | ==== Resurse Hardware ==== | ||
| - | * [[https://www.microchip.com/en-us/development-tool/atmega328p-xmini|ATmega328P-XMINI User Guide — Microchip Technology]] | + | * [[https://www.microchip.com/en-us/development-tool/atmega328p-xmini|ATmega328P-XMINI User Guide - Microchip Technology]] |
| - | * [[https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf|SSD1306 OLED Driver Datasheet — Solomon Systech]] | + | * [[https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf|SSD1306 OLED Driver Datasheet - Solomon Systech]] |
| - | * [[https://arduinomodules.info/ky-037-microphone-sound-sensor-module/|KY-037 Sound Sensor Module — Arduino Modules Info]] | + | * [[https://arduinomodules.info/ky-037-high-sensitivity-sound-detection-module/|KY-037 Sound Sensor Module - Arduino Modules Info]] |
| ==== Resurse Software ==== | ==== Resurse Software ==== | ||
| - | * [[https://github.com/adafruit/Adafruit_SSD1306|Adafruit SSD1306 Library — GitHub]] | + | * [[https://github.com/adafruit/Adafruit_SSD1306|Adafruit SSD1306 Library - GitHub]] |
| - | * [[https://github.com/adafruit/Adafruit-GFX-Library|Adafruit GFX Library — GitHub]] | + | * [[https://github.com/adafruit/Adafruit-GFX-Library|Adafruit GFX Library - GitHub]] |
| - | * [[https://www.arduino.cc/reference/en/|Arduino Language Reference — arduino.cc]] | + | * [[https://www.arduino.cc/reference/en/|Arduino Language Reference - arduino.cc]] |
| - | * [[https://www.itu.int/rec/R-REC-M.1677/en|Morse Code Timing Standard — ITU-R M.1677-1]] | + | * [[https://www.itu.int/rec/R-REC-M.1677/en|Morse Code Timing Standard - ITU-R M.1677-1]] |
| <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||