Statie Meteo - Dumitru Vlad Alexandru
Introducere
Proiectul ales consta intr-o statie de monitorizare meteo. Sistemul capteaza date atat online (OpenWeather), cat si fizic (senzor de temperatura). Astfel se vor afisa (pe un LCD) detalii precum temperatura si umiditatea sprecifice localitatii si pozitiei curente (interior / exterior). Acest sitem are scopul de a usura accesul utilizatorului la datele meteo de interes (locale).
Descriere generală
Prin intermediul unui desktop/laptop conectat la Arduino se poate schimba/seta localitatea dorita si reteaua Wi-fi. Odata setate, este nevoie de o sursa separata de alimentare. Modulul Wi-fi CH340 cere (si primeste) date de la openweathermap.org la intervale de cateva minute si trimite informatiile primite catre Arduino. Senzorul DHT11 capteaza date similare la intervale de cateva secunde si trimite informatiile catre Arduino. Toate datele se vor afisa pe LCD (16×2) separat (localitate/local).
Schema bloc
Hardware Design
Lista de piese
Scheme hardware
Software Design
Mediu de dezvoltare
Librarii si surse 3rd-party
Surse si functii implementate
ESP8266.ino
-
Realizeaza conectarea la reteaua WiFi si asteapta o conexiune stabila.
httpGETRequest(const char* path)
Realizeaza conexiunea HTTP catre path dat ca argument.
Realizeaza cerere HTTP de tip GET si returneaza rezultatul.
-
Construieste pachetul de date - delimitat de caracterele < si >.
Trimite pachetul catre dispozitivul conectat, prin interfata seriala USART.
-
Seteaza BAUD rate-ul.
Apeleaza functia connectToWiFi().
-
La intervale de 10 minute, este apelata functia httpGETRequest(const char* path).
Se prelucreaza rezultatul (intors sub forma de JSON) si se inregistreaza temperatura si umiditatea curente.
In cazul in care conexiunea WiFi a fost intrerupta, se va incerca reconectarea.
Datele inregistrate se trimit constant, actualizandu-se doar dupa intervalul de 10 minute.
Arduino.ino
printLCD(int temp, int humidity, int location)
Scrie pe LCD datele primite ca argument (impreuna cu simboluri expresive).
-
Inregistreaza datele citite de catre senzorul DHT.
Apeleza functia printLCD(int temp, int humidity, int location) cu datele citite.
-
Daca exista date disponibile pentru a fi citite, se vor inregistra, prelucra si afisa (asemenea DHT).
-
Seteaza BAUD rate-ul.
Initializeaza LCD-ul.
Construieste simbolurile folosite in afisare.
-
Apeleaza functiile printDHT() si printWiFi() cu o pauza de 5 secunde intre ele.
Rezultate Obţinute
Concluzii
Proiectul poate deveni chiar folositor daca i se imbunatateste portabilitatea + folosirea unui cadru pentru piese.
A fost interesant procesul de realizare a proiectului - de la alegerea pieselor la scrierea codului.
Nu cred ca voi refolosi piesele utilizate.
Download
Bibliografie/Resurse
Resurse Software / Hardware