Aparat meteo cu predicție de ploaie
Introducere
Autor: Mihnea Bogdan Zarojanu
Grupa: 332CD
Scopul principal al proiectului, precum sugerează și numele acestuia, este de a monitoriza parametrii meteorologici, pe care să îi afișeze pe un ecran. În plus, folosind elemente simple de predicție, va putea reda șansa de ploaie și furtună.
Idea originală de la care am pornit a fost conceptul de prognoză meteo bazată pe presiunea aerului
1), mai exact:
Schimbarea relativ rapidă a presiunii (pe parcursul a mai multor ore) poate determina o schimbare a vremii
2).
O cădere semnificativă înseamnă o șansă considerabilă de ploaie.
O urcare semnificativă poate precede o îmbunătățire a vremii, mai exact terminarea precipitațiilor și dispariția norilor de ploaie.
Utilitatea acestui proiect provine din a putea afla informații curente despre vreme: temperatura, umiditatea şi şansele de ploaie şi furtună.
Descriere generală
Utilizarea aparatului

Odată ce aparatul este pornit, utilizatorul va putea introduce ora, apăsând butonul roșu pentru a alege cifra potrivită, și pe cel albastru pentru a trece la cifra următoare.
După ce a introdus ora, aparatul va afișa timpul curent, temperatura și umiditatea.
Cu butonul albastru se poate cicla printre comenzi, iar cu cel roșu se poate activa comanda curentă.
Fotografie cu circuitul aparatului
Hardware Design
Listă de componente
Arduino Uno R3 (ATmega328P)
OLED 0.96” SSD1306 (128x64px)
BME280 senzor temperatură, presiune și umiditate
Modul Micro SD
Card Micro SD 32GB
2x Rezistențe 5.6KΩ
2x Butoane
Fire
Schemă electrică
Software Design
Mediu de dezvoltare: PlatformIO
Biblioteci folosite: avr/io.h, avr/interrupt.h, stdio.h.
-
Funcții:
în src/main.c, init_all() inițiază toate modulele necesare pentru rulare, iar Set_time() este funcția inițială de setare a timpului;
în lib, directoarele usart, spi, respectiv twi conțin funcțiile pentru comunicarea respectivă;
folder-ul timer și button_interrupt sunt pentru numărarea milisecundelor și pentru butoane;
sd_reader, ssd1306 și bme280 sunt pentru folosirea cititorului de microsd, a ecranului lcd și a senzorului;
directorul miscellaneous conține fișierele pentru afișarea informațiilor pe lcd și preluarea datelor meteo de la senzor.
Calcularea șansei de ploaie se face astfel3):
șansă foarte mică: presiunea aerului este peste 1023 mb și crește, e constantă, sau scade încet (scădere sub 10 mb într-o oră)
șansă mică: presiunea aerului este peste 1009 mb și crește sau e constantă
șansă medie: presiune între 1009 mb și 1023 mb și care scade încet (scădere sub 10 mb într-o oră)
șansă mare (posibilă furtună): presiune sub 1023 mb și care scade rapid (peste 10 mb într-o oră)
Cod sursă
Jurnal
28 aprilie: am comandat Arduino Uno, piese pentru circuit, ecran lcd și senzor;
30 aprilie: a ajuns Arduino, piesele şi ecranul;
1 mai: am implementat comunicația USART între calculator și placa Arduino;
2-3 mai: am construit circuitul pentru lcd și butoane, și am făcut să meargă afișarea;
5 mai: a venit senzorul de temperatură, umiditate şi presiune atmosferică;
7 mai: am dat comanda pentru cititor microsd;
8 mai: a venit cititorul microsd;
16 mai: am adaptat implementarea SPI din laborator pentru cititor;
17-18 mai: am încercat să fac senzorul să funcționeze, însă fără succes;
23 mai: am terminat implementarea afișării tuturor informațiilor pe ecranul lcd;
24 mai: am făcut poza la aparat și am filmat un videoclip cu utilizarea acestuia;
Bibliografie și Resurse
Resurse Hardware
Resurse Software
Surse 3rd party pentru module