This is an old revision of the document!


Translator de cod Morse

Introducere

Descriere generală

Proiectul presupune comunicarea prin cod morse între două plăcuțe Arduino Uno, una având rol de transmițător și cealaltă de receptor.

Plăcuța transmițător are patru butoane cu următoarele roluri:

  1. un buton pentru linie - la apăsarea acestuia se va declanșa buzzer-ul
  2. un buton pentru punct - la apăsarea acestuia se va declanșa buzzer-ul
  3. un buton care indică final de caracter - cât timp este apăsat va fi aprins LED-ul roșu
  4. un buton care indică final de cuvânt
    1. cât timp este apăsat va fi aprins LED-ul verde
    2. în urma apăsării acestui buton va fi trimis cuvântul către cealaltă plăcuță

Plăcuța receptor va descifra mesajul primit și îl va afișa pe un ecran LCD. Potențiometrul reglează luminozitatea ecranului LCD.

schema_bloc_mariagavenea.jpg

Hardware Design

Componente necesare:

Componentă Număr
Arduino Uno 2
Breadboard 2
LED roșu 1
LED verde 1
Buzzer 1
Butoane 4
Rezistență 1k 3
Rezistență 2201
Potențiometru 1
LCD 1602 1


Schema electrică:
schema_electrica_mariagavenea.jpg

Software Design

Am folosit ca mediu de dezvoltare Arduino IDE.

Biblioteci utilizate: Wire.h (I2C), LiquidCrystal.h (LCD)

Plăcuța transmițător

1. Butoanele

Fiecare apasare de buton generează o întrerupere:

- butonul pentru linie → întrerupere INT0
- butonul pentru punct → întrerupere INT1
- butonul pentru final de caracter → întrerupere PCINT2
- butonul pentru final de cuvant → întrerupere PCINT0

Am făcut debouncing pentru fiecare buton folosind funcția millis() și acceptând intervalul minim între două apăsări succesive ca fiind de 300 ms.

2. Buzzer-ul

Există trei situații în care buzzer-ul sună:

a) a fost apăsat butonul pentru linie → frecvență: 525 HZ și timp: 800 ms
b) a fost apăsat butonul pentru punct → frecvență: 525 HZ și timp: 400 ms
c) se încearcă depășirea dimensiunii buffer-ului de transmisie → frecvență: 1500 HZ și timp: 500 ms (în acest caz tot buffer-ul este invalidat, nu se trimite mesajul și o scriere următoare se va face de la începutul buffer-ului)

Timpul și frecvența sunt setate în ISR-uri, iar buzzer-ul este activat cu funcția tone() în bucla principală.

3. LED-urile

LED-urile sunt aprinse cât timp este apăsat butonul corespunzător fiecăruia.

a) LED-ul roșu → este aprins și stins în rutina de tratare a întreruperii PCINT2
b) LED-ul verde → este aprins și stins în rutina de tratare a întreruperii PCINT0

4. Comunicarea cu plăcuța receptor

Pentru comunicarea prin I2C m-am folosit de biblioteca Wire.h.
După ce sunt transmise datele către cealaltă plăcuță, se afișează mesajul transmis la monitorul serial.

Rezultate Obţinute

Circuit final

Demo

Concluzii

Download

Jurnal

25.04.2021 - Publicare pagină, realizare schemă electrică și schemă bloc
07.05.2021 - Configurare plăcuță transmițător
26.05.2021 - Configurare plăcuță receptor și realizare comunicare între plăcuțe

Bibliografie/Resurse

pm/prj2021/abasoc/translatorcodmorse.1622582891.txt.gz · Last modified: 2021/06/02 00:28 by maria.gavenea
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