Mündəricat:

Arduino Powered Toz Partiküllərini İzləmə Stansiyası: 4 Addım (Şəkillərlə)
Arduino Powered Toz Partiküllərini İzləmə Stansiyası: 4 Addım (Şəkillərlə)

Video: Arduino Powered Toz Partiküllərini İzləmə Stansiyası: 4 Addım (Şəkillərlə)

Video: Arduino Powered Toz Partiküllərini İzləmə Stansiyası: 4 Addım (Şəkillərlə)
Video: Самый НЕДОРОГОЙ токарный ЧПУ станок на Arduino /ProDIY 2024, Noyabr
Anonim
Arduino ilə işləyən toz hissəciklərini izləmə stansiyası
Arduino ilə işləyən toz hissəciklərini izləmə stansiyası

Evinizdəki tozun çirklənməsini 50 dollardan aşağı qiymətlərlə izləyən bir cihazdan olduqca sadə bir şəkildə İnternet qura bilərsiniz və toz həddindən artıq yüksək olduqda otağa havalandıra bilərsiniz və ya onu çöldə qoyub xəbərdar edə bilərsiniz. çirkli bir ərazidə yaşayırsınızsa, çölə çıxmaq təhlükəsizdir.

Bunu bir məktəb layihəsi olaraq etdim, buna görə MQTT mesajlarını alacaq və bildirişlər və ya e -poçtlar kimi sizə göndərəcək bir xidmət tapmağa kifayət qədər vaxtım yox idi.

Diqqət yetirin ki, sensorun daim işlək vəziyyətdə olması fanın ömrünü azaldacaq.

Addım 1: Lazım olan hissələr

Ehtiyac duyulan hissələr
Ehtiyac duyulan hissələr

Nə lazımdır

  • Arduino Uno
  • Arduino Ethernet qalxanı
  • Partikül maddə lazer sensoru (adətən eBay/aliexpress-də 10-30 ABŞ dollarına satılır)
  • DHT11 temperatur və rütubət sensoru (isteğe bağlı)
  • Çörək lövhəsi
  • Keçid kabelləri

Addım 2: Parçaları yığın

Parçaları yığın
Parçaları yığın

Birincisi, Arduino üzərindəki Ethernet ekranını bağlamalısınız

PM sensoru birdən çox telə malikdir, lakin bizə lazım olanlar VCC, GND, TX, RX -dir.

VCC və GND -ni sırasıyla çörək lövhəsindəki + və - -ə qoşun.

Arduino, RX və TX sancaqlarına malikdir, lakin müvafiq olaraq 2 və 3 pinlərdə RX və TX pinlərinin proqram emulyasiyasından istifadə edəcəyik. Sensorun RX -ni Arduino -nun TX -ə və sensorun TX -ni Arduino -nun RX -ə qoşun.

İstilik sensoru istifadə edəcəksinizsə, VCC və GND xətlərini Breadboardda + və - və pin xəttinə 7 bağlayın.

Addım 3: Kod

MQTT brokerini bir moruq pi və ya evdə həmişə olduğunuz bir kompüterə quraşdıra və ya Cloud MQTT kimi bir bulud MQTT xidmətindən istifadə edə bilərsiniz. Daha sonra MQTT webhooklarını hələ də dəstəkləmədikləri və evinizdəki toz səviyyəsinin çox yüksək olduğu zaman bildirişlər qurduqları üçün məlumatları bir IFTT webhook -a HTTP olaraq göndərən bir skript yaza bilərsiniz.

Arduino hava stansiyası

#daxil edin

#daxil edin
#daxil edin
#daxil edin
#daxil edin
#daxil edin

#daxil edin

#daxil edin
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPAddress ip (169, 169, 100, 98);
bayt mac = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
constint mqtt_port = 11895;
constchar *mqtt_user = "jhetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // Müştəri əlaqələri eyni əlaqə adına sahib ola bilməz
EthernetClient etClient;
PubSubClient müştəri (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
DHT ilə;
int pm1;
int pm2_5;
int pm10;
imzasız id;
// Fayl myFile;
String s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
əgər (Ethernet.begin (mac) == 0)
{
Serial.println ("Ethernet DHCP istifadə edərək konfiqurasiya edilə bilmədi");
// sabit ip addr ilə cəhd edin
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (geri zəng);
gecikmə (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 dəyəri;
char əvvəlkiValue;
əgər (! müştəri. bağlı ())
{
əgər (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("bağlı");
}
}
isə (pmSerial.available ()) {
dəyər = pmSerial.read ();
əgər ((indeks == 0 && dəyəri! = 0x42) || (indeks == 1 && dəyər! = 0x4d)) {
Serial.println ("Məlumat başlığı tapılmadı.");
qayıtmaq;
}
əgər (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
previousValue = dəyər;
}
elseif (indeks == 5) {
pm1 = 256 * əvvəlkiValue + dəyər;
kök ["pm1"] = abs (pm1);
}
elseif (indeks == 7) {
pm2_5 = 256 * əvvəlkiValue + dəyər;
kök ["pm2_5"] = abs (pm2_5);
}
elseif (indeks == 9) {
pm10 = 256 * əvvəlkiValue + dəyər;
kök ["pm10"] = abs (pm10);
}
elseif (indeks> 15) {
fasilə;
}
indeks ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
əgər (DHT.temperatur == -999 || DHT. nəmlik == -999) {
kök ["temperatur"] = "Yox";
kök ["rütubət"] = "Yox";
} başqa {
kök ["temperatur"] = DHT.temperatur;
kök ["rütubət"] = DHT. rütubət;
}
sendResults ();
id ++;
gecikmə (5000);
}
voidsendResults () {
// MQTT -də yayımlayın
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// serialda debug edin
root.printTo (Serial);
Serial.print ('\ n');
}
// Abunə olan mövzu (lar) a gələn mesajları idarə edir
voidcallback (char* mövzu, bayt* faydalı yük, imzasız uzunluq) {
}

GitHub tərəfindən ❤ ilə ev sahibliyi edilən rawair_quality.ino

Addım 4: Qutunu yığın

Qutunu yığın
Qutunu yığın
Qutunu yığın
Qutunu yığın
Qutunu yığın
Qutunu yığın

Ətrafımda yatdığım bir qutudan istifadə etdim və sensorun hava alması üçün bir delik açdım və kabellərin çıxması üçün bir çuxur kəsdim (bir az çox olsa da).

Sensoru qutuya bağlamaq üçün yapışqan yastıqlardan istifadə etdim, sensorun giriş çuxurunu qutudakı qazılmış çuxurla hizaladım.

Nəhayət, ethernet və elektrik kabellərini bağladım.

Tövsiyə: