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 23:16]
rodion.balaniuc [Software Resources]
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 ======
  
-===== Introduction ​=====+===== Introducere ​=====
  
-**Signal Corps Trainer** is an embedded ​device for training and decoding ​Morse codebuilt around the **ATmega328P-XMINI** microcontroller and a **vintage ​Soviet telegraph key**.+<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>​
  
-**What it does:** +Ce face proiectul
-  * Allows the user to physically send Morse code by pressing the telegraph keyautomatically decoding characters ​in real time +  * Utilizatorul trimite cod Morse apasand cheia telegraficăiar sistemul decodează caracterele ​in timp real si le afisează pe LCD 
-  * Provides ​**Trainer** mode in which the system generates random letters and checks whether the user transmits them correctly +  * In modul Trainer, sistemul propune o litera aleatorie si verifica daca fost transmisa corect 
-  * Provides a **Decoder** mode in which any incoming signal is interpreted and displayed on the LCD screen +  * In modul Decoder, orice semnal primit este interpretat si afişat fara restrictii 
-  * Visualizes the Morse signal waveform on the OLED graphical display +  * Pe ecranul ​OLED se vizualizeaza forma de unda a semnalului 
-  * Provides ​audio feedback through a piezo buzzer and visual feedback through colored LEDs+  * Buzzerul si LED-urile ofera feedback ​audio-vizual imediat
  
-**Project goal:** +Scopul proiectului este sa transforme o cheie telegrafică intr-un instrument ​functional ​de invatareCodul Morse nu tine doar de istorieeste folosit ​in radioamatorismaviatie civila si comunicatii de urgenta.
-The project aims to transform a vintage object — the Soviet telegraph key — into a fully functional ​educational tool. Morse code is not merely historyit is still actively used in amateur radio, civil aviationand emergency communications.+
  
-**Starting idea:** +<note tip> 
-A fascination with analogue technology and the desire to understand how radio operators communicated before the digital era. A telegraph key forgotten in drawer became the starting point for a complete learning system.+Fata de aplicatiile software de invatare Morse, acest dispozitiv ofera senzatia mecanica reala cheii si sunetul pe care il auzeau operatorii acum cateva deceniiCombinatia dintre feedback fizic si audio face memorarea mai rapida decat invatatul vizual. 
 +</​note>​
  
-**Why it is useful:** +===== Descriere Generala =====
-Unlike software-based Morse learning applications,​ this device provides the authentic mechanical feel of a real telegraph key and the characteristic sound heard by operators 70 years ago. The simultaneous physical and audio feedback accelerates the memorization of the code.+
  
-===== General Description =====+**Schema bloc:**
  
-The system is organized into four functional blocks that interact in real time through the microcontroller'​s pins:+{{:pm:​prj2026:​cezar.zlatea:​signalcorpsdiagramdrawio.png?​700|Schema bloc Signal Corps Trainer}}
  
-**Block diagram:**+Descrierea modulelor:
  
-<​code>​ +  ​* **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.
-┌────────────────────────────────────────────────────────────────┐ +
-│                    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   ​│ ​             │ +
-│  │  Sound sensor│ ​                              ​│ ​             │ +
-│  └──────────────┘ ​                              ​│ ​             │ +
-│                                                 ​│ ​             │ +
-│  ┌──────────────┐ ​                              ​│ ​             │ +
-│  │  Morse key   ​│──── D2 (INT0) ────────────────┤ ​             │ +
-│  │  Vintage USSR│ ​                              ​│ ​             │ +
-│  └──────────────┘ ​                              ​│ ​             │ +
-│                                                 ​│ ​             │ +
-│  ┌──────────────┐ ​                              ​│ ​             │ +
-│  │  Mode BTN    │──── D6 ───────────────────────┤ ​             │ +
-│  │  Trainer/​Dec.│ ​                              ​│ ​             │ +
-│  └──────────────┘ ​                              ​│ ​             │ +
-│                                                 ​│ ​             │ +
-│                      ┌──────────────────────────┘ ​             │ +
-│                      │                                         │ +
-│              D7 ─────►──── R1(220Ω) ──── Green LED             │ +
-│              D8 ─────►──── R2(220Ω) ──── Red LED               │ +
-│              D9 ─────►──── Passive Piezo Buzzer ​               │ +
-│                                                                │ +
-└────────────────────────────────────────────────────────────────┘ +
-</​code>​+
  
-**Module descriptions:​**+  ​* **LCD 1602 (I2C, 0x27)** afiseaza caracterele decodate si starea curenta a sistemului (modul activ, scor, erori).
  
-  * **ATmega328P-XMINI** — Central processing unitRuns the Morse decoding logicmeasures pulse durations (dot/dash), manages the I2C displaysand controls all feedback elements. The on-board mEDBG debugger enables direct programming via USB without an external programmer.+  * **OLED 0.96" SSD1306 (I2C0x3C)** arata forma de unda a semnalului in timp realcu scroll orizontalsi animatii la fiecare raspuns.
  
-  * **LCD 1602 (I2C, 0x27)** — Displays the decoded text character by character and system status messages (active mode, Trainer scoreerrors).+  * **Senzorul KY-037** citeste nivelul de zgomot ambiental pe A0. Daca depaseste un prag setatLED-ul rosu se aprinde ca avertizare.
  
-  * **OLED 0.96" SSD1306 (I2C, 0x3C)** — Visualizes the Morse signal waveform in real time (horizontal scrolland shows feedback animations for correct/incorrect answers.+  * **Cheia telegrafică** este conectata la D2 (INT0si genereaza impulsuri de durata variabila. Clasificarea dot/dash se face pe baza timpului cat e apasata.
  
-  * **KY-037 Sound Sensor** — Monitors the ambient noise level via the analogue output (AO → A0). If the threshold is exceeded, the red LED lights up as a warning.+  * **Butonul SW2 pe D6** comuta intre modul Trainer si modul Decoder la fiecare apasare.
  
-  * **Vintage telegraph key** — Primary input interface. Connected to D2 (INT0) for hardware interrupt detection. Generates pulses of variable duration (dot < 150 ms, dash > 150 ms).+  * **Buzzerul piezo pasiv pe D9** scoate un ton de 700 Hz cat timp cheia e apasata, folosind functia tone().
  
-  * **Mode selector button (SW2)** — Connected to D6, switches between ​Trainer ​and Decoder mode on each press. +  * **LED verde** confirma un raspuns corect in modul Trainer, **LED rosu** semnalizeaza o greseala sau zgomot detectat.
- +
-  * **Passive piezo buzzer** — Generates a 700 Hz tone on D9 (PWM``tone()`` function) synchronized with the key signal. +
- +
-  ​* **Green LED / Red LED** — Instant visual feedback: green = correct answer in Trainer mode, red = error or ambient noise detected.+
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-==== Bill of Materials ​====+==== Lista de Piese ====
  
-Reference ​Component ​                  Role                           Qty +Referinta ​Componenta ​                   ​Rol                             Cant. 
-| U1        | ATmega328P-XMINI ​           Main microcontroller ​          | x1  +| U1        | ATmega328P-XMINI ​             Microcontroler principal ​       ​| x1    
-| U2        | LCD 1602 with I2C interface  ​16x2 text display ​             ​| x1  +| U2        | LCD 1602 cu interfata ​I2C     ​Afisaj ​text 16x2                ​| x1    
-| U3        | OLED 0.96" SSD1306 ​         | 128x64 ​graphical display ​      | x1  +| U3        | OLED 0.96" SSD1306 ​           Afisaj grafic ​128x64 ​           | x1    
-| SEN1      | KY-037 ​sound sensor ​        Analogue acoustic input        ​| x1  +| SEN1      | Senzor sunet KY-037 ​          ​Intrare acustica analogica ​     ​| x1    
-| SW1       ​| ​Vintage telegraph key       Haptic ​Morse input             | x1  +| SW1       ​| ​Cheie telegrafică vintage ​    Intrare haptica ​Morse           ​| x1    
-| SW2       | Push-button ​                ​| Trainer/​Decoder ​mode selector  ​| x1  +| SW2       | Push-button ​                  ​Selector mod Trainer/​Decoder ​   | x1    
-| BZ1       ​| ​Passive Piezo Buzzer ​       Morse audio output ​            | x1  +| BZ1       | Buzzer ​Piezo Pasiv            ​Iesire ​audio ton Morse          ​| x1    
-| LED1      | Green LED 5mm               ​Correct answer indicator ​      | x1  +| LED1      | LED Verde 5mm                 ​Indicator raspuns corect ​       ​| x1    
-| LED2      | Red LED 5mm                 ​Error noise indicator ​       ​| x1  +| LED2      | LED Rosu 5mm                  Indicator eroare ​zgomot ​      | x1    
-| R1, R2    | 220Ω resistor ​              | LED current limiting ​          | x2  +| R1, R2    | Rezistor ​220Ω                 ​Limitare curent ​LED-uri         | x2    
-| R3        | 10kΩ resistor ​              External pull-up (optional) ​   | x1  +| R3        | Rezistor ​10kΩ                 ​Pull-up extern ​(optional) ​      ​| x1    
-| C1        | 100nF capacitor ​            | Power supply decoupling ​       ​| x1  +| C1        | Condensator ​100nF             ​| ​Decuplare alimentare ​           ​| x1    
-—         | Breadboard + jumper ​wires   Prototype wiring ​              —   |+--        ​| Breadboard + fire jumper ​     Conectica prototip ​             ​--    ​|
  
