This shows you the differences between two versions of the page.
pm:prj2021:abasoc:ceasdigital [2021/05/20 13:59] cristian.descultu |
pm:prj2021:abasoc:ceasdigital [2021/05/28 21:36] (current) cristian.descultu |
||
---|---|---|---|
Line 22: | Line 22: | ||
- senzor de temperatura si umiditate DTH11 | - senzor de temperatura si umiditate DTH11 | ||
- buzzer | - buzzer | ||
- | <note tip> | + | |
- | SCHEMA ELECTRICA TODO | + | == Schema Electrica == |
- | </note> | + | |
+ | {{:pm:prj2021:abasoc:alarm_clock_scheme.png?700|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | <note tip> | + | * Pentru dezvoltarea aplicatiei am folosit Arduino IDE si MIT App Inventor pentru realizarea unei aplicatii android care sa poata comunica cu Arduino. |
- | TODO | + | * Bibliotecile folosite sunt "LiquidCrystal_I2C.h", "dht.h", "RTClib.h", "Wire.h", "stdio.h", "stdlib.h". |
- | </note> | + | * Am folosit o structura de date pentru a retine datele legate de alarma si de statusul acesteia. |
- | ===== Rezultate Obţinute ===== | + | |
- | S-a obtinut un ceas digital care afiseaza pe ecranul principal detalii despre data si ora, acesta putand fi schimbat la apasarea unui buton. Acesta are incorporat si o alarma care se poate seta fie fizic, apasand butoanele de pe arduino, fie remote prin intermediul unei aplicatii android. Cand se ajunge la ora si minutul setate pentru alarma, se va auzi "The Imperial March". Alarma se poate opri fie la apasarea butonului de stop, fie la expirarea timpului acesteia. | + | |
- | ===== Concluzii ===== | + | ==== Functionare Ceas ==== |
+ | * Se porneste interfata seriala si LCD-ul, iar pinii de in/out sunt setati | ||
+ | * RTC-ul este pornit (daca nu este sincronizat in concordanta cu ora sistemului, acest lucru se va face decomentand linia marcata | ||
+ | * Se verifica ce tip de butoane au fost apasate pentru a intoarce comportamentul dorit | ||
+ | * Alarma poate fi setata fie apasand butonul "SET", urmat de "UP" pentru setarea orei/minutului, dupa care se va apasa "CHScreen", pentru a trece la urmatorul element sau pentru a finaliza setarea, fie prin intermediul aplicatiei android. | ||
+ | * Pentru oprirea alarmei se va apasa butonul "STOP". | ||
+ | * Se verifica in mod constant daca exista date pe interfata seriala (s-au trimis date de pe smartphone prin bluetooth catre arduino). | ||
+ | {{:pm:prj2021:abasoc:blscr.jpg?300|}} \\ | ||
+ | {{:pm:prj2021:abasoc:mscr3.jpg?720|}} \\ | ||
+ | {{:pm:prj2021:abasoc:mscr1.jpg?720 |}} \\ | ||
+ | {{:pm:prj2021:abasoc:mscr2.jpg?720|}} \\ | ||
+ | {{:pm:prj2021:abasoc:mscr0.jpg?720|}} \\ | ||
+ | ===== Rezultate Obţinute ===== | ||
+ | S-a obtinut un ceas digital care afiseaza pe ecranul principal detalii despre data si ora, acesta putand fi schimbat la apasarea unui buton. Acesta are incorporat si o alarma care se poate seta fie fizic, apasand butoanele de pe arduino, fie remote prin intermediul unei aplicatii android. Cand se ajunge la ora si minutul setate pentru alarma, se va auzi "The Imperial March". Alarma se poate opri la apasarea butonului de pe breadboard. \\ | ||
+ | [[https://youtu.be/51THLYmIkQc|Demo]] | ||
+ | ===== Concluzii ===== | ||
+ | Dispozitivul functioneaza impecabil, singura modificare pe care as adauga-o pe viitor ar fi un "blinking digits" in momentul in care se seteaza ora/minutul de catre user, pentru a fi mai intuitiv la care categorie se afla. \\ | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2021:abasoc:alarm_clock.zip|}} - Arhiva contine sursele, README, bibliotecile folosite si aplicatia android. | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | Am inceput prin a ma obisnui cu fiecare componenta in parte, astfel ca am conectat separat Display-ul, RTC-ul si senzorul DHT11 si m-am jucat cu ele cu scopul de a ma familiariza si de a-mi pune niste baze. Ulterior, dupa ce am considerat ca sunt pregatit, am inceput sa iau proiectul pe bucatele. Am conectat si configurat LCD-ul, doar afisand un mesaj. Apoi am adaugat senzorul la proiect, am citit si prelucrat datele si am verificat daca se trimit bine la LCD. Cand am fost multumit si am facut mici modificari la cum sa afisez informatiile, am adaugat si RTC-ul. In urma informatiilor gasite, acesta trebuie initializat o singura data, de aceea in cod am comentat linia respectiva, pentru a fi in continuare acolo in cazul in care crapa ceva(am patit:)). Am testat ca totul merge ok(opream si porneam alimentarea sa vad ca datele temporale sunt retinute in RTC). Nefiind multumit de modul in care se afisa si de faptul ca avand foarte multe delay-uri in cod, era greu de apasat un buton pentru oprirea alarmei, am ajuns de la un display care se schimba automat, la unul controlat din butoane. Am adaugat 4 butoane, pentru schimbarea ecranului, setarea alarmei si oprirea acesteia. Cand am rulat din nou cateva teste fie setand alarma din cod, fie din butoane, mi-am dat seama ca bipaitul acela monoton al buzzer-ului nu-i foarte incantator asa ca am decis sa iau o configuratie de pe net pentru buzzer pentru a recrea o melodie (acest lucru a fost facut cu acordul asistentului). Ultima etapa a fost sa invat sa folosesc site-ul MIT APP INVENTOR (se poate gasi la resurse) pentru dezvoltarea unei aplicatii android minimaliste pentru a seta alarma. | + | Am inceput prin a ma obisnui cu fiecare componenta in parte, astfel ca am conectat separat Display-ul, RTC-ul si senzorul DHT11 si m-am jucat cu ele cu scopul de a ma familiariza si de a-mi pune niste baze. Ulterior, dupa ce am considerat ca sunt pregatit, am inceput sa iau proiectul pe bucatele. Am conectat si configurat LCD-ul, doar afisand un mesaj. Apoi am adaugat senzorul la proiect, am citit si prelucrat datele si am verificat daca se trimit bine la LCD. Cand am fost multumit si am facut mici modificari la cum sa afisez informatiile, am adaugat si RTC-ul. In urma informatiilor gasite, acesta trebuie initializat o singura data, de aceea in cod am comentat linia respectiva, pentru a fi in continuare acolo in cazul in care crapa ceva(am patit:)). Am testat ca totul merge ok(opream si porneam alimentarea sa vad ca datele temporale sunt retinute in RTC). Nefiind multumit de modul in care se afisa si de faptul ca avand foarte multe delay-uri in cod, era greu de apasat un buton pentru oprirea alarmei, am ajuns de la un display care se schimba automat, la unul controlat din butoane. Am adaugat 4 butoane, pentru schimbarea ecranului, setarea alarmei si oprirea acesteia. Cand am rulat din nou cateva teste fie setand alarma din cod, fie din butoane, mi-am dat seama ca bipaitul acela monoton al buzzer-ului nu-i foarte incantator asa ca am decis sa iau o configuratie de pe net pentru buzzer pentru a recrea o melodie. Ultima etapa a fost sa invat sa folosesc site-ul MIT APP INVENTOR (se poate gasi la resurse) pentru dezvoltarea unei aplicatii android minimaliste pentru a seta alarma. |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- [[https://ocw.cs.pub.ro/courses/pm/prj2021/abasoc/ceasdigital|Link proiect]] \\ | - [[https://ocw.cs.pub.ro/courses/pm/prj2021/abasoc/ceasdigital|Link proiect]] \\ | ||
+ | - {{:pm:prj2021:abasoc:ceas_digital_cu_alarma_cs_open_courseware_.pdf| PDF proiect}} | ||
== Resurse Hardware == | == Resurse Hardware == | ||