Përmbajtje:

Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 hapa
Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 hapa

Video: Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 hapa

Video: Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 hapa
Video: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, Korrik
Anonim
Sistemi De Monitorizare a Nivelului De Poluare (Arduino Uno)
Sistemi De Monitorizare a Nivelului De Poluare (Arduino Uno)

Proiectul consta in realizarea unui dispozitiv ce afiseaza diferiti parametrii de mediu (temperatura, umiditate, nivelul de particule din atmosfera, cantitatea de compusi organici volatili) si trimite aceste date la o platforma IoT unde sunt realizon grafice si alte prelucrari.

Hapi 1: Komponenti Necesare

  • senzor de temperatura- eu am utilizat senzorul de temperatura DHT22 pentru ca este mai precis decat DHT11 dar destul de ieftin fata de alti senzori de temperatura-https://www.ebay.com/itm/DS18B20-KY-015-DHT11-DHT …
  • senzor de umiditate - tot DHT22 (acesta a fost un motiv in plus pentru care am utilizat acest senzor, desi puteam alege doi diferiti pentru temperatura si umiditate)
  • senzor de particule-am folosit DSM501A-https://www.ebay.com/itm/DSM501A-Dust-Allergic-Sm…
  • senzor pentru compusi organici volatili (VOC)-jam në përdorim MiCS5524-https://www.ebay.com/itm/MiCS5524-CO-Alcohol-VOC-…
  • ecran TFT-jam folosit ecranul TFT de 1.8 "cu controller-ul ST7735S-https://www.ebay.com/itm/1-8-inch-1-8-TFT-LCD-Dis…
  • Arduino Uno R3-https://www.ebay.com/itm/ATmega328P-CH340G-UNO-R3…
  • modul Wi-Fi-ESP8266 ESP-01, l-am folosit pe acesta deoarece era cel mai ieftin si nu este nevoie de unul mai bun-https://www.ebay.com/itm/ESP8266-ESP-01-Serial- WI…
  • mini breadboard-https://www.ebay.com/itm/5-Color-Mini-Solderless-P…
  • o rezistenta de 2kOhm
  • zjarr-https://www.ebay.com/itm/Male-to-Female-Dupont-wir…

Hapi 2: Testarea Si Configurarea Modului Wi-Fi

Testarea Si Configurarea Modului Wi-Fi
Testarea Si Configurarea Modului Wi-Fi

Unë e kuptoj skemën tuaj, para se të mësoni më tutje për kujdesin tuaj të parë në modul.

Për më tepër, konform kontekstit mësimor, unë jam duke krijuar një platformë IoT ThingSpeak, unë jam krijuar për të konfiguruar fushën e përdorimit të mësimeve të tjera, jam gati të kaloj rastësisht si mi le-a pus pe grafic në fushën acel.

Hapi 3: Testarea Senzorului DHT22

Lidhur me pin-ul modulului la pin-ul digital 7 nga Arduino-ului, pin-ul + la 5V si pin-ul-la GND, jam realizuar në kod:

#përfshi; // pt DHT

#përcaktoni DHTPIN 7

#përcaktoni DHTTYPE DHT22

gumëzhima notuese;

temperatura e notimit;

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.filloj (9600);

}

lak void () {

temp = dht.readTemperature (); Serial.print (temp); Serial.println ("klasa C");

hum = dht.readHumidity (); Serial.print (hum); Serial.println (" %");

vonesë (500);

}

Hapi 4: Testarea Senzorului De Particule

Unë jam duke mësuar, mund të mendoj se do të vonohem në konfigurimin e 60000 ms për një kohë të shkurtër në një kohë të caktuar, duke përfshirë një saktësi të caktuar.

Unitata e masurës së kujdesit rezulton në urma calculelor prezentate në tutorial va fi.

Hapi 5: Testarea Senzorului De Compusi Organici Volatili

Am conectat pin-ul + al modulului la 5V, pin-ul-la GND si pin-ul A0 la A0 de la Arduino.

int voc;

void setup () {

Serial.filloj (9600);

}

lak void () {

voc = analogRead (A0);

voc = hartë (voc, 0, 700, 0, 500);

Serial.println (voc);

vonesë (500);

}

Nu am gasit nicaieri o formula e saktë e llogaritjes së pentru a converti valoarea la la senzor in ppm (parti pe milion) asa ca am testat cu etanol (alcool etilic) si valoarea maxima am aproximat-o la maximul pe care senzorul il poate citi la etanol (adica 500), de aceea am facut acea mapare.

Hapi 6: Afisarea Acestor Date Pe Ecranul TFT

Folosindu-ma de acest tutorial, jam realziat afisarea pe o scara colorata a valorilor. Pentru aceasta, a trebuit sa adaptez acel cod din tutorial pentru ecranul meu, para se të përfshihen në mushkëritë e tjera përfshijnë aici, se poate parcurge in codul final din arhiva, dhe nëse është e nevojshme për bibliotekë të nevojshëm.

Hapi 7: Prelucrari Pe ThingSpeak

Prelucrari Pe ThingSpeak
Prelucrari Pe ThingSpeak
Prelucrari Pe ThingSpeak
Prelucrari Pe ThingSpeak

Pas 2, urmand tutorialul atasat, s-a putut observa me një pot trimtie date me platforma de la Arduino.

Acum, o sa ne folosim de acele date pentru a le putea prelucra, de exemplu eu am facut media valorilor din jumatate in jumatate de ora.

Asa ca jam trimdu din arduino datele në kampurile 1, 3, 5 si 7, në 2, 4, 6 si 8 vjet më parë ose më parë për të shkruar paragrafin MATLAB të platformës.

Din bara de sus, de la App, la MATLAB Analysis, se apasa New, se poate alege un exemplu predefinit sau Custom, si prezantim i kodit të mai jos:

readChannelID = 482860;

temperatureFieldID = 1;

readAPIKey = 'KBPNYSUY0BLWE5H4';

[tempC, timeStamp] = thingSpeakRead (lexoChannelID, 'Fushat', temperatureFieldID, 'NumMinutes', 5, 'ReadKey', readAPIKey); ekran (tempC);

anyMissingValues = shuma (isnan (tempC));

nëse shuma (anyMissingValues)> 0

missingValueIndex = gjej (~ shuma (isnan (tempC), 2));

cleantempC = tempC (missingValueIndex,:);

cleanTimeStamps = timeStamp (mungonValueIndex);

tjeter

cleantempC = tempC;

cleanTimeStamps = timeStamp;

fund

avgTempC = mesatarja (cleantempC);

tempF = avgTempC*9/5 + 32; ekran (tempF, 'Temperatura medie in Fahrenheit');

writeChannelID = 483860; writeAPIKey = 'V2DR3QMRD7NXU8PD';

thingSpeakWrite (writeChannelID, 'Fields', 2, 'Values', tempF, 'writekey', writeAPIKey);

NU UITATI SA MODIFICATI ID-urile SI KEY-key-urile pentru a nu imi prelua date sau scrie pe kanal, frume të shumta

Në vendndodhjen 'NumMinutes' se poate folosi si 'NumPoints'.

Sintaxa de la ThingSpeakRead si Shkruaj për të kuptuar se si të hyjë në të dhënat e tua të njohura për hyrjen në apoi pui valoarea acelui parametru. Konsultohuni me manualin e të dhënave të kujdesit për ndihmën tuaj në ndihmë në hartimin e faqeve.

Acest cod preia datele din campul 1 si pentru ca pe langa ce a primit mai sunt si niste NaN-uri, acel if le aproximeaza la valori similare celor din campul 1. Dupa aceea, acestui vectori de valori ii este facuta media iar apoi aceasta medie este convertita din grade Celsius në klasën Fahrenheit.

Codurile pentru celelalte campuri se fac separat cu diferenta ca fiecare o sa ia din campul marimii relevante si nu o sa se mai faca acal calcul de conversie din Celsius në Fahrenheit.

Shkruani një shkrim automatik të shkrimit, duke përdorur Aplikacionet -> TimeControl -> New TimeControl do të zgjedhë optiunile dorite, optiunile pe care le -am ales eu se pot vedea in poza de mai sus.

thingspeak.com/channels/483860

Hapi 8: Imbinarea Tuturor Pasilor

M-am folosit in codul final de "millis ()" si variabile care retin acesti timpi pentru a ordona afisajele si trimiterile la server (trebuie o data cam pe la 25 de secunde sa se trimita ceva, mai repede nu are rost pentru ca oricum platforma nu le-ar primi).

Hapi 9: Carcasa

Carcasa
Carcasa

Am luat un plastic de la Dedeman (Hobbycolor) si l-am taiat në formë de cutie si i-am decupat niste "ochiuri" pentru senzori. Arata fillestare ca në poza de mai sus:).

Eventual se poate scapa de breadboard si sa se aranjeze mult mai frumos, eu deocamdata l-am lasat asa.

Recommended: