Smart Outfit Advisor - Craciun Mara 333CA
Introducere
Proiectul are ca scop usurarea vietii utilizatorului prin sfatuirea acestuia cu ce sa se imbrace in functie de vreme. Acesta inregistreaza temperatura si umiditatea din jur si, in functie de valorile acestora, afiseaza pe un ecran LCD propuneri de imbracaminte.
Ideea proiectului mi-a venit in speranta de a putea evita situatiile in care nu imi luam umbrela si ma prindea ploaia, in care imi luam o geaca groasa si o tineam in mana deoarece afara era foarte cald sau cele in care nu ma imbracam destul de gros pentru frigul de afara.
Descriere generală
Pentru realizarea proiectului si a crea o experienta cat mai distractiva pentru utilizator, am pus la un loc urmatoarele feature-uri:
Senzor de temperatura si umiditate conectat la placuta, care inregistreaza temperatura si umiditatea din exterior si returneaza cate o valoare pentru acestea
Un istoric al temperaturilor va fi salvat pe un card SD conectat la placuta prin adaptor
Alta caracteristica a proiectului sunt cele 4 LED-uri, 2 pentru umiditate si 2 pentru temperatura: un led se va aprinde daca temperatura/umiditatea sunt considerate ridicate/scazute
In final, cel mai important aspect al proiectului este algoritmul care sta in spatele sfaturilor afisate. Valorile de temperatura si umiditate sunt inregistrate prin senzorul conectat la placuta si, in functie de acestea, algoritmul verifica imbracamintea adecvata (exemplu: geaca groasa daca temperatura e foarte scazuta, umbrela daca temperatura si umiditatea indica ca ar ploua etc.) si o afiseaza pe ecranul LCD pentru a ajuta utilizatorul sa ia o decizie.
Hardware Design
Componentele proiectului sunt:
Schema proiectului:
Software Design
In implementarea proiectului, am folosit urmatoarele laboratoare:
Laboratorul 0: pentru aprinderea LED-urilor
Laboratorul 4: ADC folosit pentru citirea valorilor de la senzorul de temperatura si umiditate si procesarea acestora
Laboratorul 5: SPI este protocolul folosit pentru legatura cu modulul adaptor de card SD
Laboratorul 6: I2C folosit ca protocol pentru legatura cu ecranul LCD
Am implementat proiectul folosind Arduino IDE.
Librariile utilizate:
DHT.h : folosita pentru citirea temperaturii si umiditatii de la senzor
LiquidCrystal_I2C.h : folosita pentru a afisa mesaje pe ecranul LCD utilizand protocolul I2C
SPI.h : folosita pentru comunicarea prin protocolul SPI intre placuta Arduino si adaptorul de card SD
SD.h : folosita pentru scrierea pe cardul SD
Proiectul se bazeaza pe verificarea valorilor obtinute de la senzorul de temperatura si umiditatea, de la care citeste o data la 5 secunde. In momentul in care umiditatea este mai mare de 70%, sunt sanse foarte mari sa indice precipitatii (ploaie sau zapada, in functie de temperatura). Daca umiditatea este mai mica, atunci ne concentram doar pe temperatura pentru a gasi cele mai potrivite haine.
Pentru temperatura foarte ridicata/scazuta, exista cate un LED care se aprinde pentru a anunta utilizatorul sa aiba grija la temperaturile extreme. De asemenea, proiectul are cate un LED pentru valori foarte mici ale umiditatii (mai putin de 25%) si unul pentru valori foarte ridicate ale umiditatii (in functie de temperatura, sunt valori peste care umiditatea nu ar trebui sa treaca).
Rezultate Obţinute
Cum senzorul citeste o data la 5 secunde, fiecare afisare consecutiva nu este foarte diferita, insa acesta functioneaza corect pentru fiecare situatie. Acestea sunt 3 scenarii care au avut loc:
Temperatura de 26 de grade si umiditate normala, deci proiectul doar va afisa sugestii pe ecran
Temperatura de 26 de grade si umiditatea crescuta, insa nu mai mare de 70% pentru a indica precipitatii
Temperatura de 26 de grade si umiditatea foarte crescuta (peste 70%), deci indica precipitatii
Pentru a vedea un demo care trece prin toate scenariile posibile, urmariti link-ul:
https://youtu.be/jkqMEPNs_YE
Download
Arhiva cu codul pentru proiect:
craciunmara.zip
De asemenea, in fisierul arduino se gaseste la final, comentat, si un demo pentru testarea tuturor scenariilor posibile.
Concluzii
Desi la inceput nu stiam cat de bine o sa ma descurc sau cat de mult o sa imi placa, am ajuns sa ma distrez lucrand la proiect si cautand metode de legare a componentelor. Mi-a placut sa ma gandesc la scenarii posibile si sa vad cum luau viata odata ce implementam si partea de hardware.
In final, pot sa spun ca am invatat foarte multe din proiectul acesta si ca ma bucur ca am avut ocazia sa il fac.
Jurnal
12 aprilie: idee initiala de proiect
18 aprilie: achizitionare majoritatea pieselor
19 aprilie: discutie cu laborantul legata de tema proiectului
26 aprilie: finalizare idee proiect
2 mai: inceput partea software
20 mai: achizitionat fire si breadboard suplimentare
22 mai: terminat hardware
23 mai: finalizat software
26 mai: finalizare documentatie
Bibliografie/Resurse