This shows you the differences between two versions of the page.
|
pm:prj2026:cezar.zlatea:rodion.balaniuc [2026/05/07 22:55] rodion.balaniuc |
pm:prj2026:cezar.zlatea:rodion.balaniuc [2026/05/14 16:55] (current) rodion.balaniuc [Concluzii] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Nume proiect ====== | + | ====== Signal Corps - Old School Morse Code Trainer ====== |
| ===== Introducere ===== | ===== Introducere ===== | ||
| <note tip> | <note tip> | ||
| - | Prezentarea pe scurt a proiectului vostru: | + | 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 | + | |
| - | * care este scopul lui | + | |
| - | * care a fost ideea de la care aţi pornit | + | |
| - | * de ce credeţi că este util pentru alţii şi pentru voi | + | |
| </note> | </note> | ||
| - | ===== Descriere generală ===== | ||
| - | <note tip> | + | Ce face proiectul: |
| - | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | * 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 | ||
| - | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | 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> | </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 ===== | ===== 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> | <note tip> | ||
| - | Aici puneţi tot ce ţine de hardware design: | + | Toti pinii se refera la placa ATmega328P-XMINI. Alimentarea la 5V vine direct prin USB, nu e nevoie de sursa externa. |
| - | * listă de piese | + | |
| - | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | |
| - | * diagrame de semnal | + | |
| - | * rezultatele simulării | + | |
| </note> | </note> | ||
| - | ===== Software Design ===== | + | ^ 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> | <note tip> | ||
| - | Descrierea codului aplicaţiei (firmware): | + | TODO -- va fi completat intr-o actualizare viitoare. |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
| - | * (etapa 3) surse şi funcţii implementate | + | |
| </note> | </note> | ||
| - | ===== Rezultate Obţinute ===== | + | ===== Rezultate Obtinute ===== |
| <note tip> | <note tip> | ||
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | * 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> | </note> | ||
| ===== Concluzii ===== | ===== 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 ===== | ===== Download ===== | ||
| <note warning> | <note warning> | ||
| - | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | Arhiva proiectului contine: |
| + | * Codul sursa complet (''.ino'') | ||
| + | * Schema electrica (PDF) | ||
| + | * Fisier ''README.md'' cu instructiuni de instalare si utilizare | ||
| + | * ''ChangeLog'' cu istoricul versiunilor | ||
| - | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | Fisierele se incarca pe wiki folosind facilitatea **Add Images or other files**. |
| </note> | </note> | ||
| Line 57: | Line 143: | ||
| <note tip> | <note tip> | ||
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * **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> | ||
| - | ===== Bibliografie/Resurse ===== | + | ===== Bibliografie / Resurse ===== |
| - | <note> | + | ==== Resurse Hardware ==== |
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
| - | </note> | + | |
| - | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | * [[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> | ||