Агуулгын хүснэгт:

Arduino хөдөлгүүртэй тоосны тоосонцорыг хянах станц: 4 алхам (зурагтай)
Arduino хөдөлгүүртэй тоосны тоосонцорыг хянах станц: 4 алхам (зурагтай)

Видео: Arduino хөдөлгүүртэй тоосны тоосонцорыг хянах станц: 4 алхам (зурагтай)

Видео: Arduino хөдөлгүүртэй тоосны тоосонцорыг хянах станц: 4 алхам (зурагтай)
Видео: ESP8266 Diesel Injector Purging Station - PWM NodeMCU pump flow Control (Subtittled) 2024, Арваннэгдүгээр
Anonim
Arduino хөдөлгүүртэй тоосны тоосонцорыг хянах станц
Arduino хөдөлгүүртэй тоосны тоосонцорыг хянах станц

Та гэрийнхээ тоосны бохирдлыг 50 доллараас бага үнээр хянадаг төхөөрөмжүүдийн DIY интернэтийг хялбархан бүтээж, тоосны хэмжээ хэт өндөр байх үед өрөөндөө агаар оруулах боломжтой болно. Хэрэв та маш их бохирдолтой газарт амьдардаг бол гадаа аюулгүй явах боломжтой.

Би үүнийг сургуулийн төсөл болгон хийсэн тул MQTT мессежийг хүлээн авч, танд мэдэгдэл эсвэл имэйл илгээх үйлчилгээ олох хангалттай цаг байгаагүй.

Мэдрэгчийг байнга асааж байх нь сэнсний ашиглалтын хугацааг богиносгох болно гэдгийг анхаарна уу.

Алхам 1: Шаардлагатай эд анги

Шаардлагатай эд ангиуд
Шаардлагатай эд ангиуд

Танд хэрэгтэй зүйл

  • Ардуино Уно
  • Arduino Ethernet бамбай
  • Бөөмийн лазер мэдрэгч (ихэвчлэн eBay/aliexpress дээр 10-30 доллараар зарагддаг)
  • DHT11 температур ба чийгшлийн мэдрэгч (заавал биш)
  • Талхны самбар
  • Холбогч кабель

Алхам 2: эд ангиудыг угсрах

Эд ангиудыг угсрах
Эд ангиудыг угсрах

Нэгдүгээрт, та Ethernet бамбайг Arduino дээр залгах хэрэгтэй

PM мэдрэгч нь олон утастай боловч бидэнд хэрэгтэй зүйл бол VCC, GND, TX, RX юм.

VCC ба GND -ийг талхны самбар дээрх тус тусад нь + ба - руу холбоно уу.

Arduino нь техник хангамжийн RX ба TX тээглүүртэй боловч бид 2 болон 3 -р зүү дээр RX ба TX тээглүүрийн програм хангамжийг ашиглах болно. Мэдрэгчийн RX -ийг Arduino -ийн TX -д, мэдрэгчийн TX -ийг Arduino -ийн RX -д залгаарай.

Хэрэв та температур мэдрэгчийг ашиглах гэж байгаа бол VCC ба GND шугамыг Breadboard дээрх + ба - ба залгаас руу холбоно уу.

Алхам 3: Код

Та MQTT брокерыг бөөрөлзгөнө пи эсвэл гэртээ байнга ашигладаг компьютер дээр суулгаж эсвэл Cloud MQTT гэх мэт үүл MQTT үйлчилгээг ашиглаж болно. Дараа нь та өгөгдлийг IFTT вэб хуук руу HTTP хэлбэрээр илгээдэг скрипт бичиж болно, учир нь тэд MQTT вэб хуукуудыг хараахан дэмждэггүй бөгөөд танай гэрт тоосны хэмжээ хэт өндөр байх үед мэдэгдэл тохируулдаг.

Arduino агаарын станц

#оруулах

#оруулах
#оруулах
#оруулах
#оруулах
#оруулах

#оруулах

#оруулах
#тодорхойлохDHT11_PIN7
#тодорхойлохRX_PIN2
#defineTX_PIN3
IP хаяг IP (169, 169, 100, 98);
байт мак = {
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"; // Үйлчлүүлэгчийн холболт ижил холболтын нэртэй байж болохгүй
EthernetClient ethClient;
PubSubClient үйлчлүүлэгч (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
DHT;
int pm1;
int pm2_5;
int pm10;
гарын үсэг зураагүй урт id;
// myFile файл хийх;
Мөр;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Цуваа.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
хэрэв (Ethernet.begin (mac) == 0)
{
Serial.println ("DHCP ашиглан Ethernet -ийг тохируулж чадсангүй");
// тогтмол ip addr ашиглан оролдох
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (буцааж залгах);
саатал (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 үнэ;
char өмнөхValue;
if (! client.connected ())
{
хэрэв (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("холбогдсон");
}
}
байхад (pmSerial.available ()) {
утга = pmSerial.read ();
хэрэв ((индекс == 0 && утга! = 0x42) || (индекс == 1 && утга! = 0x4d)) {
Serial.println ("Өгөгдлийн толгойг олж чадсангүй.");
буцах;
}
хэрэв (индекс == 4 || индекс == 6 || индекс == 8 || индекс == 10 || индекс == 12 || индекс == 14) {
previousValue = утга;
}
elseif (индекс == 5) {
pm1 = 256 * өмнөхValue + утга;
root ["pm1"] = abs (pm1);
}
elseif (индекс == 7) {
pm2_5 = 256 * өмнөхValue + утга;
root ["pm2_5"] = abs (pm2_5);
}
elseif (индекс == 9) {
pm10 = 256 * өмнөхValue + утга;
root ["pm10"] = abs (pm10);
}
elseif (индекс> 15) {
завсарлага;
}
индекс ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
хэрэв (DHT.temperature == -999 || DHT. чийгшил == -999) {
root ["температур"] = "Боломжгүй";
үндэс ["чийгшил"] = "Боломжгүй";
} өөр {
root ["температур"] = DHT.temperature;
root ["чийгшил"] = DHT. чийгшил;
}
sendResults ();
id ++;
саатал (5000);
}
voidsendResults () {
// MQTT дээр нийтлэх
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// цуврал руу дибаг хийх
root.printTo (Цуваа);
Serial.print ('\ n');
}
// Захиалсан сэдвээр ирсэн зурвасуудыг зохицуулдаг
voidcallback (char* сэдэв, байт* ачаа, гарын үсэг зураагүй урт) {
}

GitHub -аас ❤ зохион байгуулсан rawair_quality.ino -г үзэх

Алхам 4: Хайрцгийг угсарна уу

Хайрцгийг угсарна уу
Хайрцгийг угсарна уу
Хайрцгийг угсарна уу
Хайрцгийг угсарна уу
Хайрцгийг угсарна уу
Хайрцгийг угсарна уу

Би дөнгөж хэвтэж байсан хайрцгийг ашиглаж, мэдрэгчийг агааржуулах нүх өрөмдөж, кабелийг гадагш гаргах нүхийг хайчилсан (энэ нь арай том байсан ч гэсэн).

Мэдрэгчийг хайрцагт холбохын тулд би цавуу дэвсгэр ашигласан бөгөөд мэдрэгчийн оролтын нүхийг хайрцаг дээрх өрөмдсөн нүхтэй уялдуулав.

Эцэст нь би ethernet болон цахилгаан кабелийг залгасан.

Зөвлөмж болгож буй: