Mundarija:

Arduino bilan ishlaydigan chang zarralarini nazorat qilish stantsiyasi: 4 qadam (rasmlar bilan)
Arduino bilan ishlaydigan chang zarralarini nazorat qilish stantsiyasi: 4 qadam (rasmlar bilan)

Video: Arduino bilan ishlaydigan chang zarralarini nazorat qilish stantsiyasi: 4 qadam (rasmlar bilan)

Video: Arduino bilan ishlaydigan chang zarralarini nazorat qilish stantsiyasi: 4 qadam (rasmlar bilan)
Video: Lesson 01 Arduino Boards | Robojax Arduino Step By Step Course 2024, Noyabr
Anonim
Arduino bilan ishlaydigan chang zarralarini kuzatish stantsiyasi
Arduino bilan ishlaydigan chang zarralarini kuzatish stantsiyasi

Siz o'zingizning uyingizdagi changning ifloslanishini 50 dollardan past narxda kuzatib boradigan va o'zingizning uyingizdagi changning ifloslanishini kuzatadigan moslamalarni o'z qo'llaringiz bilan qilishingiz mumkin, shuning uchun siz xonani ventilyatsiya qilishingiz mumkin. Agar siz ifloslangan hududda yashasangiz, tashqariga chiqish xavfsiz.

Men buni maktab loyihasi sifatida qildim, shuning uchun MQTT xabarlarini qabul qiladigan va ularni sizga bildirishnoma yoki elektron pochta kabi yuboradigan xizmatni topishga vaqtim yo'q edi.

Shuni ham yodda tutingki, datchikni har doim quvvatlantirib turish fanning ishlash muddatini qisqartiradi.

1 -qadam: kerakli qismlar

Kerakli qismlar
Kerakli qismlar

Sizga nima kerak

  • Arduino Uno
  • Arduino Ethernet qalqoni
  • Partikulyar modda lazer sensori (odatda eBay/aliexpress-da $ 10 dan $ 30 gacha)
  • DHT11 harorat va namlik sensori (ixtiyoriy)
  • Non paneli
  • Jumper kabellari

2 -qadam: qismlarni yig'ing

Qismlarni yig'ing
Qismlarni yig'ing

Birinchidan, Arduino -da chekilgan qalqonni ulashingiz kerak

PM sensorida bir nechta simlar bor, lekin bizga VCC, GND, TX, RX kerak.

VCC va GND ni mos ravishda non panelidagi + va - ga ulang.

Arduino -da RX va TX apparatlari bor, lekin biz 2 va 3 -pinlarda RX va TX pinlarini dasturiy taqlididan foydalanamiz. Sensorning RX -ni Arduino -ning TX -ga va sensorning TX -ni Arduino -ning RX -ga ulang.

Agar siz harorat sensori ishlatmoqchi bo'lsangiz, VCC va GND chiziqlarini Breadboard -dagi + va - ga va ma'lumotlar chizig'ini 7 -pinga ulang.

3 -qadam: Kod

Siz MQTT brokerini malina pi yoki har doim uyda bo'lgan kompyuterga o'rnatishingiz yoki Cloud MQTT kabi bulutli MQTT xizmatidan foydalanishingiz mumkin. Keyin siz IFTT veb -kancasiga ma'lumotlarni HTTP sifatida yuboradigan skript yozishingiz mumkin, chunki ular hali MQTT veb -kancalarini qo'llab -quvvatlamaydi va sizning uyingizda chang darajasi juda yuqori bo'lganda xabarnomalarni o'rnatadi.

Arduino havo stantsiyasi

#qo'shing
#qo'shing
#qo'shing
#qo'shing
#qo'shing
#qo'shing

#qo'shing

#qo'shing
#belgilashDHT11_PIN7
#ta'rifRX_PIN2
#defineTX_PIN3
IPAddress ip (169, 169, 100, 98);
baytli mak = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
doimiy mqtt_port = 11895;
constchar *mqtt_user = "jetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // Mijoz ulanishlari bir xil ulanish nomiga ega bo'la olmaydi
EthernetClient ethClient;
PubSubClient mijozi (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
DHT bilan;
int pm1;
int pm2_5;
int pm10;
imzosiz identifikator;
// Fayl myFile;
Satr s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
agar (Ethernet.begin (mac) == 0)
{
Serial.println ("Ethernetni DHCP yordamida sozlab bo'lmadi");
// sobit IP addr bilan urinish
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (qayta qo'ng'iroq qilish);
kechikish (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Serial.print ("rc =");
Serial.print (client.state ());
Serial.print ("\ n");
}
voidloop () {
intindex = 0;
char qiymati;
char oldingiValue;
agar (! client.connected ())
{
agar (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("ulangan");
}
}
while (pmSerial.available ()) {
qiymati = pmSerial.read ();
agar ((indeks == 0 && qiymati! = 0x42) || (indeks == 1 va& qiymati! = 0x4d)) {
Serial.println ("Ma'lumotlar sarlavhasini topib bo'lmadi.");
qaytish;
}
agar (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) {
oldingiValue = qiymat;
}
elseif (indeks == 5) {
pm1 = 256 * oldingiValue + qiymati;
ildiz ["pm1"] = abs (pm1);
}
elseif (indeks == 7) {
pm2_5 = 256 * oldingiValue + qiymati;
ildiz ["pm2_5"] = abs (pm2_5);
}
elseif (indeks == 9) {
pm10 = 256 * oldingiValue + qiymati;
ildiz ["pm10"] = abs (pm10);
}
elseif (indeks> 15) {
tanaffus;
}
indeks ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
agar (DHT harorati == -999 || DHT. namlik == -999) {
ildiz ["harorat"] = "Yo'q";
ildiz ["namlik"] = "Yo'q";
} boshqa {
ildiz ["harorat"] = DHT.harorat;
ildiz ["namlik"] = DHT. namlik;
}
sendResults ();
id ++;
kechikish (5000);
}
voidsendResults () {
// MQTT -da chop etish
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// ketma -ket disk raskadrovka
root.printTo (ketma -ket);
Serial.print ('\ n');
}
// Obuna bo'lgan mavzularga kelgan xabarlarni boshqaradi.
voidcallback (char* mavzu, bayt* yuk, imzosiz uzunlik) {
}

GitHub ❤ tomonidan joylashtirilgan rawair_quality.ino -ni ko'rish

4 -qadam: qutini yig'ing

Qutini yig'ing
Qutini yig'ing
Qutini yig'ing
Qutini yig'ing
Qutini yig'ing
Qutini yig'ing

Men shunchaki yotgan qutimni ishlatdim va sensordan havo olish uchun teshik ochdim va kabellar chiqib ketishi uchun teshik kesib tashladim (garchi u juda katta bo'lsa ham).

Sensorni qutiga mahkamlash uchun elim yostiqchalarini ishlatardim, sensorning kirish teshigini qutidagi burg'ulash teshigiga moslashtirdim.

Nihoyat, men chekilgan tarmoq va quvvat kabellarini uladim.

Tavsiya: