Dispozitiv de invatare cod morse

Introducere

Codul Morse sau alfabetul Morse este o metodă de transmitere a informației folosind secvențe standardizate de semne sau pulsații scurte și lungi - cunoscute în mod comun ca „puncte” și „linii” - pentru litere, cifre și caracterele speciale specifice oricărui mesaj.

Dispozitivul creat afiseaza in modul DEMO alfabetul Morse, pe un dispozitiv dotat cu un ecran LCD text, un LED si un buzzer:

  • ledul clipeste (punct = 500 ms, pauza = 500ms, linie = 1500ms)
  • buzzer-ul creaza sunetul corespunzator
  • LCD-ul afiseaza Litera si reprezentarea sa: A = _.

Scopul proiectului este de a simula alfabetul Morse si de a fi un instrument de invatare a acestuia.

Regulile Codului Morse

Hardware Design

Lista componente:

  • placuta PM 2012
  • LCD text 16 caractere - 1 linie (dem16101 syh)
  • 1 x buzzer, 1 x led, 1 x buton (le voi numi periferice)
  • 3 rezistente (300 ohm, 1 kohm, 10 kohm)

Schema de functionare este foarte simpla, intrucat toate perifericile sunt conectate direct la pinii ATMega16. Iata schema electrica (desenata manual):

LCD-ul se conecteaza prin 4 pini de date si 3 pini (RS, RW, E) conform datasheet-ului DEM16101 SYH. DataSheet Pinii de date se conecteaza direct la ATMega16 la pinii 36-40.

Buzzerul se conecteaza cu ajutorul unei Rezistente de 1Kohm si un tranzistor in serie. Acesta este conectat la pinul 20 al microcontroller-ului.

Ledul se conecteaza in serie cu o rezistenta si se conecteaza direct la pinul 33 al microcontrolerului.

Dispozitivul:

Varianta initiala de la care am plecat (si de la care am luat componentele - un proiect PM foarte vechi) Placuta de PM 2012

Software Design

Codul pentru dispozitiv a fost scris in C, si cu compilat cu AVR-GCC. Fisierul .hex generat in urma compilarii a fost scris pe placuta cu ajutorul Bootloader-ului pus la dispozitie de echipa de PM.

Structura codului Am definit mai multe functii (dot, dash, space) care au corespondent direct in codul morse si care interactioneaza cu functiile perifericelor (buzzer, led, lcd). Fiecare litera are definita o secventa dot(), space(), dash().

Buzzer-ul si LED-ul se pot controla foarte facil. Pentru LCD am utilizat o librarie eXtreme Electronics xAPI, care se poate configura pe mai multe tipuri de LCD si care are functiile de scriere pe LCD built-in.

Am pus la dispozitie si arhiva codului utilizat (lcd.c, lab1.c).

Exemplu de functie care genereaza echivalentul unui punct si dash pe LED:

void dot() { PORTA |= 1«PA7; LED on _delay_ms(DOT); PORTA &= !(1«PA7); LED off }

void dash() { PORTA |= 1«PA7; LED on _delay_ms(3*DOT); PORTA &= !(1«PA7); LED off }

DOT este o varibila prin care am definit durata unui punct la 500ms. Conform conventiei Morse, un dash are 3 x DOT = 1500ms

Exemplu de rulare a LCD

LCDClear(); LCDWriteString(“SOS”);

Functia care afiseaza codul Morse

Aceasta scrie pe LCD mesajul. Ia litera cu litera si simuleaza pe LED si pe Buzzer rezultatul.

void view_MORSE(char* msg, char* msg2) { int i; LCDClear(); LCDWriteString(msg2); for (i=0;i<strlen(msg);i++) { if (msg[i]=='s') S(); else if (msg[i]=='o') O(); } }

Rezultate Obţinute

Dispozitivul Hardware functioneaza foarte bine. In timpul dezvoltarii codului am reusit sa utilizez buzzer-ul cat si LED-ul pentru a simula codul Morse.

Din pacate am reusit sa suprascriu bootloader-ul in timp ce ma jucam cu diverse configuratii ale LCD-ului. Codul software nu este complet.

De asemenea as fi dorit sa implementez si o varianta interactiva de invatare:

  • pe display apare un cuvant
  • utilizand un buton, userul trebuie sa scrie cuvantul
  • programul verifica daca a scris corect sau nu, si afiseaza varianta corecta

Concluzii

Proiectul este unul interesant. Partea hardware poate fi un pic greoaie, dar in timp te familiarizezi cu lipiturile si cu circuitele.

Atentie la dimensiunea codului scris pentru a incapea in memoria ATMega16.

Download / Resurse / Bibliograrie

pm/prj2012/avoinescu/20.txt · Last modified: 2021/04/14 17:07 (external edit)
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