Obsah:

Stanica monitorovania prachových častíc poháňaná Arduino: 4 kroky (s obrázkami)
Stanica monitorovania prachových častíc poháňaná Arduino: 4 kroky (s obrázkami)

Video: Stanica monitorovania prachových častíc poháňaná Arduino: 4 kroky (s obrázkami)

Video: Stanica monitorovania prachových častíc poháňaná Arduino: 4 kroky (s obrázkami)
Video: Jak sledovat prachové částice v ovzduší 2024, November
Anonim
Stanica na monitorovanie častíc prachu poháňaná Arduino
Stanica na monitorovanie častíc prachu poháňaná Arduino

Môžete si celkom jednoducho vytvoriť zariadenie na internet pre domácich majstrov, ktoré monitoruje znečistenie prachom vo vašej domácnosti za menej ako 50 dolárov, a dostanete upozornenie, keď sa úroveň prachu zvýši príliš vysoko, aby ste mohli miestnosť prevzdušniť, alebo ju môžete nastaviť vonku a dostať upozornenie, ak je môžete ísť von, ak žijete vo veľmi znečistenej oblasti.

Vytvoril som to ako školský projekt, takže som nemal dostatok času nájsť si službu, ktorá bude prijímať správy MQTT a odosielať vám ich ako oznámenia alebo e -maily.

Pamätajte tiež na to, že ponechanie senzora stále v prevádzke skracuje životnosť ventilátora.

Krok 1: Potrebné diely

Potrebné diely
Potrebné diely

Čo budeš potrebovať

  • Arduino Uno
  • Ethernetový štít Arduino
  • Laserový senzor pevných častíc (zvyčajne stojí 10 až 30 dolárov na eBay/aliexpress)
  • Snímač teploty a vlhkosti DHT11 (voliteľné)
  • Breadboard
  • Prepojovacie káble

Krok 2: Zostavte diely

Zostavte diely
Zostavte diely

Najprv musíte na Arduino zapojiť ethernetový štít

Senzor PM má niekoľko vodičov, ale potrebujeme VCC, GND, TX, RX.

Pripojte VCC a GND k + a - na nepájivom poli.

Arduino má hardvérové piny RX a TX, ale použijeme softvérovú emuláciu pinov RX a TX na kolíkoch 2 a 3. Pripojte RX senzora k TX Arduina a TX senzora k RX Arduina.

Ak budete používať teplotný senzor, zapojte vedenia VCC a GND do konektorov + a - na Breadboard a dátový kábel do kolíka 7.

Krok 3: Kód

Buď si môžete nainštalovať brokera MQTT na malinový pi alebo na počítač, ktorý máte vždy doma, alebo môžete použiť cloudovú službu MQTT, napríklad Cloud MQTT. Potom môžete napísať skript, ktorý odošle údaje vo formáte HTTP do webhooku IFTT, pretože ešte nepodporujú webhooky MQTT, a nastavíte upozornenia, keď sa úroveň prachu vo vašej domácnosti zvýši na príliš vysokú.

Vzdušná stanica Arduino

#zahrnúť
#zahrnúť
#zahrnúť
#zahrnúť
#zahrnúť
#zahrnúť

#zahrnúť

#zahrnúť
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IP adresa ip (169, 169, 100, 98);
byte 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"; // Klientske pripojenia nemôžu mať rovnaký názov pripojenia
Ethernetový klient et klient;
Klient PubSubClient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
nepodpísané ID;
// Súbor myFile;
Reťazce s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
ak (Ethernet.begin (mac) == 0)
{
Serial.println ("Nepodarilo sa konfigurovať ethernet pomocou DHCP");
// pokus s pevnou adresou IP
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (spätné volanie);
oneskorenie (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 hodnota;
char previousValue;
if (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("pripojený");
}
}
while (pmSerial.available ()) {
hodnota = pmSerial.read ();
if ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) {
Serial.println ("Nedá sa nájsť hlavička údajov.");
návrat;
}
ak (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
previousValue = hodnota;
}
elseif (index == 5) {
pm1 = 256 * previousValue + hodnota;
root ["pm1"] = abs (pm1);
}
elseif (index == 7) {
pm2_5 = 256 * predchádzajúca hodnota + hodnota;
root ["pm2_5"] = abs (pm2_5);
}
elseif (index == 9) {
pm10 = 256 * predchádzajúca hodnota + hodnota;
root ["pm10"] = abs (pm10);
}
elseif (index> 15) {
prestávka;
}
index ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
ak (DHT.teplota == -999 || DHT.vlhkosť == -999) {
root ["teplota"] = "N/A";
root ["vlhkosť"] = "N/A";
} else {
root ["teplota"] = DHT.teplota;
root ["vlhkosť"] = DHT.vlhkosť;
}
sendResults ();
id ++;
oneskorenie (5 000);
}
voidsendResults () {
// zverejnenie na MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// ladenie do seriálu
root.printTo (sériové);
Serial.print ('\ n');
}
// Spracováva správy doručené na prihlásené témy
voidcallback (char* topic, byte* užitočné zaťaženie, dĺžka bez znamienka) {
}

pozrite sa na rawair_quality.ino hostiteľom ❤ od GitHub

Krok 4: Zostavte škatuľu

Zostavte škatuľu
Zostavte škatuľu
Zostavte škatuľu
Zostavte škatuľu
Zostavte škatuľu
Zostavte škatuľu

Len som použil ležiacu škatuľu a vyvŕtal som otvor pre senzor, aby sa z neho dostal vzduch, a vyrezal som otvor, aby káble mohli ísť von (aj keď to bolo trochu príliš veľké).

Na pripevnenie senzora k krabici som použil lepiace podložky a zarovnal vstupný otvor senzora s vyvŕtaným otvorom na krabici.

Nakoniec som zapojil ethernetové a napájacie káble.

Odporúča: