This shows you the differences between two versions of the page.
pm:prj2023:adarmaz:detectare-stare-atmosferica [2023/05/24 16:58] elena.iordache1207 [Hardware Design] |
pm:prj2023:adarmaz:detectare-stare-atmosferica [2023/05/26 20:21] (current) elena.iordache1207 [Download] |
||
---|---|---|---|
Line 36: | Line 36: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Proiectul a fost realizat in ARDUINO IDE, am folosit: | ||
+ | * biblioteca Adafruit_BMP085 pentru a lua structura senzorului de presiune si temperatura BMP. | ||
+ | * biblioteca Wire pentru a putea comunica prin protocolul I2C. | ||
+ | * biblioteca Adafruit_Sensor pentru a avea o interfața comuna pentru senzorii de la Adafruit. | ||
+ | * biblioteca LiquidCrystal pentru a controla și comunica cu afișaje cu cristale lichide (LCD) | ||
- | <note tip> | + | Am folosit și un modul WiFi ESP8266 pentru a putea comunica cu Cloud-ul pus la dispoziție de ThingSpeak. Astfel, am conectat pinul de transmisie al modulului la pinul 2 al plăcuței Arduino și pinul de receptie al modulului la pinul 3. Am stocat în 4 variabile: |
- | Descrierea codului aplicaţiei (firmware): | + | * numele rețelei (SSID-ul) la care dispozitivul Arduino sau microcontrolerul se va conecta |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * parola pentru rețeaua WiFi |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * cheia API utilizată pentru autentificarea și accesul la serviciul cloud ThingSpeak |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * adresa serverului către care dispozitivul se va conecta pentru a trimite date către serviciul ThingSpeak |
- | * (etapa 3) surse şi funcţii implementate | + | * numărul portului utilizat pentru comunicarea cu serverul |
- | </note> | + | |
+ | In functia de setup initializez seriala și verific dacă adresa I2C a senzorului BME280 este cea corecta. În caz contrar, se afișează pe seriale un mesaj de eroare. De asemenea, verific și conexiunea cu modulul WiFi prin comanda AT, setez modul de funcționare al modulului în modul stație (AT+CWMODE=1) și trimit SSID-ul și parola pentru rețeaua de WiFi modulului pentru a putea realiza conexiunea. | ||
+ | |||
+ | În funcția de loop apelez cele 3 funcții spefice fiecărui senzor folosit: | ||
+ | * bme.readTemperature(), bme.readPressure(), bme.readAltitude, bme.readHumidity() pentru a citi valorile de temperatura, presiune, altitudine și umiditate primite de la senzorul BME280.Valoarea temperaturii este afișată atât pe seriala, cat și pe display-ul LCD, dar este și trimisa ca paramateru la platforma de Cloud. | ||
+ | * Pentru a citi valoarea senzorului de ploaie, in primul rând am configurat pinul A0 pentru citirea analogica și am setat tensiunea de referință la 5. Ulterior am selectat portul de intrare pe care se va face conversia, urmând sa se înceapă conversia. După ce procesul de conversie s-a terminat, rezultatul obținut este trimis afișat pe seriala și trimis ca parametru la platforma de Cloud. | ||
+ | * Pentru a citi valoarea modulului cu fotorezistor, am configurat pinul A1 pentru citirea analogica, iar rezultatul obținut este trimis afișat pe seriala și trimis ca parametru la platforma de Cloud. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Datele obtinute de la senzori sunt transmise printr-o serie de comenzi în Cloud-ul pus la dispoziție de ThingSpeak. Prin intermediul a 3 grafice se poate vizualiza în timp real evoluția valorilor pentru temperatura, intensitatea luminii și a precipitațiilor. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | {{:pm:prj2023:adarmaz:vizualizareDateTimpReal.jpeg?400}} |
+ | |||
+ | |||
+ | Am realizat și o analiza a datelor primite pentru a stabili starea atmosferică. Codul preia ultimele 10 valori din fiecare grafic menționat mai sus, realizează o medie a acestor valori și afișează pe ecran starea atmosferică în funcție rezultatele obținute. | ||
+ | |||
+ | {{:pm:prj2023:adarmaz:vizualizareDate.jpeg?300}} | ||
+ | |||
+ | Exista și posibilitatea de a vizualiza grafic evoluția în timp a datelor obținute: | ||
+ | |||
+ | |||
+ | {{:pm:prj2023:adarmaz:vizualizareConcluzii.jpeg?300}} | ||
+ | De asemenea, am realizat și o analiza comparativa cu un alt sistem meteo. Tot prin intermediul ThingSpeak-ului, am preluat un canal al unei stații meteo care afișează în timp real temperatura și umiditatea din București. Astfel, cu datele de la acest canal împreună cu datele primite de la senzorii mei am realizat un grafic pentru a se poate observa diferența între valorile temperaturii obținute în cele 2 cazuri. Datele nu sunt identice, dar sunt apropiate, întrucât senzorii folosiți în cadrul acestui proiect nu sunt cei mai performanti astfel ca pot apărea erori la preluarea datelor. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | A fost un proiect interesant de realizat, întrucât a venit cu numeroase provocări, din fiecare reușind sa învăț ceva nou. Am realizat ce înseamnă sa lucrezi în acest domeniu de embedded, începând cu citirea datasheet-ului fiecărei componente utilizate, pana la realizarea montajului și crearea codului din spate care sa ofere o logica partii hardware. Proiectului de fata i se pot adauga mai multe funcționalități, aceasta varianta fiind una de baza, dar folositoare pentru o dezvoltare ulterioară. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{:pm:prj2023:adarmaz:PM_alexa_iordache.zip}} |
- | 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**. | ||
- | </note> | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | * 13 martie - alegere tema proiect |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * 21 martie - achizitoarea unor componente |
- | </note> | + | * 18 mai - achizitoarea restului de componente |
+ | * 22 mai - finalizare hardware + software | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | * https://electrosome.com/interfacing-rain-sensor-arduino/ |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://startingelectronics.org/tutorials/arduino/modules/photo-resistor/ |
- | </note> | + | * https://randomnerdtutorials.com/bme280-sensor-arduino-pressure-temperature-humidity/ |
+ | * https://html.alldatasheet.com/html-pdf/1132060/BOSCH/BME280/3773/21/BME280.html | ||
+ | * https://www.youtube.com/watch?v=764bRMvGZR4 | ||
+ | * https://www.deviceplus.com/arduino/how-to-connect-your-arduino-to-wi-fi/ | ||
+ | * https://www.elprocus.com/esp8266-wi-fi-module/ | ||
+ | * https://ocw.cs.pub.ro/courses/pm | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||