This is an old revision of the document!


Stație Meteorologică

Introducere

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:

  • Ecran principal pe care sunt afișate temperatura, umiditatea, presiunea și data curentă
  • Grafic care arată evoluția presiunii în ultimele douăzeci de ore
  • Meniu în care se afișează valorile minime și maxime înregistrate pe parcursul orei curente sau pe ultimele 24 de ore
  • Setări pentru dată, oră, unități de măsură pentru temperatură și presiune, corecție pentru presiune
  • Doua alarme, cu ora fixată, dar care pot fi făcute să pornească doar în unele zile ale săptămânii. Fiecare poate porni un dispozitiv extern controlat prin infraroșu și îl poate opri după un timp ales de utilizator

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.

Descriere generală

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 o dată 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 loop
  • station ⇒ Se ocupă de citirea și stocarea datelor de la senzorii de mediu, aici sunt salvate și o parte din setări
  • button ⇒ 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 debouncing
  • menu ⇒ 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 nevoie
  • time ⇒ Realizează sincronizarea cu ceasul extern și controlează celelalte ceasuri interne ale microcontroller-ului
  • alarm ⇒ Se folosește de time pentru a implementa metodele necesare pentru a configura și a declanșa o alarmă
  • remote ⇒ 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:

De exemplu, în schema de mai sus, modulul main depinde de button, time și menu.

Hardware Design

Listă de piese:

  • Arduino UNO R3
  • Senzor Bosch BMP280
  • Senzor DHT11
  • Display 20×04
  • Modul I/O I2C pentru display-uri
  • Ceas RTC DS3231
  • Diodă infraroșu emițător
  • Modul receptor infraroșu
  • 5 butoane

Schemă:

În urma realizării legăturilor între componente:

statie_meteo_fizic1.jpg statie_meteo_fizic2.jpg statie_meteo_fizic3.jpg statie_meteo_fizic4.jpg

Codul folosit pentru imaginea de mai sus

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

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.

Jurnal

21.05 - Adăugat un modul software nou, actualizat diagramele vechi și adăugat o poză nouă
20.05 - Actualizat pagina de proiect, adăugat milestone-ul hardware
02.05 - Creat pagina de proiect și adăugat documentația inițială

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/apredescu/statie_meteo.1684674333.txt.gz · Last modified: 2023/05/21 16:05 by cosmin.moscalu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0