Table of Contents

Sistem pentru invatare cod Morse

Introducere

Acest proiect este destinat pentru a învăța codul Morse. Pentru îndeplinirea acestui scop, exista trei moduri diferite:

Scopul proiectului este invatarea codului Morse, care este inca folosit in comunicatia radio, cat si pentru a transmite semnale de urgenta. Este, de asemenea, o activitate distractiva.

Mereu mi s-a parut interesant codul Morse si am mai invatat cateva simboluri de-a lungul timpului, iar prin acest proiect ofer un mod de a te familiariza cu el, abordand cat mai multe dintre notiunile invatate la laboratoarele de PM.

Proiectul este util pentru oricine doreste sa se distreze si sa invete codul Morse.

Descriere generală

Hardware Design

Lista pieselor:

Software Design

Logica jocului

Jocul are trei moduri de functionare:

Modul de invatare

Utilizatorul va interactiona cu placuta prin intermediul interfetei seriale (USART). El poate trimite orice simbol de la tastatura (alfanumeric), iar acesta va fi decodificat. Pe ecranul LCD vor aparea simbolurile specifice codului Morse (. sau _) ce reprezinta codificarea literei, va fi actionat buzzer-ul pentru a face un sunet similar de tonurile pulsurilor radio folosite pentru a codifica puncte si linii. De asemenea, servomotorul este actionat pentru a simula trimiterea unui punct sau a unei linii, depinzand de durata ramanerii acestuia in pozitia “apasat”.

Pentru comunicarea cu LCD-ul am folosit biblioteca LiquidCrystal_I2C.h, iar pentru comunicarea cu servomotorul biblioteca ServoTimer2.h pentru a putea folosi intreruperile pe Timer1 (servo.h foloseste intreruperi pe timer1 asa ca a fost nevoie sa folosesc alta biblioteca).

Modul test usor

Pe ecranul LCD vor aparea litere ce trebuie codificate in codul Morse de catre utilizator prin intermediul butoanelor. Am limitat numarul maxim de simboluri la 6, pentru a putea incapea mereu pe ecran; in orice caz, codificarea maxima a unui caracter alfanumeric are 5 simboluri. Pe acelasi ecran apar si timpul ramas, cat si o statistica a numarului de raspunsuri corecte din numarul total de intrebari. Pentru a marca finalul unui caracter, se va apasa un buton specific. Atunci cand se codifica caracterul, pentru apasarile de . sau _ buzzerul va scoate un sunet similar cu cel de la modul de invatare. Generarea unui caracter se face prin alegerea random dintr-un vector ce contine toate caracterele ce pot fi codificate. Timpul asociat unei codificarii unei litere este de 20 de secunde.

Modul test greu

Similar cu test usor, vor aparea pe ecranul LCD cuvinte ce trebuie codificate. Similar, buzzerul simuleaza apasarile unui simbol specific. Se va codifica pe rand, cate un caracter, apasand butonul specific. La final, prin apasarea altui buton se marcheaza finalul cuvantului. Limita de timp este de 99 de secunde, si din nou apare statistica raspunsurilor corecte.

Pentru a itera prin modurile existente am plasat un buton.

Decodificarea unui simbol

Pentru decoficarea unui simbol alfanumeric am folosit un arbore binar (practic un arbore trie, dar fiind doar doua simboluri posibile e binar) prin care iterez pentru a verifica litera la care se ajunge. Un ”.” inseamna parcurgerea arborelui stang, iar o “_” inseamna parcurgerea arborelui drept. Pentru mai multe detalii am atasat aceasta imagine.

In implementarea mea nu am folosit un arbore per se, ci am codificat acest arbore printr-un vector, inceputul arborelui stang pentru nodul i fiind la indexul 2*i + 1, iar al arborelui drept la 2*i + 2.

Rezultate Obţinute

Am reusit sa realizez toate cele 3 moduri pe care mi le-am propus initial, astfel facilitand invatarea codului Morse printr-un joc interactiv. Proiectul este 100% functional si poate fi folosit pentru invatare si testare.

Am atasat si cateva poze din cele 3 moduri existente.

Galerie foto

mod_0_-_invatare.jpeg mod_1_-_test_usor.jpeg mod_2_-_test_greu.jpeg

Concluzii

E primul proiect de acest gen pe care il fac fizic (la ADIV a fost facut in TinkerCad) si este intr-adevar mult mai interesant sa legi fizic pin-urile, sa lipesti si verifici piesele.

Per total sunt multumit de rezultatul proiectului si am si invatat mai multe simboluri din codul Morse. :D

Download

ilie_alexandru_proiect_pm.zip

Jurnal

Etapele proiectului:

Bibliografie/Resurse

Resurse Software

Informatii despre codul Morse

Implementare decodificare cu arbori

Laboratoare

Biblioteca pentru LiquidCrystal cu I2c

Biblioteca pentru servomotor ce nu foloseste Timer1

Export to PDF