Mini-Weather

Autor

Petrica Ilie-Alex

Grupa: 331CC

Introducere

Proiectul este constituit dintr-o mini statie meteo ce transmite datele acumulate prin Wi-Fi catre un server web, mai precis pagina ThingSpeak, o pagina dedicata universului IoT ce dispune de utilitare specializate de analiza pentru procesarea datelor. Statia noastra va masura temperatura aerului, umiditatea din aer, presiunea atmosferica, intensitatea luminoasa, indice UV.

Descriere generală

Fiecare senzor va colecta datele si va trimite in mod analog catre Arduino. Acesta va face diferite transformari (daca este necesar) la nivel de calcul. Ulterior prin modulul de Wi-Fi se va face un PUT Request pe un anumit canal creat de noi catre pagina ThingSpeak. Se vor modela datele primite, date ce sunt retrimise conform noilor calcule la un interval de timp si se vor genera grafice pentru a vedea in timp real evolutia acestora.

Schema bloc

300

Hardware Design

Lista de componente:

  • Arduino UNO
  • Breadboard
  • Fire de conexiune
  • Rezistente
  • Senzor lumina
  • Senzor UV
  • Senzor presiune atmosferica
  • DHT22(temperatura + umiditate)
  • ESP8266(pentru Wi-Fi)

Schema electrica
500

Design
300

Software Design

Mediu dezvoltare + biblioteci third-party

Proiectul a fost realizat in ARDUINO IDE, am folosit:

  • biblioteca Adafruit_BMP085 pentru a lua structura senzorului de presiune si temperatura BMP.
  • biblioteca DHT pentru a lua structura senzorului de umiditate si temperatura DHT22.
  • SoftwareSerial pentru a ne folosi de o seriala pe alti pini digitali(2,3 in cazul meu).
Functii implementate

In functia de setup initializez seriala + software seriala pentru modulul wifi. Pornesc senzorii bmp + dht pentru a prelua datele. In plus verific comunicarea cu modulul wi-fi si il leg la internet (la hotspotul telefonului meu). Ma folosesc de functia sendCommand descrisa mai jos.
In functia de loop citesc datele de pe senzori dupa cum urmeaza:

  • pentru dht, apelez functiile readHumidity() si readTemperature() si salvez datele in niste variabile ce le voi folosi mai tarziu pentru a face request pentru pagina web.
  • pentru intensitatea luminii UV masor initial voltajul pe iesire cu formula 3.3(input) / referinta * nivel apoi un mapfloat ce imi trece valoarea din intervalul [0.99,2.9] in intervalul [0.0,15.0].
  • pentru intensitatea luminoasa calculul se efectueaza la unitatea de lumeni patrati (lux).

Ulterior pentru fiecare valoare citita se va forma un string ce va face un query de GET update pentru a introduce o noua valoare in chartul destinat.


Ca functii auxiliare avem:

  • sendCommand(String command, int maxTime, char readReplay[]) ⇒ comunicatia dintre arduino si modulul wi-fi, se trimite o comanda “command” ce are timp maxim de raspuns maxTime care in caz contrar esueaza(ia timeout). Se verifica daca in readReplay modulul wi-fi confirma daca s-a efectuat comanda ceruta.
  • averageAnalogRead(int pinToRead) ⇒ face 8 citiri de pe un pin si intoarce media.
  • mapfloat(float x, float in_min, float in_max, float out_min, float out_max) ⇒ pentru valoarea data x in invervalul in_min, in_max, aduce aceasta valoare in intervalul out_min, out_max.

Rezultate Obtinute

800 600

Concluzii

A fost un proiect foarte interesant de inceput in lumea embedded-ului. Am invatat cum se lucreaza in acest domeniu, incepand de la citirea fiecarui datasheet al fiecarui senzor / modul, apoi efectuarea montajului tinand cont de toate specificatiile si nu in ultimul rand schema electrica + cod(implicit debugging). Sunt foarte multumit de ce am reusit sa fac si sper ca pe viitor urmatorii studenti sa aprecieze acest proiect la fel de mult ca mine. Proiectul poate fi folosit fara probleme in orice incapere ce doreste sa i se fie monitorizate temperatura, umiditatea, indice uv, presiune in mod remote, vizualizand datele cerute in cadrul paginii web, deci consider ca proiectul are si o utilitate practica.

Download

Jurnal

  • 10.05.2022 Crearea pagina wiki
  • 22.05.2022 Completare Hardware Design + Software Design + Rezultate Obtinute wiki
  • 27.05.2022 Finalizare pagina wiki

Bibliografie/Resurse

pm/prj2022/sgherman/mini-weather.txt · Last modified: 2022/05/27 11:25 by ilie_alex.petrica
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