Sadržaj:

Sistem De Monitorizare i Nivelului De Poluare (Arduino Uno): 9 koraka
Sistem De Monitorizare i Nivelului De Poluare (Arduino Uno): 9 koraka

Video: Sistem De Monitorizare i Nivelului De Poluare (Arduino Uno): 9 koraka

Video: Sistem De Monitorizare i Nivelului De Poluare (Arduino Uno): 9 koraka
Video: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, Juli
Anonim
Sistem De Monitorizare i Nivelului De Poluare (Arduino Uno)
Sistem De Monitorizare i Nivelului De Poluare (Arduino Uno)

Proiectul consta in realizarea unui dispozitiv ce afiseaza diferiti parametri de mediu (temperatura, umiditat, nivelul de čestice u atmosferi, cantitatea de compusi organici volatili) si trimite date date date o o platformi IoT undefined grafice realizate sulte prelucrari.

Korak 1: Komponente Necesare

  • senzor za temperaturu-eu koji se koristi za mjerenje temperature za DHT22, ako je potrebno precizno odrediti DHT11 za odredišnu temperaturnu vrijednost-https://www.ebay.com/itm/DS18B20-KY-015-DHT11-DHT …
  • senzor za umiditaciju - ukupan DHT22 (ako ste uključili i pokrenuli motor, plus briga o njemu koristi se ovaj senzor, desi puteve da promijenite temperaturu na pentru i umitirate)
  • senzor za čestice-am folosit DSM501A-https://www.ebay.com/itm/DSM501A-Dust-Allergic-Sm…
  • senzor pentru compusi organici volatili (VOC)-koristim MiCS5524-https://www.ebay.com/itm/MiCS5524-CO-Alcohol-VOC-…
  • ecran TFT-am 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 nevoie de unul mai bun-https://www.ebay.com/itm/ESP8266-ESP-01-Serial- WI…
  • mini ploča-https://www.ebay.com/itm/5-Color-Mini-Solderless-P…
  • o rezistenta 2kOhm
  • vatra-https://www.ebay.com/itm/Male-to-Female-Dupont-wir…

Korak 2: Testarea Si Configurarea Modului Wi-Fi

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

Ja sam realizirao shemu za više informacija, preluata din acest tutorial za njegu l-am urmat ca sa testez modulom.

Apoi, prilagodi acestui tutorial, mi-am creat i kontinuiranu platformu IoT ThingSpeak, mi-am creat i konfigurirajte polje i koristite i kodirajte din tutorial, am trimis cateva valori random si mi le-a pus pe grafic in acel field.

Korak 3: Testarea Senzorului DHT22

Conectand pin-ul moduli la pin-ul digital 7 al Arduino-ului, pin-ul + la 5V si pin-ul-la GND, realizuje se kod:

#include; // pt DHT

#define DHTPIN 7

#define DHTTYPE DHT22

float hum;

float temp;

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.begin (9600);

}

void loop () {{100} {101}

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

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

kašnjenje (500);

}

Korak 4: Testarea Senzorului De Particule

Am urmat acest tutorial, cu mentiunea ca ar trebui push and delay in setup de 60000 ms pentru ca senzorul sa aiba timp with incalzeasca si sa fie preciznosti.

Unitatea de masura care rezultati u urma calculelor prezentaciji u tutorial va fi.

Korak 5: Testarea Senzorului De Compusi Organici Volatili

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

int voc;

void setup () {

Serial.begin (9600);

}

void loop () {{100} {101}

voc = analogRead (A0);

voc = mapa (voc, 0, 700, 0, 500);

Serial.println (voc);

kašnjenje (500);

}

Nu am gasit nicaieri o formula exacta de calcul pentru a converti valoarea de la senzor in ppm (part pe milion) asa ca am testat cu etanol (alcohol 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.

Korak 6: Afisarea Acestor Date Pe Ecranul TFT

Folosindu-ma de acest tutorial, am realziat afisarea pe o scara colorata and valorilor. Pentru aceasta, trebuit sa adaptez acel cod din tutorial pentru ecranul meu, fiind prea lung pentru a il include aici, se poate parcurge in codul final din arhiva, unde o sa fie si bibliotecile necesare.

Korak 7: Prelucrari Pe ThingSpeak

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

La pasul 2, urmand tutorialul atasat, s-a putut observa cum se pot trimtie date pe 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 am trimis din arduino datele in campurile 1, 3, 5 si 7, iar in 2, 4, 6 si 8 ili prije prve faze prelukrarila sa skripturi MATLAB iz pe platforma.

Din bara de sus, de la App, la MATLAB Analysis, se apasa New, se poate alege un exemplu predefinit sau Custom, i uvodite kod de mai jos:

readChannelID = 482860;

temperatureFieldID = 1;

readAPIKey = 'KBPNYSUY0BLWE5H4';

[tempC, timeStamp] = thingSpeakRead (readChannelID, 'Fields', temperatureFieldID, 'NumMinutes', 5, 'ReadKey', readAPIKey); prikaz (tempC);

anyMissingValues = sum (isnan (tempC));

if sum (anyMissingValues)> 0

missingValueIndex = find (~ sum (isnan (tempC), 2));

cleantempC = tempC (nedostajeValueIndex,:);

cleanTimeStamps = timeStamp (missingValueIndex);

else

cleantempC = tempC;

cleanTimeStamps = vremenska oznaka;

kraj

avgTempC = srednja vrijednost (cleantempC);

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

writeChannelID = 483860; writeAPIKey = 'V2DR3QMRD7NXU8PD';

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

NU UITATI SA MODIFICATI ID-urile SI KLJUČ-urile penternu nu imi prelua date sa scrie pe kanala, multumesc frumos

Na mjestu 'NumMinutes' nalaze se folosi 'NumPoints'.

Sintaksa de la ThingSpeakRead i Napišite da li ste zaboravili da pogledate intre ghilimele urmeaza sa predstavljanjem apoi pui valoarea acelui parametra. Potražite savjet i priručnik za brigu o zdravlju uz pomoć u strašnim stranicama.

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 slični celor din campul 1. Dupa aceea, acestui vectori de valori ii este facuta media iar apoi aceasta medie konvertujte dinar Celzijusa u Farenhajt.

Codurile pentru celelalte campuri se odvaja od faktora cu diferenta ca fiecare o sa ia din campul relevantnim marimii si nu o sa mai faca acel calcul de razgovorie Celsius in Fahrenheit.

Upravljajte automatskim skriptama skripti za aplikacije, za aplikacije -> TimeControl -> New TimeControl ako se nalazite u optičkoj opciji, optimizirajte za brigu o le -am ales -u i otvorite je u pozajmici.

thingspeak.com/channels/483860

Korak 8: Imbinarea Tuturor Pasilor

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

Korak 9: Carcasa

Carcasa
Carcasa

Am luat un plastic de la Dedeman (Hobbycolor) si l-am taiat in forma de cutie si i-am decupat niste "ochiuri" pentru senzori. Initial arata ca in poza de mai sus:).

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

Preporučuje se: