Tartalomjegyzék:

Arduino hajtású porrészecskék figyelő állomás: 4 lépés (képekkel)
Arduino hajtású porrészecskék figyelő állomás: 4 lépés (képekkel)

Videó: Arduino hajtású porrészecskék figyelő állomás: 4 lépés (képekkel)

Videó: Arduino hajtású porrészecskék figyelő állomás: 4 lépés (képekkel)
Videó: Nitroglycerine explosion 2024, November
Anonim
Arduino hajtású porrészecskék figyelő állomás
Arduino hajtású porrészecskék figyelő állomás

Meglehetősen könnyen felépíthet egy barkácsolható tárgyakból álló internetes eszközt, amely 50 dollárnál alacsonyabb áron figyeli az otthoni por szennyeződését, és értesítést kap, ha a por szintje túl magas lesz, így szellőztetheti a helyiséget, vagy beállíthatja kívülre, és értesítést kaphat, ha biztonságosan mehet a szabadba, ha erősen szennyezett területen él.

Ezt iskolai projektként készítettem, így nem volt elég időm megtalálni egy olyan szolgáltatást, amely átveszi az MQTT üzeneteket, és értesítésként vagy e -mailként küldi el Önnek.

Azt is vegye figyelembe, hogy az érzékelő folyamatos áramellátása csökkenti a ventilátor élettartamát.

1. lépés: Szükséges alkatrészek

Szükséges alkatrészek
Szükséges alkatrészek

Amire szüksége lesz

  • Arduino Uno
  • Arduino Ethernet pajzs
  • Részecske-anyag lézeres érzékelő (általában 10–30 dollárba kerül az eBay-en/aliexpressen)
  • DHT11 hőmérséklet- és páratartalom -érzékelő (opcionális)
  • Kenyeretábla
  • Jumper kábelek

2. lépés: Szerelje össze az alkatrészeket

Szerelje össze az alkatrészeket
Szerelje össze az alkatrészeket

Először csatlakoztatnia kell az Arduino ethernet -pajzsát

A PM érzékelőnek több vezetéke van, de szükségünk van a VCC, GND, TX, RX.

Csatlakoztassa a VCC -t és a GND -t a + és - a kenyértáblán.

Az Arduino hardveres RX és TX csapokkal rendelkezik, de az RX és TX csapok szoftveres emulációját fogjuk használni a 2. és a 3. tűn. Csatlakoztassa az érzékelő RX -jét az Arduino TX -hez, és az érzékelő TX -jét az Arduino RX -hez.

Ha a hőmérséklet -érzékelőt fogja használni, csatlakoztassa a VCC és GND vonalakat a + és - ponthoz a kenyértáblán és az adatvonalat a 7 -es tűhöz.

3. lépés: A kód

Telepítheti az MQTT közvetítőt egy málna pi vagy egy számítógépre, amely mindig otthon van, vagy használhat felhőbeli MQTT szolgáltatást, például a Cloud MQTT -t. Ezután írhat egy szkriptet, amely az adatokat HTTP -ként küldi el az IFTT webhook -nak, mivel ezek még nem támogatják az MQTT webhook -okat, és beállíthatja az értesítéseket, ha az otthoni por szintje túl magas lesz.

Arduino légi állomás

#befoglalni

#befoglalni
#befoglalni
#befoglalni
#befoglalni
#befoglalni

#befoglalni

#befoglalni
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPAdd 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"; // Az ügyfélkapcsolatoknak nem lehet ugyanaz a kapcsolati neve
EthernetClient ethClient;
PubSubClient kliens (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
unsignedlong id;
// Fájl myFile;
Karakterlánc s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Sorozat.kezdet (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
if (Ethernet.begin (mac) == 0)
{
Serial.println ("Nem sikerült az Ethernet konfigurálása DHCP használatával");
// próbálkozz fix ip addr -rel
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_szerver, mqtt_port);
client.setCallback (visszahívás);
késleltetés (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Soros.nyomtatás ("rc =");
Serial.print (kliens.állapot ());
Serial.print ("\ n");
}
voidloop () {
intindex = 0;
char érték;
char previousValue;
ha (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("csatlakoztatva");
}
}
while (pmSerial.available ()) {
érték = pmSerial.read ();
if ((index == 0 && érték! = 0x42) || (index == 1 && érték! = 0x4d)) {
Serial.println ("Nem található az adatfejléc.");
Visszatérés;
}
ha (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
previousValue = érték;
}
elseif (index == 5) {
pm1 = 256 * previousValue + érték;
gyökér ["pm1"] = abs (pm1);
}
elseif (index == 7) {
pm2_5 = 256 * previousValue + érték;
root ["pm2_5"] = abs (pm2_5);
}
elseif (index == 9) {
pm10 = 256 * previousValue + érték;
gyökér ["pm10"] = abs (pm10);
}
elseif (index> 15) {
szünet;
}
index ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
ha (DHT.hőmérséklet == -999 || DHT.páratartalom == -999) {
root ["hőmérséklet"] = "N/A";
root ["páratartalom"] = "N/A";
} más {
gyökér ["hőmérséklet"] = DHT.hőmérséklet;
gyökér ["páratartalom"] = DHT.nedvesség;
}
sendResults ();
id ++;
késleltetés (5000);
}
voidsendResults () {
// közzéteszi az MQTT -nek
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (kliens.publish ("arduino", jsonChar));
// soros hibakeresés
root.printTo (soros);
Serial.print ('\ n');
}
// A feliratkozott témákhoz érkezett üzenetek kezelése
voidcallback (char* topic, byte* payload, unsignedint length) {
}

Tekintse meg a rawair_quality.ino webhelyet, amelyet a GitHub ❤ üzemeltet

4. lépés: Szerelje össze a dobozt

Szerelje össze a dobozt
Szerelje össze a dobozt
Szerelje össze a dobozt
Szerelje össze a dobozt
Szerelje össze a dobozt
Szerelje össze a dobozt

Én csak egy dobozt használtam, amiben feküdtem, és lyukat fúrtam az érzékelőhöz, hogy levegőt kapjak, és kivágtam egy lyukat a kábelek kivezetéséhez (bár egy kicsit túl nagy volt).

Ragasztópárnákkal rögzítettem az érzékelőt a dobozhoz, igazítva az érzékelő bemeneti nyílását a dobozon lévő fúrt lyukhoz.

Végül bedugtam az ethernet és a tápkábeleket.

Ajánlott: