Mundarija:
Video: Arduino bilan ishlaydigan chang zarralarini nazorat qilish stantsiyasi: 4 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
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
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
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
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:
Raspberry Pi yopiq iqlimni nazorat qilish va nazorat qilish tizimi: 6 qadam
Raspberry Pi yopiq iqlimni nazorat qilish va nazorat qilish tizimi: Odamlar o'z uylarida qulay bo'lishni xohlashadi. Bizning hududimizdagi iqlim o'zimizga mos kelmasligi uchun, biz sog'lom ichki muhitni saqlash uchun ko'plab asboblardan foydalanamiz: isitgich, havo sovutgichi, namlagich, namlagich, tozalash moslamasi va boshqalar. Hozirgi kunda bu
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'l bilan amalga oshirildi: 8 qadam (rasmlar bilan)
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'lga qo'yildi: 1 yil davomida 2 xil joyda muvaffaqiyatli ishlaganimdan so'ng, men quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasining loyiha rejalari bilan bo'lishaman va uning qanday qilib uzoq vaqt yashay oladigan tizimga aylanganini tushuntiraman. quyosh energiyasidan o'tgan davrlar. Agar ergashsangiz
L293D bilan haroratni nazorat qilish tizimi: 19 qadam (rasmlar bilan)
L293D bilan haroratni nazorat qilish tizimi: Harorat sezgir boshqariladigan tizim - bu atrof -muhit bilan bog'liq bo'lgan ma'lum bir sohada ob'ektning haroratini boshqaruvchi va ushlab turuvchi qurilma. Ushbu turdagi boshqariladigan tizimlar asosan AC (Konditsionerlar), Refrig
Elektr tezligini nazorat qilish uchun alternativ nazorat signallari generatori (ESC): 7 qadam
Elektr tezligini boshqarish uchun alternativ nazorat signallari generatori (ESC): Bir muncha vaqt oldin men YouTube kanalimda shamol turbinini yasashni ko'rsatgan videoni (https://www.youtube.com/watch?v=-4sblF1GY1E) e'lon qilganman. cho'tkasi bo'lmagan shahar motoridan. Men videoni ispan tilida qildim va bu dvigatel unga berilganligini tushuntirdi
Arduino va PWM muxlislari bilan haroratni nazorat qilish: 6 qadam (rasmlar bilan)
Arduino va PWM muxlislari bilan haroratni nazorat qilish: Arduino -da PID bilan haroratni nazorat qilish va DIY serveri/tarmoqli tokchani sovutish uchun PWM fanatlari Bir necha hafta oldin men tarmoq qurilmalari va bir nechta serverlar bilan rack o'rnatishim kerak edi. Rack yopiq garajga joylashtirilgan, Shunday qilib, qish va harorat oralig'ida