Turinys:

Sistema De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 žingsniai
Sistema De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 žingsniai

Video: Sistema De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 žingsniai

Video: Sistema De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 žingsniai
Video: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, Lapkritis
Anonim
Sistema De Monitorizare ir Nivelului De Poluare (Arduino Uno)
Sistema De Monitorizare ir Nivelului De Poluare (Arduino Uno)

Proiectul consta in realizarea unui dispozitiv ce afiseaza diferiti parametrai de mediu (temperatūra, drėkinimas, nivelul de partule din atmosfera, cantitatea de compusi organici volatili) ir trimite aceste date la o platforma IoT und sunt realizate grafice si alte prelucrari.

1 žingsnis: būtinas komponentas

  • temperatūros jutiklis yra naudojamas DHT22 temperatūros jutikliui ir DHT11 temperatūrai ištaisyti-https://www.ebay.com/itm/DS18B20-KY-015-DHT11-DHT …
  • sensacinis drėkinimas - iki DHT22 (acesta a fost un motiv in plus pentru care am utilizat acest senzor, desi puteam alege doi diferiti pentru temperatura and oumiditate)
  • senzor de Partule-esu foliozitas DSM501A-https://www.ebay.com/itm/DSM501A-Dust-Allergic-Sm…
  • senzor pentru compusi organici volatili (LOJ)-naudoju MiCS5524-https://www.ebay.com/itm/MiCS5524-CO-Alcohol-VOC-…
  • „ecran TFT“-tai „ECranul TFT“su 1,8 colio valdikliu ir 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…
  • „Wi-Fi“modulis-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 duonos lenta-https://www.ebay.com/itm/5-Color-Mini-Solderless-P…
  • o rezistenta de 2kOhm
  • gaisras-https://www.ebay.com/itm/Male-to-Female-Dupont-wir…

2 veiksmas: „Testarea Si Configurarea Modului Wi-Fi“

Išbandykite „Wi-Fi“modulio konfigūraciją
Išbandykite „Wi-Fi“modulio konfigūraciją

Am realizat schema de mai sus, preluata din acest tutorial pe care l-am urmat ca sa testez module.

„Apoi“, „acestui“mokymo programa, „I-ThingSpeak“, „mi-am creat un cont pe platforma“„IoT ThingSpeak“, „mi-am creat si“ir konfigūracija vienoje srityje, taip pat panaudojimo ir mokymo kodo pamoka, „am trimis cateva valori random“ir „my trimis cateva valori random si mi le-a pus pe grafic in acel field“.

3 žingsnis: „Testarea Senzorului DHT22“

„Conectand pin-ul“modulis su „pin-ul digital“7 al Arduino-ului, pin-ul + la 5V si pin-ul-la GND, aš realizuoju kodą:

#įtraukti; // pt DHT

#define DHTPIN 7

#define DHTTYPE DHT22

plūduriuojantis dūzgimas;

plūdės temperatūra;

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.begin (9600);

}

void loop () {

temp = dht.readTemperature (); Serial.print (temp); Serial.println („C klasė“);

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

vėlavimas (500);

}

4 žingsnis: „Testarea Senzorului De Particule“

Am urmat acest tutorial, cu mentiunea ca ar trebui pus un delay in setup de 60000 ms pentru ca senzorul sa aiba timp sa se incalzeasca si sa tiksliai.

Unitatea de masura care rezulta in urma calculelor presentate in tutorial va fi.

5 žingsnis: „Testarea Senzorului De Compusi Organici Volatili“

Aš turiu prijungti pin-ul + al modulį 5V, pin-ul-la GND ir pin-ul A0 la A0 de la Arduino.

int vok;

void setup () {

Serial.begin (9600);

}

void loop () {

voc = analogRead (A0);

vok = žemėlapis (vok, 0, 700, 0, 500);

Serial.println (vok);

vėlavimas (500);

}

Nu am gasit nicaieri arba formulė tiksliai apskaičiuojama pentru a konverte valoarea de la senzor in ppm (parti pe miljion) asa ca am testat cu etanol (alcool etilic) si valoarea maxima am aproximat-o la maximul pe care senzorul il poate others la etanol (adica 500), de aceea am facut acea mapare.

6 žingsnis. Afisarea Acestor Data Pe Ecranul TFT

„Folosindu-ma de acest“pamoka, reali afisarea pe o scara colorata ir valorilor. Pentru aceasta, trebuit su adaptez acel cod din tutorial pentru ecranul meu, fiind prea plaučių pentru a il include aici, se poate parcurge in codul final din arhiva, unde o sa fie si bibliotecile vajalik.

7 žingsnis: „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 examplelu 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 vor si afisate prelucrarile facute de scripturile MATLAB de pe platforma.

Din bara de sus, de la App, la MATLAB Analysis, se apasa New, se poate alege un examplelu predefinit sau Custom, si Introduceti codul de mai jos:

readChannelID = 482860;

temperatūraFieldID = 1;

readAPIKey = 'KBPNYSUY0BLWE5H4';

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

anyMissingValues = suma (isnan (tempC));

jei suma (anyMissingValues)> 0

missingValueIndex = rasti (~ suma (isnan (tempC), 2));

cleantempC = tempC (missingValueIndex,:);

cleanTimeStamps = timeStamp (missingValueIndex);

Kitas

cleantempC = tempC;

cleanTimeStamps = laiko žymė;

galas

avgTempC = vidurkis (cleantempC);

tempF = avgTempC*9/5 + 32; ekranas (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-urile pentru a nu imi prelua date sau scrie pe canal, multumesc frumos

„NumMinutes“vietoje rasite „NumPoints“.

Sintaxa de la ThingSpeakRead si Parašykite apie tai, kas yra intai se scrie intre ghilimele ce urmeaza sa Introduci si apoi pui valoarea acelui parametrai. Konsultuokitės su rankiniu vadovu, atlikite priežiūros paslaugas ir padėkite pagalbą.

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 pagal Celsijaus laipsnį pagal Farenheito laipsnį.

Codurile pentru celelalte campuri se fac separat cu diferenta ca fiecare o sa ia din campul relevant marimii si nu o sa se mai faca acel calcul de conversie din Celsius in Fahrenheit.

Paleiskite automatinį aceste scenarijų, kuriame yra „Apps“-> „TimeControl“-> Naujas „TimeControl“, kuriame yra optiunile dorite, optiunile pe care le -am ales eu se pot vedea in poza de mai sus.

thingspeak.com/channels/483860

8 žingsnis: Imbinarea Tutoror Pasilor

M-am folosit in codul final de "millis ()" ir variabile care retin acesti timpi pentru and 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).

9 žingsnis: „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. Pradinė arata ca in poza de mai sus:).

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

Rekomenduojamas: