Sadržaj:
Video: Arduino stanica za nadzor čestica prašine: 4 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Možete prilično jednostavno izgraditi "uradi sam" uređaj za stvari koje prati zagađenje prašine u vašem domu za manje od 50 USD i primati obavijesti kada razina prašine postane previsoka kako biste mogli prozračiti sobu ili je postaviti van i dobiti obavijest ako je sigurno izlazite van ako živite u visoko zagađenom području.
Ovo sam napravio kao školski projekt, pa nisam imao dovoljno vremena da pronađem uslugu koja će primati MQTT poruke i slati vam ih poput obavijesti ili e -poruka.
Također imajte na umu da će stalno napajanje senzora smanjiti vijek trajanja ventilatora.
Korak 1: Potrebni dijelovi
Što će vam trebati
- Arduino Uno
- Arduino Ethernet štit
- Laserski senzor čestica (obično košta 10 do 30 USD na eBayu/aliexpressu)
- Senzor temperature i vlažnosti DHT11 (opcionalno)
- Oglasna ploča
- Kratki kabeli
Korak 2: Sastavite dijelove
Prvo morate priključiti Ethernet štit na Arduino
PM osjetnik ima više žica, ali potrebne su nam VCC, GND, TX, RX.
Spojite VCC i GND na + i - na matičnoj ploči.
Arduino ima hardverske RX i TX pinove, ali ćemo koristiti softversku emulaciju RX i TX pinova na pinovima 2 odnosno 3. Priključite RX osjetnika na TX na Arduinu, a TX senzora na RX na Arduinu.
Ako ćete koristiti temperaturni senzor, priključite vodove VCC i GND na + i - na Breadboard -u i podatkovnu liniju na pin 7.
Korak 3: Kôd
Možete instalirati MQTT brokera na malinu pi ili računalo koje imate uvijek kod kuće ili koristiti uslugu oblaka MQTT, poput Cloud MQTT -a. Zatim možete napisati skriptu koja šalje podatke kao HTTP na IFTT webhook, jer oni još ne podržavaju MQTT webhooks i postaviti obavijesti kada razine prašine u vašem domu postanu previsoke.
Zračna stanica Arduino
#uključi |
#uključi |
#uključi |
#uključi |
#uključi |
#uključi |
#uključi |
#uključi |
#defineDHT11_PIN7 |
#defineRX_PIN2 |
#defineTX_PIN3 |
IP adresa ip (169, 169, 100, 98); |
bajt 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"; // Klijentske veze ne mogu imati isti naziv veze |
EthernetClient ethClient; |
PubSubClient klijent (ethClient); |
SoftwareSerial pmSerial (RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
int pm2_5; |
int pm10; |
unsignedlong id; |
// Datoteka myFile; |
Nizovi s; |
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 ("Nije uspjelo konfiguriranje Etherneta pomoću DHCP -a"); |
// pokušaj s fiksnim ip adr |
Ethernet.početak (mac, ip); |
} |
client.setServer (mqtt_server, mqtt_port); |
client.setCallback (povratni poziv); |
odgoda (2000); |
Serial.println (Ethernet.localIP ()); |
client.connect ("arduinoClient", mqtt_user, mqtt_pass); |
Serial.print ("rc ="); |
Serial.print (client.state ()); |
Serial.print ("\ n"); |
} |
voidloop () { |
intindeks = 0; |
char vrijednost; |
char previousValue; |
if (! client.connected ()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println ("povezan"); |
} |
} |
while (pmSerial.available ()) { |
vrijednost = pmSerial.read (); |
if ((indeks == 0 && vrijednost! = 0x42) || (indeks == 1 && vrijednost! = 0x4d)) { |
Serial.println ("Ne mogu pronaći zaglavlje podataka."); |
povratak; |
} |
if (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) { |
previousValue = vrijednost; |
} |
elseif (indeks == 5) { |
pm1 = 256 * previousValue + vrijednost; |
root ["pm1"] = abs (pm1); |
} |
elseif (indeks == 7) { |
pm2_5 = 256 * previousValue + vrijednost; |
root ["pm2_5"] = abs (pm2_5); |
} |
elseif (indeks == 9) { |
pm10 = 256 * previousValue + vrijednost; |
root ["pm10"] = abs (pm10); |
} |
elseif (indeks> 15) { |
pauza; |
} |
indeks ++; |
} |
while (pmSerial.available ()) pmSerial.read (); |
int chk = DHT.read11 (DHT11_PIN); |
if (DHT.temperature == -999 || DHT.humidity == -999) { |
root ["temperatura"] = "N/A"; |
root ["vlažnost"] = "N/A"; |
} else { |
korijen ["temperatura"] = DHT.temperatura; |
korijen ["vlažnost"] = DHT.vlažnost; |
} |
sendResults (); |
id ++; |
kašnjenje (5000); |
} |
voidsendResults () { |
// objaviti u MQTT -u |
char jsonChar [100]; |
root.printTo (jsonChar); |
Serial.println (client.publish ("arduino", jsonChar)); |
// ispravljanje pogrešaka u serijski |
root.printTo (serijski); |
Serial.print ('\ n'); |
} |
// Obrađuje poruke pristigle na pretplaćene teme |
voidcallback (char* tema, bajt* korisni teret, duljina bez potpisa) { |
} |
pogledajte rawair_quality.ino hosted with ❤ by GitHub
Korak 4: Sastavite kutiju
Upravo sam upotrijebio kutiju koju sam ležao i izbušio rupu za senzor iz kojeg je izlazio zrak i izrezao rupu za izlazak kabela (iako je bila malo prevelika).
Koristio sam jastučiće za ljepilo za pričvršćivanje senzora na kutiju, poravnavajući ulaznu rupu senzora s izbušenom rupom na kutiji.
Konačno, priključio sam Ethernet i kabele za napajanje.
Preporučeni:
DIY meteorološka stanica i senzorska stanica WiFi: 7 koraka (sa slikama)
DIY meteorološka stanica i WiFi senzorska stanica: U ovom projektu ću vam pokazati kako stvoriti meteorološku stanicu zajedno sa stanicom sa WiFi senzorom. Senzorska stanica mjeri lokalne podatke o temperaturi i vlažnosti i šalje ih putem WiFi -a meteorološkoj postaji. Meteorološka stanica tada prikazuje t
Osobna meteorološka stanica Photon IoT od čestica: 4 koraka (sa slikama)
Osobna meteorološka stanica Photon IoT od čestica:
Nadzor solarnih ploča pomoću fotona čestica: 7 koraka
Nadzor solarnih panela pomoću fotona čestica: Cilj projekta je poboljšati učinkovitost solarnih panela. Projekt je osmišljen za nadzor proizvodnje solarne fotonaponske energije radi poboljšanja performansi, praćenja i održavanja solarne elektrane. U ovom projektu čestice ph
Nadzor temperature pomoću MCP9808 i fotona čestica: 4 koraka
Nadzor temperature pomoću MCP9808 i fotona čestica: MCP9808 je visoko precizan digitalni senzor temperature ± 0,5 ° C I2C mini modul. Utjelovljeni su s programima koje programira korisnik i olakšavaju primjenu mjerenja temperature. Senzor temperature MCP9808 visoke preciznosti postao je industrija
Arduino studija prašine: 8 koraka
Arduino studija prašine: Kako bi bilo živjeti na Marsu? Da li zrak može disati? Da li je sigurno? Koliko ima prašine? Koliko su oluje česte? Jeste li se ikada zapitali odgovor na bilo koje od ovih pitanja?