This is an old revision of the document!
Proiectul constă în construirea unei stații meteorologice care colectează informații din mediul înconjurător și le afișează pe ecran. Utilizatorul poate interacționa cu stația prin intermediul unor butoane, putând accesa, astfel, mai multe ecrane care oferă diverse funcționalități. Atunci când stația este folosită, va răspunde rapid la comenzile utilizatorului, iar când nu este folosită va consuma cât mai puțină energie prin reducerea comunicațiilor cu senzorii și display-ul.
Funcționalități oferite:
Am decis să realizez acest proiect deoarece am deja o stație meteorologică comercială și aș vrea să văd care sunt provocările construirii unui asemenea sistem. În plus, pe viitor, vreau să pot adăuga funcționalități suplimentare la acest proiect, precum un modul bluetooth pentru sincronizarea cu un telefon sau o altă placă care să colecteze informații din exteriorul locuintei.
Interactiunea dintre modulele hardware:
Toate componentele care pot comunica prin I2C (senzorul de presiune, ceasul și display-ul) vor fi legate prin intermediul acestei magistrale. Senzorul DHT11 folosește un protocol one-wire și va comunica umiditatea plăcuței printr-o conexiune individuală. Senzorul BMP280 va fi folosit pentru presiune și temperatură, iar DHT11 doar pentru umiditate, deoarece este mai lent și mai imprecis decât BMP280. Pentru a reduce numărul de componente, butoanele vor fi legate la arduino folosind rezistențele interne de pe pini.
Pentru a menține timpul sincronizat cu plăcuța și pentru a evita comunicația excesivă cu ceasul extern, acesta va mai avea o conexiune cu placa care va fi folosită pentru a genera o întrerupere o dată pe secundă. Deși plăcuța poate genera întreruperi pe baza ceasurilor interne, acestea nu sunt la fel de precise ca cele generate de cel extern. Astfel, plăcuța va incrementa intern minutul și secunda și va prelua data de la ceasul extern doar odată pe oră.
Interacțiunea dintre modulele hardware și cele software:
În albastru deschis sunt reprezentate modulele hardware externe, în albastru deschis cele hardware interne, iar în verde modulele software.
Descriere sumară a modulelor software:
main
⇒ Modulul principal care inițializează celelalte module și în care se găsește funcția loopstation
⇒ Se ocupă de citirea și stocarea datelor de la senzorii de mediu, aici sunt salvate și o parte din setăributton
⇒ Se ocupă de citirea butoanelor. Folosind întreruperi, semnalează modulului main
dacă a fost apăsat un buton și se folosește de unul din ceasurile arduino-ului pentru a face debouncingmenu
⇒ Conține implementarea pentru toate ecranele disponibile. Fiecare ecran implementează câte una din funcționalitățile descrise mai sus și interacționează cu alte module atunci când este nevoietime
⇒ Realizează sincronizarea cu ceasul extern și memorează parametrii pentru alarma setată de utilizator. Controlează și celelalte ceasuri interne ale microcontroller-uluiremote
⇒ Interacționează cu receptorul și emițătorul infraroșu, salvează și retrimite la cerere un cod primit de la o telecomandăInteracțiunea dintre modulele software:
Mai există câte o legătură de la fiecare modul la modulul main
.
Listă de piese:
Schemă:
În urma realizării legăturilor:
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.