This shows you the differences between two versions of the page.
pm:prj2021:agrigore:daily [2021/06/03 06:53] gabriela.mircia [Rezultate Obţinute] |
pm:prj2021:agrigore:daily [2021/06/03 07:39] (current) gabriela.mircia [Jurnal] |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Autor ===== | ===== Autor ===== | ||
[[gabriela.mircia@stud.acs.upb.ro|Gabriela-Camelia Mircia]] | [[gabriela.mircia@stud.acs.upb.ro|Gabriela-Camelia Mircia]] | ||
+ | |||
+ | Grupa: 332CA | ||
===== Introducere ===== | ===== Introducere ===== | ||
* Proiectul consta in implementarea unui ceas care are mai multe functionalitati precum: afisarea datei si a orei, afisarea zilei saptamanii, posibilitatea de a seta alarme, vizualizarea temperaturii si a umiditatii. Este usor de folosit prin butoane si o aplicatie simpla, dar si usor de vizualizat pe un ecran. | * Proiectul consta in implementarea unui ceas care are mai multe functionalitati precum: afisarea datei si a orei, afisarea zilei saptamanii, posibilitatea de a seta alarme, vizualizarea temperaturii si a umiditatii. Este usor de folosit prin butoane si o aplicatie simpla, dar si usor de vizualizat pe un ecran. | ||
Line 9: | Line 11: | ||
Se conecteaza la o placuta de Arduino UNO un modul RTC pentru afisarea datei si orei. Acestea pot fi modificate prin butoanele de pe breadboard. Utilizatorul are posibilitatea de a vizualiza ora fie in format AM, fie PM. Toate informatiile detaliate sunt afisate pe un LCD controlat cu ajutorul unui potentiometru. | Se conecteaza la o placuta de Arduino UNO un modul RTC pentru afisarea datei si orei. Acestea pot fi modificate prin butoanele de pe breadboard. Utilizatorul are posibilitatea de a vizualiza ora fie in format AM, fie PM. Toate informatiile detaliate sunt afisate pe un LCD controlat cu ajutorul unui potentiometru. | ||
- | La nivelul de temperatura si umiditate este folosit un senzor pentru preluarea datelor, acestea sunt interpretate folosind doua LED-uri: cel rosu se va aprinde daca temperatura trece de o anumita limita (cea setata este de 24C), cel albastru va porni daca temperatura scade sub limita impusa. | + | La nivelul de temperatura si umiditate este folosit un senzor pentru preluarea datelor, acestea sunt interpretate folosind doua LED-uri: cel rosu se va aprinde daca temperatura depaseste o anumita limita (cea setata este de 24C), cel albastru va porni daca temperatura scade sub limita impusa. |
- | Pentru a face mai interactiv proiectul am adaugat un senzor de sunet care determina pornirea si oprirea ceasului. Acesta recunoaste sunete de frecvente asemanatoare unui batut din palme. Spre exemplu, daca e folosit intr-o camera unde exista un dialog continuu, ceasul se va reporni permanent. | + | Pentru a face mai interactiv proiectul am adaugat un senzor de sunet care determina pornirea si oprirea ceasului. Acesta recunoaste sunete de frecvente asemanatoare unei batai din palme. Spre exemplu, daca e folosit intr-o camera unde exista un dialog continuu, ceasul se va reporni permanent. |
Spre final, pentru a complica putin setarea alarmei, a fost introdus un modul bluetooth care functioneaza impreuna cu o aplicatie simpla pentru mobile. Astfel utilizatorul poate seta alarma chiar din telefon. La acel moment buzzerul va suna si cele doua LED-uri vor lumina intermitent. | Spre final, pentru a complica putin setarea alarmei, a fost introdus un modul bluetooth care functioneaza impreuna cu o aplicatie simpla pentru mobile. Astfel utilizatorul poate seta alarma chiar din telefon. La acel moment buzzerul va suna si cele doua LED-uri vor lumina intermitent. | ||
Line 23: | Line 25: | ||
==Componente== | ==Componente== | ||
- | ^ Piesa ^Nr^ Link ^Datasheet/Utile ^ | + | ^ Piesa ^Nr^ Link ^Datasheet/Utils ^ |
| Arduino Uno | 1 | [[https://cleste.ro/arduino-uno-r3-atmega328p.html| link]] | [[https://www.farnell.com/datasheets/1682209.pdf| link]] | | | Arduino Uno | 1 | [[https://cleste.ro/arduino-uno-r3-atmega328p.html| link]] | [[https://www.farnell.com/datasheets/1682209.pdf| link]] | | ||
| | | | ||
Line 56: | Line 58: | ||
| | | | ||
==Schema electrica== | ==Schema electrica== | ||
- | {{:pm:prj2021:agrigore:zzzzzzzzzzzzzzzzzzzzzzzzz.png?650|}} | + | {{:pm:prj2021:agrigore:zzzzzzzzzzzzzzzzzzzzzzzzz.png?700|}} |
Schema a fost realizata in Eagle folosind informatiile din laboratoarele de [[https://ocw.cs.pub.ro/courses/icalc| IC]]. | Schema a fost realizata in Eagle folosind informatiile din laboratoarele de [[https://ocw.cs.pub.ro/courses/icalc| IC]]. | ||
Line 77: | Line 79: | ||
Alegerea celor 2 LED-uri monocolore a venit din cauza faptului ca nu am avut suficienti pini, mai aveam ramasi 2, dar pentru un RGB erau necesari 3. Am realizat ca o rezolvare a acestei probleme ar fi putut fi folosirea unui LCD cu I2C care nu necesita si un potentiometru, deci numarul pinilor ocupati ar fi scazut. | Alegerea celor 2 LED-uri monocolore a venit din cauza faptului ca nu am avut suficienti pini, mai aveam ramasi 2, dar pentru un RGB erau necesari 3. Am realizat ca o rezolvare a acestei probleme ar fi putut fi folosirea unui LCD cu I2C care nu necesita si un potentiometru, deci numarul pinilor ocupati ar fi scazut. | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | * Limbaj: C | ||
+ | * Tehnologie: Arduino IDE Windows, [[https://app.diagrams.net/ | diagrams.net]] | ||
+ | |||
+ | |||
+ | Software-ul se imparte in mai multe parti pentru fiecare functie. Majoritatea codului consta in notiuni de baza in C la care se adauga initializari si interpretarea datelor de pe placuta de Arduino. Codul contine comentarii care lamuresc deciziile luate. | ||
+ | |||
+ | |||
+ | Bibliotecile folosite au fost incluse in arhiva. Acestea depind de senzorii utilizati. | ||
+ | |||
+ | Exemple: DHT_sensor_library, DS3231, LiquidCrystal | ||
+ | ==before== | ||
+ | * initializarea variabilelor folosite pe parcurs | ||
+ | ==setup()== | ||
+ | * pornirea modulelor folosite: LCD, RTC, Serial, Bluetooth | ||
+ | ==buttoninfo(..)== | ||
+ | * functie care mentine contorizarea apasarii butonului | ||
+ | * asigura ca se inregistreaza o singura apasare | ||
+ | |||
+ | ==loop()== | ||
+ | * citirea datelor transmise de senzori | ||
+ | * verificarea apasarii butoanelor | ||
+ | * logica de afisare principala se bazeaza pe senzorul de sunet, declansarea acestuia modifica afisajul de pe ecran: "on-off"-ul ceasului | ||
+ | * logica "paginilor": o apasare a primului buton modifica afisajul de pe LCD, astfel se creeaza un meniu interactiv | ||
+ | * pagini: ora, data, ziua saptamanii, temp/umiditate, alarma | ||
+ | * butonul 2: selectarea datei care se doreste a fi modificata | ||
+ | * butonul 3: permite modificarea valorilor orei/datei | ||
+ | * butonul 4: permite afisarea in format 12/24 ore | ||
+ | * afisarea se face in functie de pozitiile de pe LCD folosind setCursor(..) | ||
+ | * pagina intermediara: apare dupa apasarea butoanelor 2+1, adica dupa o modificare facuta de utilizator | ||
+ | * logica optiune temperatura: in functie de limita impusa, setez pe LOW/HIGH LED-ul de culoarea potrivita | ||
+ | |||
+ | ==modul Bluetooth== | ||
+ | * pentru a interactiona cu acest modul am creat o aplicatie pe Android cu ajutorul [[https://appinventor.mit.edu/ | Mit App Inventor]] | ||
+ | * programul se bazeaza pe blocuri si imagini, de unde mai apoi este generata o aplicatie | ||
+ | * contine 6 butoane: unul pentru conectarea la Bluetooth, unul pentru a opri conectarea, 2 pentru modificarea orei, 2 pentru modificarea minutului | ||
+ | * aplicatia trimite caractere ('a','b','c','d') care sunt interpretate printr-o serie de blocuri conditionate in C, un caracter reprezinta o modificare a unui minut/unei ore | ||
+ | |||
+ | |||
+ | ==alarma== | ||
+ | * o logica simpla: cand timpul dictat de aplicatie corespunde cu timpul ceasului, se pornesc LED-urile si buzzerul | ||
+ | * nu poate functiona in acelasi timp cu optiunea pentru temperatura deoarece nu ar trebui confundata lumina LED-urilor | ||
+ | |||
+ | {{:pm:prj2021:agrigore:apppppppppp.jpg?300|}} | ||
+ | |||
+ | |||
Line 92: | Line 139: | ||
In final, proiectul s-a dovedit a fi usor de folosit, toate functionalitatile dorite au putut fi observate. | In final, proiectul s-a dovedit a fi usor de folosit, toate functionalitatile dorite au putut fi observate. | ||
S-au folosit componente cu functii diversificate pentru un scop comun: sa ofere utilizatorului informatii | S-au folosit componente cu functii diversificate pentru un scop comun: sa ofere utilizatorului informatii | ||
- | si optiuni utile zilnic printr-o interactiune cat mai accesibila | + | si optiuni utile zilnic printr-o interactiune cat mai accesibila. |
===== Concluzii ===== | ===== Concluzii ===== | ||
Line 115: | Line 162: | ||
* 25-27 mai - Hardware + Software.. | * 25-27 mai - Hardware + Software.. | ||
* 28 mai - Upgrade la baterie 9V | * 28 mai - Upgrade la baterie 9V | ||
- | * 29 mai - Upgrade la modul bluetooth | + | * 29 mai - Upgrade la modul bluetooth, Finalizare schema electrica |
- | * 2 iunie - Filmare si finalizare demo | + | * 1 iunie - Filmare si finalizare demo |
* 3 iunie - Editare pagina wiki | * 3 iunie - Editare pagina wiki | ||