Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul realizeaza decodificare de cod morse transmis prin lumina pe lcd. Scopul este evident, proiectul ajutand la folosirea comunicatiei prin cod morse.
Schema bloc:
Senzorul colecteaza datele si le trimite microcontroller-ului prin seriala I2C. Acesta din urma le prelucreaza si le afiseaza pe display.
Lista de piese:
Piese de baza Header de pini pentru LCD si senzor Mufe mama mama pentru conectarea lcd-ului si senzorului la placuta Senzor de lumina - TEMT6000
LCD 1602 5V cu backlight verde
Proiectul contine 2 pasi. La inceput, se fac 5 interogari la senzor pentru a afla valoarea luminii ambientale. Media celor 5 interogari este folosita pentru a determina cand se transmite cod morse si cand nu. Se afiseaza pe LCD valoarea luminii ambientale obtinuta.
Apoi, va incepe translatia obisnuita, lucru indicat prin scrierea pe ecranul LCD-ului a cuvantului START. Fiecare litera este despartita printr-un spatiu, redat ca o durata mai mare de 1.4sec in care nu se aplica lumina. Sfarsitul unei transmisii este redat printr-o iluminare ce dureaza mai mult de 4s. Caracterul Morse scurt (.) este redat printr-o iluminare sub 1s, iar caracterul lung printr-o iluminare ce dureaza mai mult de 1s, dar mai putin de 4s. La sfarsitul unei translatii, placuta este pregatita pentru o noua translatie, lucru ce se evidentiaza prin aparitia pe ecranul LCD-ului a cuvantului START.
Pentru a tine cont de timp, m-am folosit de Timer1 prezent pe microcontroller. In momentul cand nu se detecteaza lumina, dar in iteratia trecuta s-a detectat lumina, inseamna ca s-a terminat de transmis un caracter si se compara valoarea lui TCNT1 cu 1s pentru a afla ce fel de caracter s-a transmis. Se reseteaza valoarea timerului si se porneste din nou. Daca in schimb in iteratia trecuta nu s-a detectat lumina, se compara valoarea lui TCNT1 cu 1s pentru a afla daca s-a transmis un caracter spatiu. Daca da, se adauga la mesaj si se reseteaza timer-ul. La sfarsitul transmisiunii, se parseaza litera cu litera si se afiseaza rezultatul pe ecran.
Am folosit biblioteca pentru LCD prezenta in laboratorul 1, dar si cod din laboratorul 5 pentru ADC, senzorul de lumina fiind unul analogic. Acesta din urma este conectat la canalul 1 al convertorului (PA1).Pentru a afla valoarea captata de senzor, am folosit polling, astfel functia ADC_get(channel) este una blocanta care se intoarce atunci cand conversia s-a terminat.
Proiectul a fost interesant, in mare parte am aplicat si imbunatatit cunostintele obtinute la laboratoare. }
Arhiva cu sursele: proiect.zip
6.05.2018 - adaugare schema electrica (milestone 3)
18.05.2018 - conectat lcd si senzor la placuta
20.05.2018 - incepere scriere cod
23.05.2018 - completare documentatie (codul nu este in versiunea finala)
24.05.2018 - finalizare functionalitati si cod proiect
Biblioteca TEMT6000 eagle: https://github.com/sparkfun/Ambient_Light_Sensor_Breakout-TEMT6000
Mod folosire TEMT6000: https://learn.sparkfun.com/tutorials/temt6000-ambient-light-sensor-hookup-guide
Laboratoarele 1 si 5
Schema electrica oferita de echipa de PM