Autor: Popescu Lucian-Ioan
Grupa: 336CB
Sistem de colectare a datelor de la senzori si afisare a lor pe LCD. Selectarea datelor afisate se face prin intermediul unei telecomenzi. In plus exista un LCD suplimentar care va afisa uptime-ul.
Ideea proiectului a plecat de la dorinta de a agrega si multiplexa cat mai multi senzori pe Arduino pentru a culege si lucra cu datele din mediul inconjurator. Proiectul e folositor deoarece el poate fi modelat astfel incat sa fie folosit in viata de zi cu zi pentru a colecta date legate de temperatura, umiditate, puritatea aerului intr-o casa sau masina smart.
Componente necesare:
Codul sursa se poate gasi in urmatorul repo: https://github.com/lucic71/EMS
La fiecare moment de timp, in functia loop, se afiseaza pe LCD-ul 1 meniul utilizatorului. Pe LCD-ul 2 e afiseaza uptime-ul in secunde. Sistemul asteapta de la utilizator o comanda, iar atunci cand o primeste se decide ce meniu va afisa pe ecran.
Functiile statice definite in fisierul .ino comunica cu senzorii sistemului pentru a colecta si afisa mai apoi date pe LCD.
A fost nevoie sa hardcodez tastele venite de la telecomanda, pentru asta am folosit urmatoarele define-uri:
#define KEYONE 0XF30CFF00 #define KEYTWO 0XE718FF00 #define KEYTHREE 0XA15EFF00 #define KEYFOUR 0XF708FF00 #define KEYEQ 0XE619FF00 #define KEYUNDEF 0xFFFFFFF
Pentru implementare am folosit urmatoarele biblioteci:
Ca mediu de dezvoltare am folosit Arduino IDE.
Meniurile de pe LCD care se afiseaza utilizatorului sunt:
Pentru a selecta un meniu se apasa tasta 1, 2, 3, respectiv 4 de pe telecomanda. Pentru a reveni in meniul principal se apasa tasta EQ.
Mai jos se gasesc cateva poze cu sistemul rezultat si un video demo.
Senzorii de sunet, temperatura si ultrasonic conectati pe breadboard:
IR receiver-ul folosit pentru comunicarea cu telecomanda:
Pentru ca am folosit 2 LCD-uri cu I2C a fost nevoie ca pentru unul dintre ei sa modific adresa. Pentru asta am legat pinii de adresa A0 ca mai jos:
Am reusit sa implementez toata functionalitatea pe care mi-am propus-o.
Cea mai dificila parte a fost legata de interconectarea componentelor prin intermediul placutei. Initial mi-am propus sa folosesc un 4 digit 7 segment display pentru afisarea uptime-ului, dar mi-am dat seama ca nu-mi ajung pinii de pe placuta. In final am decis sa folosesc doua LCD-uri 16×2 cu I2C pentru ca folosesc doar 4 pini de pe placuta.
Implementarea software a mers foarte bine deoarece am gasit rapid biblioteci pentru componentele mele. Ce mi-a ramas de facut a fost sa creez logica pentru interactiunea cu utilizatorul.