Cuprins:
Video: Stație de monitorizare a particulelor de praf alimentate de Arduino: 4 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Puteți construi destul de ușor un dispozitiv DIY de obiecte care monitorizează poluarea prafului în casa dvs. pentru mai puțin de 50 USD și primiți notificări atunci când nivelul de praf devine prea mare, astfel încât să puteți aeriza camera sau puteți să o setați în exterior și să primiți o notificare dacă este să ieșiți în siguranță dacă locuiți într-o zonă foarte poluată.
Am făcut acest lucru ca un proiect școlar, așa că nu am avut suficient timp să găsesc un serviciu care să preia mesaje MQTT și să vi le trimită ca notificări sau e-mailuri.
De asemenea, rețineți că menținerea senzorului alimentat în orice moment va reduce durata de viață a ventilatorului.
Pasul 1: Piese necesare
De ce vei avea nevoie
- Arduino Uno
- Scut Ethernet Arduino
- Senzor laser pentru particule (de obicei, costă între 10 și 30 USD pe eBay / AliExpress)
- Senzor de temperatură și umiditate DHT11 (opțional)
- Pană de pâine
- Cabluri jumper
Pasul 2: Asamblați piesele
Mai întâi, trebuie să conectați scutul Ethernet pe Arduino
Senzorul PM are mai multe fire, dar cele de care avem nevoie sunt VCC, GND, TX, RX.
Conectați VCC și GND la + și, respectiv, pe panoul de verificare.
Arduino are pin RX și TX hardware, dar vom folosi emularea software a pinilor RX și TX pe pinii 2 și respectiv 3. Conectați RX-ul senzorului la TX al Arduino și TX al senzorului la RX al Arduino.
Dacă doriți să utilizați senzorul de temperatură, conectați liniile VCC și GND la + și - pe Breadboard și linia de date la pinul 7.
Pasul 3: Codul
Puteți să instalați brokerul MQTT pe un raspberry pi sau pe un computer pe care îl aveți mereu acasă sau puteți utiliza un serviciu cloud MQTT, cum ar fi Cloud MQTT. Apoi, puteți scrie un script care trimite datele ca HTTP către un webhook IFTT, deoarece acestea nu acceptă încă webhook-urile MQTT și puteți configura notificări pentru momentul în care nivelul de praf din casa dvs. devine prea mare.
Stația aeriană Arduino
#include |
#include |
#include |
#include |
#include |
#include |
#include |
#include |
# defineDHT11_PIN7 |
# defineRX_PIN2 |
# defineTX_PIN3 |
Adresă IP ip (169, 169, 100, 98); |
octet 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"; // Conexiunile clientului nu pot avea același nume de conexiune |
EthernetClient ethClient; |
Clientul PubSubClient (ethClient); |
SoftwareSerial pmSerial (RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
int pm2_5; |
int pm10; |
unsignedlong id; |
// Înregistrează fișierul meu; |
Siruri de caractere; |
StaticJsonBuffer <200> jsonBuffer; |
JsonObject & root = jsonBuffer.createObject (); |
voidsetup () { |
Serial.begin (57600); |
pmSerial.begin (9600); |
id = 0; |
pm1 = 0; |
pm2_5 = 0; |
pm10 = 0; |
if (Ethernet.begin (mac) == 0) |
{ |
Serial.println („Nu s-a putut configura Ethernet folosind DHCP”); |
// incercati cu adr ip fix |
Ethernet.begin (mac, ip); |
} |
client.setServer (mqtt_server, mqtt_port); |
client.setCallback (apel invers); |
întârziere (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; |
valoarea char; |
char precedentValoare; |
if (! client.connected ()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println („conectat”); |
} |
} |
while (pmSerial.available ()) { |
valoare = pmSerial.read (); |
if ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) { |
Serial.println ("Nu se poate găsi antetul de date."); |
întoarcere; |
} |
if (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) { |
precedentValoare = valoare; |
} |
elseif (index == 5) { |
pm1 = 256 * precedentValoare + valoare; |
rădăcină ["pm1"] = abs (pm1); |
} |
elseif (index == 7) { |
pm2_5 = 256 * Valoare precedentă + valoare; |
rădăcină ["pm2_5"] = abs (pm2_5); |
} |
elseif (index == 9) { |
pm10 = 256 * Valoare precedentă + valoare; |
rădăcină ["pm10"] = abs (pm10); |
} |
elseif (index> 15) { |
pauză; |
} |
index ++; |
} |
while (pmSerial.available ()) pmSerial.read (); |
int chk = DHT.read11 (DHT11_PIN); |
if (DHT.temperature == -999 || DHT.humidity == -999) { |
root ["temperature"] = "N / A"; |
rădăcină ["umiditate"] = "N / A"; |
} altceva { |
root ["temperature"] = temperatura DHT; |
rădăcină ["umiditate"] = DHT.umiditate; |
} |
sendResults (); |
id ++; |
întârziere (5000); |
} |
voidsendResults () { |
// publică pe MQTT |
char jsonChar [100]; |
root.printTo (jsonChar); |
Serial.println (client.publish ("arduino", jsonChar)); |
// depanare la serial |
root.printTo (Serial); |
Serial.print ('\ n'); |
} |
// Gestionează mesajele sosite pe subiect (e) abonat (e) |
voidcallback (char * topic, octet * sarcină utilă, lungime nesemnată) { |
} |
vizualizați rawair_quality.ino găzduit cu ❤ de GitHub
Pasul 4: Asamblați cutia
Tocmai am folosit o cutie pe care o aveam întinsă și am forat o gaură pentru ca senzorul să obțină aer și am tăiat o gaură pentru ca cablurile să iasă (deși era cam prea mare).
Am folosit tampoane de adeziv pentru a atașa senzorul la cutie, alinierea orificiului de intrare al senzorului cu gaura forată de pe cutie.
În cele din urmă, am conectat cablurile Ethernet și de alimentare.
Recomandat:
Măsurare portabilă a particulelor fine: 4 pași (cu imagini)
Măsurarea portabilă a particulelor fine: Obiectivul acestui proiect este de a măsura calitatea aerului prin măsurarea cantității de particule fine. Datorită portabilității sale, va fi posibilă efectuarea de măsurători acasă sau în mișcare. Calitatea aerului și particule fine: particule (
Stație meteo DIY și stație senzor WiFi: 7 pași (cu imagini)
Stație meteo DIY și stație senzor WiFi: În acest proiect vă voi arăta cum să creați o stație meteo împreună cu o stație senzor WiFi. Stația senzorului măsoară datele locale de temperatură și umiditate și le trimite, prin WiFi, către stația meteo. Stația meteo afișează apoi t
Lampă LED animată Arduino de perete praf cu efect de lumină: 11 pași (cu imagini)
Lampă cu LED animată Dusty Wall Arduino cu efect de lumină: tocmai am avut un copil și, după ce i-am făcut dormitorul, aveam nevoie de o lumină pe un perete. Întrucât iubesc foarte mult LED-ul, am decis să creez ceva. Îmi place și avionul în general, așa că de ce să nu pun un avion dintr-un desen animat pe perete, așa cum începe și cum am făcut-o. Sper
Cum să construiți o stație senzor de monitorizare a confortului: 10 pași (cu imagini)
Cum să construiți o stație de senzori de monitorizare a confortului: Această instrucțiune descrie proiectarea și construcția așa-numitei stații de monitorizare a confortului CoMoS, un dispozitiv senzor combinat pentru condiții ambientale, care a fost dezvoltat la departamentul de mediu construit de la TUK, Technische Universität Ka
Începeți să construiți o stație de monitorizare PM: 3 pași (cu imagini)
Începeți să construiți o stație de monitorizare PM: Sunt interesat în special de nivelurile de poluare a aerului, pentru că locuiesc în China și, în timp ce orașul meu, Shenzhen, este probabil unul dintre cele mai curate orașe din China, are încă zilele sale proaste. am vrut să-mi construiesc propria mea pentru a compara cu aerul de jumătate de duzină