جدول المحتويات:

Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 خطوات
Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 خطوات

فيديو: Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 خطوات

فيديو: Sistem De Monitorizare a Nivelului De Poluare (Arduino Uno): 9 خطوات
فيديو: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, شهر نوفمبر
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 parametrii de mediu (temoditura، umiditate، nivelul de partule din atmosfera، cantitatea de compusi organici volatili) مع تاريخ إنشاء منصة إنترنت الأشياء لمطالبة تنفيذ الرسم التخطيطي.

الخطوة 1: Componente Necesare

  • senzor de temperatura- eu am utilizat senzorul de tematura DHT22 pentru ca este mai precis decat DHT11 dar destul de ieftin fata de alti senzori de tematura - 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 useizat acest senzor، desi puteam alege doi diferiti pentru temperature si umiditate)
  • senzor de partule - am folosit DSM501A - https://www.ebay.com/itm/DSM501A-Dust-Allergic-Sm …
  • senzor pentru compusi organici volatili (VOC) - am utilizat MiCS5524 -
  • ecran TFT - am folosit ecranul TFT de 1.8 "وحدة تحكم cu-ul ST7735S -
  • Arduino Uno R3 -
  • modul Wi-Fi - ESP8266 ESP-01 ، l-am folosit pe acesta deoarece age cel mai ieftin si nu este nevoie de unul mai bun - https://www.ebay.com/itm/ESP8266-ESP-01-Serial- WI …
  • لوحة توصيل صغيرة -
  • o rezistenta de 2kOhm
  • حريق -

الخطوة 2: Testarea Si Configurarea Modului Wi-Fi

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

Am realizat schema de mai sus، preluata din acest تعليمي pe care l-am urmat ca sa testez modulul.

Apoi ، وهو برنامج تعليمي متوافق مع برنامج acestui ، و mi-am create un cont pe platforma IoT ThingSpeak ، و mi-am Creat si configurat un field si useizand codul din التعليمي ، و am trimis cateva valori عشوائي si mi le-a pe grafic في مجال acel.

الخطوة 3: Testarea Senzorului DHT22

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

#يشمل ؛ // pt DHT

#define DHTPIN 7

#define DHTTYPE DHT22

همهمة عائمة

تعويم درجة الحرارة

DHT dht (DHTPIN ، DHTTYPE) ؛

الإعداد باطل() {

Serial.begin (9600) ؛

}

حلقة فارغة(){

temp = dht.readTemperature () ؛ Serial.print (temp) ؛ Serial.println ("الصف C") ؛

hum = dht.readHumidity () ؛ Serial.print (hum) ؛ Serial.println ("٪") ؛

تأخير (500) ؛

}

الخطوة 4: Testarea Senzorului De Particule

أنا urmat acest تعليمي ، cu mentiunea ca ar trebui pus un delay in setup de 60000 ms pentru ca senzorul sa aiba timp sa se incalzeasca si fie precis.

Unitatea de masura care rezulta in urma calculel أو prezentate في البرنامج التعليمي va fi.

الخطوة 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

الإعداد باطل() {

Serial.begin (9600) ؛

}

حلقة فارغة() {

voc = analogRead (A0) ؛

voc = map (voc، 0، 700، 0، 500) ؛

Serial.println (voc) ؛

تأخير (500) ؛

}

نو آم غازيت nicaieri o الصيغة الدقيقة من حساب بينترو محول فاليو دي لا سينسور في جزء في المليون (جزء من مليون) آسا كا آم تيستات كو إيتانول (ألكول إيليك) سي فالواريا ماكسيما آبروكسيمات-أو لا ماكسيمول بي كير سينزورول إيل بويت لا إتانول (adica 500)، de aceea am facut acea mapare.

الخطوة 6: Afisarea Acestor Date Pe Ecranul TFT

Folosindu-ma de acest تعليمي ، am realziat afisarea pe o scara colorata a valorilor. Pentru aceasta ، وهو trebuit sa Adaptez acel cod din البرنامج التعليمي pentru ecranul meu ، يشمل الرئة prea pentru a il aici ، se poate parcurge في codul final din arhiva ، unde o sa fie si bibliotecile necesare.

الخطوة 7: Prelucrari Pe ThingSpeak

Prelucrari Pe Thing يتحدث
Prelucrari Pe Thing يتحدث
Prelucrari Pe Thing يتحدث
Prelucrari Pe Thing يتحدث

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 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 exemplu preefinit sau Custom، si introduceti codul de mai jos:

readChannelID = 482860 ،

درجة حرارة الحقل معرف = 1 ؛

readAPIKey = 'KBPNYSUY0BLWE5H4' ،

[tempC، timeStamp] = thingSpeakRead (readChannelID، 'Fields'، temperatureFieldID، 'NumMinutes'، 5، 'ReadKey'، readAPIKey) ؛ عرض (درجة الحرارة) ؛

anyMissingValues = sum (isnan (tempC)) ؛

إذا كان المجموع (anyMissingValues)> 0

missingValueIndex = find (~ sum (isnan (tempC)، 2)) ؛

cleantempC = tempC (missingValueIndex،:) ؛

cleanTimeStamps = timeStamp (missingValueIndex) ؛

آخر

cleantempC = درجة الحرارة ؛

cleanTimeStamps = طابع زمني ؛

نهاية

avgTempC = متوسط (cleantempC) ،

tempF = avgTempC * 9/5 + 32 ؛ العرض (tempF ، "متوسط درجة الحرارة بالفهرنهايت") ؛

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

في loc de "NumMinutes" حدِّد مجلدات "NumPoints".

Sintaxa de la ThingSpeakRead si اكتب este ca mai intai se scrie intre ghilimele ce urmeaza sa produci si apoi pui valoarea acelui parametru. يرجى الاستشارة في دليل الرعاية الصحية المقدمة للمساعدة في حل المشكلة.

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 في درجة فهرنهايت.

Codurile pentru celelalte campuri حد منفصل cu diferenta ca fiecare o sa ia din campul ذو الصلة marimii si nu o sa se mai faca acel calcul de convertie din celsius in Fahrenheit.

Pentru a rula automat aceste script-uri، de la Apps -> TimeControl -> New TimeControl si se seteaza optiunile dorite، optiunile pe care le-am ales eu se pot vedea in poza de mai sus.

thingspeak.com/channels/483860

الخطوة 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).

الخطوة 9: كاركاسا

كاركاسا
كاركاسا

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

في نهاية المطاف se poate scapa de breadboard si sa se aranjeze mult mai frumos، eu deocamdata l-am lasat asa.

موصى به: