Video: Arduino toitega tolmuosakeste seirejaam: 4 sammu (piltidega)
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Saate üsna hõlpsalt ehitada asjade Interneti -seadme, mis jälgib teie kodu tolmureostust vähem kui 50 dollari eest, ja saada märku, kui tolmu tase tõuseb liiga kõrgeks, et saaksite ruumi õhutada, või saate selle välja seada ja saada märguande, kui see on turvaline õue minna, kui elate väga saastatud piirkonnas.
Tegin selle kooliprojektina, nii et mul ei olnud piisavalt aega, et leida teenust, mis võtab vastu MQTT -sõnumeid ja saadab need teile nagu märguanded või e -kirjad.
Pange tähele ka seda, et anduri pidev sisselülitamine vähendab ventilaatori eluiga.
Samm: vajalikud osad
Mida vajate
- Arduino Uno
- Arduino Etherneti kilp
- Tahkete osakeste lasersensor (tavaliselt maksab eBay/aliexpress 10–30 dollarit)
- DHT11 temperatuuri ja niiskuse andur (valikuline)
- Leivalaud
- Jumper kaablid
Samm: pange osad kokku
Esiteks peate ühendama Arduino Etherneti kilbi
PM -anduril on mitu juhet, kuid need, mida vajame, on VCC, GND, TX, RX.
Ühendage VCC ja GND vastavalt leivaplaadil olevatele plussidele + ja -.
Arduinol on riistvara RX- ja TX -tihvtid, kuid me kasutame RX- ja TX -nööpnõelte tarkvara emuleerimist vastavalt tihvtidel 2 ja 3. Ühendage anduri RX Arduino TX -ga ja anduri TX Arduino RX -ga.
Kui kavatsete kasutada temperatuuriandurit, ühendage VCC- ja GND -jooned paneelil + ja - ning andmerida tihvtiga 7.
3. samm: kood
Võite installida MQTT maakleri vaarika pi või arvutisse, mis on alati kodus, või kasutada pilv MQTT teenust, näiteks Cloud MQTT. Seejärel saate kirjutada skripti, mis saadab andmed HTTP -vormingus IFTT -i veebihaakesse, kuna need ei toeta veel MQTT -veebihaake ja seadistavad märguanded, kui teie kodus on tolmutase liiga kõrge.
Arduino lennujaam
#kaasake |
#kaasake |
#kaasake |
#kaasake |
#kaasake |
#kaasake |
#kaasake |
#kaasake |
#defineDHT11_PIN7 |
#defineRX_PIN2 |
#defineTX_PIN3 |
IPAdd ip (169, 169, 100, 98); |
bait 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"; // Kliendiühendustel ei saa olla sama ühenduse nimi |
EthernetClient ethClient; |
PubSubClient klient (ethClient); |
SoftwareSerial pmSerial (RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
int pm2_5; |
int pm10; |
allkirjastamata pikk ID; |
// Fail myFile; |
String s; |
StaticJsonBuffer <200> jsonBuffer; |
JsonObject & root = jsonBuffer.createObject (); |
voidsetup () { |
Seriaalne algus (57600); |
pmSerial.begin (9600); |
id = 0; |
pm1 = 0; |
pm2_5 = 0; |
pm10 = 0; |
kui (Ethernet.begin (mac) == 0) |
{ |
Serial.println ("Etherneti konfigureerimine ebaõnnestus DHCP abil"); |
// proovige fikseeritud ip -aadressiga |
Ethernet.begin (mac, ip); |
} |
client.setServer (mqtt_server, mqtt_port); |
client.setCallback (tagasihelistamine); |
viivitus (2000); |
Serial.println (Ethernet.localIP ()); |
client.connect ("arduinoClient", mqtt_user, mqtt_pass); |
Seeria.print ("rc ="); |
Serial.print (client.state ()); |
Serial.print ("\ n"); |
} |
voidloop () { |
intindex = 0; |
süsiniku väärtus; |
char previousValue; |
kui (! klient.ühendatud ()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println ("ühendatud"); |
} |
} |
while (pmSerial.available ()) { |
väärtus = pmSerial.read (); |
kui ((indeks == 0 && väärtus! = 0x42) || (indeks == 1 && väärtus! = 0x4d)) { |
Serial.println ("Ei leia andmepäist."); |
tagasipöördumine; |
} |
kui (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) { |
previousValue = väärtus; |
} |
elseif (indeks == 5) { |
pm1 = 256 * eelmineVäärtus + väärtus; |
juur ["pm1"] = abs (pm1); |
} |
elseif (indeks == 7) { |
pm2_5 = 256 * previousValue + väärtus; |
juur ["pm2_5"] = abs (pm2_5); |
} |
elseif (indeks == 9) { |
pm10 = 256 * previousValue + väärtus; |
juur ["pm10"] = abs (pm10); |
} |
elseif (indeks> 15) { |
murda; |
} |
indeks ++; |
} |
while (pmSerial.available ()) pmSerial.read (); |
int chk = DHT.read11 (DHT11_PIN); |
kui (DHT.temperatuur == -999 || DHT.niiskus == -999) { |
juur ["temperatuur"] = "N/A"; |
juur ["niiskus"] = "N/A"; |
} muud { |
juur ["temperatuur"] = DHT.temperatuur; |
juur ["niiskus"] = DHT.niiskus; |
} |
sendResults (); |
id ++; |
viivitus (5000); |
} |
voidsendResults () { |
// avaldada MQTT -le |
char jsonChar [100]; |
root.printTo (jsonChar); |
Serial.println (client.publish ("arduino", jsonChar)); |
// silumine seriaaliks |
root.printTo (jada); |
Serial.print ('\ n'); |
} |
// Käsitleb tellitud teema (te) le saabunud sõnumeid |
voidcallback (sümbol* teema, bait* kasulik koormus, märkimata pikkus) { |
} |
vaadake rawair_quality.ino, mille hostiks on GitHub ❤
Samm: pange kast kokku
Kasutasin lihtsalt kasti, mis mul oli pikali, ja puurisin andurile augu, et sealt õhku saada, ja lõikasin välja augu kaablite väljumiseks (kuigi see oli natuke liiga suur).
Anduri karbi külge kinnitamiseks kasutasin liimipatju, joondades anduri sisendava karbi puuritud avaga.
Lõpuks ühendasin Etherneti ja toitekaablid.