Sadržaj:
Video: Arduino stanica za nadzor čestica prašine: 4 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Možete prilično jednostavno izgraditi "uradi sam" uređaj sa stvarima koji prati zagađenje prašine u vašem domu za manje od 50 USD i primati obavijesti kada nivo prašine postane previsok kako biste mogli provjetriti prostoriju ili je postaviti van i biti obaviješteni ako je možete izaći van ako živite u visoko zagađenom području.
Napravio sam ovo 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
Šta ć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)
- Breadboard
- Premosni kablovi
Korak 2: Sastavite dijelove
Prvo morate priključiti Ethernet štit na Arduino
PM senzor 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 i 3 respektivno. Priključite RX senzora na TX na Arduinu, a TX senzora na RX na Arduinu.
Ako ćete koristiti temperaturni senzor, priključite VCC i GND vodove na + i - na Breadboard -u, a liniju podataka na pin 7.
Korak 3: Kôd
Možete instalirati MQTT brokera na malinu pi ili računaru koje imate uvijek kod kuće ili koristiti cloud MQTT uslugu, 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 nivo prašine u vašem domu postane previsok.
Zračna stanica Arduino
#include |
#include |
#include |
#include |
#include |
#include |
#include |
#include |
#defineDHT11_PIN7 |
#defineRX_PIN2 |
#defineTX_PIN3 |
IPAddress 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 isto ime 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; |
String 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 ("Konfiguriranje Etherneta pomoću DHCP -a nije uspjelo"); |
// pokušaj sa fiksnim ip adr |
Ethernet.begin (mac, ip); |
} |
client.setServer (mqtt_server, mqtt_port); |
client.setCallback (povratni poziv); |
kašnjenje (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 vrijednost; |
char previousValue; |
if (! client.connected ()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println ("povezano"); |
} |
} |
while (pmSerial.available ()) { |
value = pmSerial.read (); |
if ((indeks == 0 && vrijednost! = 0x42) || (indeks == 1 && vrijednost! = 0x4d)) { |
Serial.println ("Ne mogu pronaći zaglavlje podataka."); |
return; |
} |
if (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) { |
previousValue = vrijednost; |
} |
elseif (indeks == 5) { |
pm1 = 256 * previousValue + value; |
root ["pm1"] = abs (pm1); |
} |
elseif (indeks == 7) { |
pm2_5 = 256 * previousValue + value; |
root ["pm2_5"] = abs (pm2_5); |
} |
elseif (indeks == 9) { |
pm10 = 256 * previousValue + value; |
root ["pm10"] = abs (pm10); |
} |
elseif (indeks> 15) { |
break; |
} |
index ++; |
} |
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 na MQTT -u |
char jsonChar [100]; |
root.printTo (jsonChar); |
Serial.println (client.publish ("arduino", jsonChar)); |
// otklanjanje grešaka u serial |
root.printTo (serijski); |
Serial.print ('\ n'); |
} |
// Obrađuje poruke pristigle na pretplaćene teme |
voidcallback (char* tema, bajt* korisni teret, dužina bez znaka) { |
} |
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 otvor za izlazak kabela (iako je bio malo prevelik).
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 kablove za napajanje.
Preporučuje se:
Lična vremenska stanica Photon IoT od čestica: 4 koraka (sa slikama)
Lična vremenska stanica Photon IoT od čestica:
Nadzor solarnih panela pomoću fotona čestica: 7 koraka
Monitoring solarnih panela korištenjem čestica fotona: Cilj projekta je poboljšati efikasnost solarnih panela. Projekt je osmišljen kako bi nadzirao proizvodnju 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 sa programima koje programira korisnik i olakšavaju primjenu mjerenja temperature. Senzor temperature MCP9808 visoke preciznosti postao je industrija
Nadzor temperature i vlažnosti pomoću SHT25 i fotona čestica: 5 koraka
Nadzor temperature i vlažnosti pomoću SHT25 i fotona čestica: Nedavno smo radili na raznim projektima koji su zahtijevali praćenje temperature i vlažnosti, a zatim smo shvatili da ta dva parametra zapravo igraju ključnu ulogu u procjeni radne efikasnosti sistema. Oboje na indusu
Nadzor konferencijske sobe pomoću čestica fotona: 8 koraka (sa slikama)
Monitoring konferencijske sobe korištenjem Particle Photon: Uvod U ovom tutorialu ćemo napraviti Monitor konferencijske sobe koristeći Particle Photon. U ovoj čestici je integrirano sa Slackom pomoću Webhooks -a za dobivanje ažuriranja u stvarnom vremenu o tome je li soba dostupna ili nije. PIR senzori koriste se za