Spisu treści:

Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 kroków
Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 kroków

Wideo: Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 kroków

Wideo: Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 kroków
Wideo: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, Listopad
Anonim
Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno)
Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno)

Proiectul consta in realizarea unui dispozitiv ce afiseaza diferiti parameters de mediu (temperatura, umiditate, nivelul de particule din atmosfera, cantitatea de compusi organici volatili) i trimitate aceste date la of platforma IoT unde sunt realizate pregrafice si al.

Krok 1: Wymagane składniki

  • 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)
  • czujnik cząstkowy - jestem na liście DSM501A -
  • czujnik lotnych związków organicznych (LZO) - korzystam z MiCS5524 -
  • ecran TFT - jestem folią ecranul TFT z kontrolerem 1.8" cu ST7735S -
  • Arduino Uno R3 -
  • moduł Wi-Fi - ESP8266 ESP-01, epoka ery cegiełki, w której nie ma nowej bułki - https://www.ebay.com/itm/ESP8266-ESP-01-Serial- WI…
  • mini płytka stykowa -
  • o restauracja 2kOhm
  • ogień -

Krok 2: Testarea Si Configurarea Modului Wi-Fi

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

Realizat schema de mai sus, preluata din ase tutorial pe opieki l-am urmat ca sa testez modulul.

Apoi, dostosuj samouczek acestui, jestem twórcą platformy IoT ThingSpeak, jestem twórcą i konfiguruję pole i korzystam z samouczka, jestem skreślony losowo w polu Acel.

Krok 3: Testarea Senzorului DHT22

Conectand pin-ul modulului la pin-ul digital 7 al Arduino-ului, pin-ul + la 5V si pin-ul - la GND, am realizat codul:

#włączać; //pt DHT

#zdefiniuj DHTPIN 7

#define DHTTYPE DHT22

pływać szum;

temp. pływaka;

DHT dht(DHTPIN, DHTTYPE);

pusta konfiguracja () {

Serial.początek(9600);

}

pusta pętla () {

temp = dht.odczytTemperatura();druk.seryjny(temp); Serial.println(" klasa C");

szum = dht.odczytWilgotność();Serial.print(szum); Serial.println("%");

opóźnienie (500);

}

Krok 4: Testarea Senzorului De Particule

Am urmat acest samouczek, cu mentiunea ca ar trebui pus un opóźnienia w konfiguracji z 60000 ms dla czujnika na aiba timp sa se incalzeasca si w fie precis.

Unitatea de masura care rezulta in urma calculelor prezentujemy w tutorialu va fi.

Krok 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 głos;

pusta konfiguracja () {

Serial.początek(9600);

}

pusta pętla () {

voc = odczyt analogowy(A0);

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

Serial.println(voc);

opóźnienie (500);

}

Nu am gasit nicaieri o formula correcta de calcul pentru a converti valoarea de 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.

Krok 6: Afisarea Acestor Data Pe Ecranul TFT

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

Krok 7: Prelucari Pe ThingSpeak

Prelucari Pe ThingSpeak
Prelucari Pe ThingSpeak
Prelucari Pe ThingSpeak
Prelucari Pe ThingSpeak

La Pasul 2, urmand tutorialul atasat, s-a putut obserwowany z dodatkami na platformie 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 jestem Trimis din arduino Datele w kampury 1, 3, 5 i 7, iar w 2, 4, 6 i 8 vor si sate prelukrarile facute de Scripturile MATLAB de pe platforma.

Din bara de sus, de la App, la MATLAB Analysis, se apasa New, se poate alege un exemplu predefinit sau Custom, proszę wprowadzić kod mai jos:

IDKanału odczytu = 482860;

IDPola temperatury = 1;

readAPIKey = 'KBPNYSUY0BLWE5H4';

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

wszelkieBrakująceWartości = suma(isnan(tempC));

jeśli suma (dowolne brakujące wartości) > 0

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

cleantempC = tempC (brak indeksu wartości,:);

cleanTimeStamps = TimeStamp(brakujący IndeksWartości);

w przeciwnym razie

cleantempC = tempC;

cleanTimeStamps = znacznik czasu;

kończyć się

średniaTempC = średnia(czystaTempC);

tempF = średnia tempC*9/5 + 32; display(tempF, 'Średnia temperatura w stopniach Fahrenheita');

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

In loc de 'NumMinutes' se poate folosi si 'NumPoints'.

Sintaxa de la ThingSpeakRead si Write to este może być intai se scrie intre ghilimele ce urmeaza introduci si apoi pui valoarea acelui parametr. Se poate consulta si manualul fiecarei comenzi care se afla la Help in dreapta paginii.

Acest cod preia datele din campul 1 si pentru cape 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 apoie ace este convertita din stopień Celsjusza w stopniu Fahrenheita.

Codurile pentru celelalte campuri se fac separat cu diferenta ca fiecare o sa ia din campul odpowiednie marimii si nu o sa se mai faca acel calcul de conversie din w stopniach Celsjusza w stopniach Fahrenheita.

Pentru i reguła automatyzuje skrypty, w których są aplikacje -> TimeControl -> New TimeControl, aby ustawić optymalny czas, optymalnie opiekować się piwem i garnkiem w tle.

thingspeak.com/channels/483860

Krok 8: Opiekun Imbinarea 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).

Krok 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. Początkowa arata ca in poza de mai sus:).

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

Zalecana: