Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:cezar.zlatea:rodion.balaniuc [2026/05/07 16:13]
rodion.balaniuc created
pm:prj2026:cezar.zlatea:rodion.balaniuc [2026/05/14 16:55] (current)
rodion.balaniuc [Concluzii]
Line 1: Line 1:
-TODO+====== Signal Corps - Old School Morse Code Trainer ====== 
 + 
 +===== Introducere ===== 
 + 
 +<note tip> 
 +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>​ 
 + 
 +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. 
 + 
 +<note tip> 
 +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>​ 
 + 
 +===== Descriere Generala ===== 
 + 
 +**Schema bloc:** 
 + 
 +{{:​pm:​prj2026:​cezar.zlatea:​signalcorpsdiagramdrawio.png?​700|Schema bloc Signal Corps Trainer}} 
 + 
 +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 verde** confirma un raspuns corect in modul Trainer, **LED 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 16x2                | x1    | 
 +| U3        | OLED 0.96" SSD1306 ​           | Afisaj grafic 128x64 ​           | 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 ==== 
 + 
 +<note tip> 
 +Toti pinii se refera la placa ATmega328P-XMINI. Alimentarea la 5V vine direct prin USB, nu e nevoie de sursa externa. 
 +</​note>​ 
 + 
 +^ 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 ==== 
 + 
 +<note important>​ 
 +Magistrala I2C este partajata intre LCD si OLED. Coexistenta functioneaza fara probleme deoarece cele doua dispozitive au adrese diferite: LCD = 0x27, OLED = 0x3C. 
 +</​note>​ 
 + 
 +  * 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 ===== 
 + 
 +<note tip> 
 +TODO -- va fi completat intr-o actualizare viitoare. 
 +</​note>​ 
 + 
 +===== Rezultate Obtinute ===== 
 + 
 +<note tip> 
 +  * 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 
 +</​note>​ 
 + 
 +===== Concluzii ===== 
 + 
 +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. 
 + 
 +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> 
 +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 
 +</​note>​ 
 + 
 +===== Download ===== 
 + 
 +<note warning>​ 
 +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**. 
 +</​note>​ 
 + 
 +===== Jurnal ===== 
 + 
 +<note tip> 
 +  * **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>​ 
 + 
 +===== Bibliografie / Resurse ===== 
 + 
 +==== Resurse Hardware ==== 
 + 
 +  * [[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://​arduinomodules.info/​ky-037-high-sensitivity-sound-detection-module/​|KY-037 Sound Sensor Module - Arduino Modules Info]] 
 + 
 +==== Resurse Software ==== 
 + 
 +  * [[https://​github.com/​adafruit/​Adafruit_SSD1306|Adafruit SSD1306 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.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>​
pm/prj2026/cezar.zlatea/rodion.balaniuc.1778159620.txt.gz · Last modified: 2026/05/07 16:13 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