-==== Electrical Connections — Pinout ====+==== Conexiuni Electrice - Pinout ====
  
-MCU Pin    ^ Type     Connected to                                       +<note tip> 
-| PC4 (A4)  | SDA      | LCD 1602 + OLED SSD1306 (shared ​I2C bus          ​+Toti pinii se refera la placa ATmega328P-XMINI. Alimentarea la 5V vine direct prin USB, nu e nevoie de sursa externa. 
-| PC5 (A5)  | SCL      | LCD 1602 + OLED SSD1306 (shared ​I2C bus          ​+</​note>​ 
-| PC0 (A0)  | Analog ​  | KY-037 ​analogue output ​(AO)                        + 
-| D2        | INT0     ​| ​Telegraph key (hardware ​interrupt)                 | +^ Pin MCU    ​^ ​Tip      ​Conectat la                                              ​
-| D6        | Digital ​ | Mode selector ​button ​                              +| PC4 (A4)  | SDA      | LCD 1602 + OLED SSD1306 (magistrala ​I2C partajata      ​
-| D7        | Digital ​ | Green LED via R1 (220Ω) ​                           +| PC5 (A5)  | SCL      | LCD 1602 + OLED SSD1306 (magistrala ​I2C partajata      ​
-| D8        | Digital ​ | Red LED via R2 (220Ω) ​                             +| PC0 (A0)  | Analog ​  | KY-037 ​iesire analogica ​(AO)                             ​
-| D9        | PWM      | Passive Piezo Buzzer ​— tone() ​function ​            +| D2        | INT0     ​| ​Cheie telegrafică ​(intrerupere ​hardware) ​                | 
-| 5V        | Power    | Power supply for all components ​                   ​+| D6        | Digital ​ | Buton selector ​mod                                       
-| GND       | Power    | Common ground ​                                     ​|+| 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 ​                                             ​|
  
-==== Technical Notes ====+==== Note Tehnice ​====
  
 <note important>​ <note important>​
-The I2C bus is **shared** between the LCD and the OLED. Both devices coexist on the same SDA/SCL bus thanks to their different addresses: 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 and SW2 use the MCU's internal ​pull-up ​resistors ​(''​INPUT_PULLUP''​). ​The external ​10kΩ resistor is optional+  * SW1 si SW2 folosesc ​pull-up ​intern ​(''​INPUT_PULLUP''​). ​Rezistenta de 10kΩ externa este optionala
-  * **Decoupling:​** Capacitor ​C1 (100nF) ​should be placed as close as possible to the MCU'​s ​VCC/​GND ​pins for effective power supply noise filtering+  * C1 (100nF) ​se plaseaza cat mai aproape de pinii VCC/​GND ​ai MCU-ului pentru a filtra zgomotul de pe linia de alimentare
-  * **Power supply:** The entire system is powered at 5V via USB from the X-MINI ​board.+  * Intreg sistemul e alimentat la 5V prin USB de pe placa X-MINI.
  
-==== Electrical Schematic ​====+==== Schema Electrica ​====
  
-The circuit was assembled on a breadboard ​using male-to-male and male-to-female ​jumper ​wiresThe detailed schematic includes+Circuitul este asamblat pe breadboard ​cu fire jumper. ​Schema include
-  * The I2C bus with both displays connected ​in parallel +  * Magistrala ​I2C cu cele doua afisaje ​in paralel 
-  * Protection resistors ​R1 and R2 in series with the LEDs +  * R1 si R2 in serie cu LED-urile 
-  * Decoupling capacitor ​C1 between ​VCC and GND +  * C1 intre VCC si GND 
-  * The telegraph key connected directly between ​D2 and GND (internal ​pull-up ​active)+  * Cheia telegrafică intre D2 si GND, cu pull-up ​intern activ
  
 ===== Software Design ===== ===== Software Design =====
  
 <note tip> <note tip>
-TODO — to be completed in a future update.+TODO -- va fi completat intr-o actualizare viitoare.
 </​note>​ </​note>​
  
-===== Results ​=====+===== Rezultate Obtinute ​=====
  
-  ​The Soviet telegraph key works correctly as a simple switch — detected via ''​INPUT_PULLUP'' ​on D2 +<note tip> 
-  * The piezo buzzer generates a 700 Hz tone synchronized with key presseswith no perceptible latency +  ​Cheia telegrafică functioneaza corect ca intrerupator simplu, detectata prin ''​INPUT_PULLUP'' ​pe D2 
-  * The OLED display shows the current state and signal waveform ​in real time +  * Buzzerul genereaza ​700 Hz sincronizat cu apasarea cheiifara latenta perceptibila 
-  * The shared ​I2C bus between the LCD and OLED operates stably with addresses ​0x27 and 0x3C +  * OLED-ul afiseaza starea si forma de unda in timp real 
-  * The green/​red ​LED feedback system responds correctly to commands on pins D7/D8+  * Magistrala ​I2C cu doua dispozitive la adrese ​0x27 si 0x3C functioneaza stabil 
 +  * LED-urile verde si rosu raspund corect pe D7 si D8 
 +</​note>​
  
-===== Conclusions ​=====+===== Concluzii ​=====
  
-The project demonstrates that vintage technology can be reinterpreted in modern educational contextThe Soviet telegraph key, far from being a mere collector'​s item, becomes an authentic tactile interface and a bridge between 20th-century analogue communication and contemporary microelectronics.+Proiectul ​pornit de la o cheie telegrafică veche si a ajuns un dispozitiv functional de invatareCe e interesant e ca obiectul fizic schimba complet experienta fata de o simpla aplicatie: senzatia mecanica si sunetul buzzerului fac invatatul mai intuitiv.
  
-The primary value of this project lies in the learning experience: the user does not learn Morse code through an abstract applicationbut through ​physical object with history, a distinctive mechanical feel, and the characteristic sound heard by radio operators 70 years ago.+Pe parcurs au aparut cateva probleme neasteptatein 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 ​necesitat atentie la adresedar functionat fara modificari hardware.
  
-Challenges encountered+<note tip> 
-  * Correctly configuring the ATmega328P-XMINI ​board in Arduino IDE (mEDBG ​driver) +Dificultati intampinate
-  * Sharing the I2C bus without address conflicts +  * Configurarea board-ului ​ATmega328P-XMINI in Arduino IDE si instalarea ​driver-ului mEDBG 
-  * Calibrating ​dot/​dash ​timing thresholds to match the user's keying speed+  * 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>
-The project archive contains+Arhiva proiectului contine
-  * Complete source code (''​.ino''​) +  * Codul sursa complet ​(''​.ino''​) 
-  * Electrical schematic ​(PDF) +  * Schema electrica ​(PDF) 
-  * ''​README.md'' ​file with installation and usage instructions +  * Fisier ​''​README.md'' ​cu instructiuni de instalare si utilizare 
-  * ''​ChangeLog'' ​with version history+  * ''​ChangeLog'' ​cu istoricul versiunilor
  
-Files are uploaded to the wiki using the **Add Images or other files** ​facility.+Fisierele se incarca pe wiki folosind facilitatea ​**Add Images or other files**.
 </​note>​ </​note>​
  
-===== Journal ​=====+===== Jurnal ​=====
  
 <note tip> <note tip>
-TODO — to be completed as the project progresses.+  * **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>​
  
-===== Bibliography ​Resources ​===== +===== Bibliografie ​Resurse ​=====
- +
-==== Hardware Resources ​====+
  
-  * [[https://​www.microchip.com/​en-us/​development-tool/​atmega328p-xmini|ATmega328P-XMINI User Guide — Microchip Technology]] +==== Resurse Hardware ====
-  * [[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]]+
  
-==== Software Resources ====+  * [[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]]
  
-  * [[https://​github.com/​adafruit/​Adafruit_SSD1306|Adafruit SSD1306 Library — GitHub]] +==== Resurse Software ====
-  * [[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]]+
  
 +  * [[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.1778184982.txt.gz · Last modified: 2026/05/07 23:16 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