INHOUDSOPGAWE:
Video: Moniteringstasie vir stofdeeltjies met Arduino -aandrywing: 4 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
U kan redelik maklik 'n selfdoen -internet -van -ding -toestel bou wat stofbesoedeling in u huis vir minder as $ 50 moniteer en in kennis gestel word wanneer die stofpeil te hoog word, sodat u die kamer kan lug, of u kan dit buite stel en in kennis gestel word as dit veilig om na buite te gaan as u in 'n baie besoedelde gebied woon.
Ek het dit as 'n skoolprojek gemaak, en ek het nie genoeg tyd gehad om 'n diens te vind wat MQTT -boodskappe sal neem en dit na u stuur nie, soos kennisgewings of e -posse.
Let ook daarop dat die waaier se leeftyd deur die sensor te alle tye aangeskakel word.
Stap 1: Onderdele benodig
Wat jy nodig het
- Arduino Uno
- Arduino Ethernet -skild
- Lasersensor vir deeltjies (gewoonlik $ 10- $ 30 op eBay/aliexpress)
- DHT11 temperatuur- en humiditeitsensor (opsioneel)
- Broodbord
- Springkabels
Stap 2: Monteer die dele
Eerstens moet u die ethernet -skild op die Arduino aansluit
Die PM -sensor het verskeie drade, maar ons benodig VCC, GND, TX, RX.
Koppel die VCC en GND aan onderskeidelik + en - op die broodbord.
Die Arduino het hardeware RX en TX penne, maar ons sal sagteware emulasie van RX en TX penne gebruik op onderskeidelik penne 2 en 3. Koppel die RX van die sensor aan TX van die Arduino en TX van die sensor aan RX van die Arduino.
As u die temperatuursensor gaan gebruik, koppel die VCC- en GND -lyne aan + en - op die broodbord en die datalyn aan pen 7.
Stap 3: Die kode
U kan MQTT -makelaar installeer op 'n framboospi of 'n rekenaar waarop u altyd tuis was, of 'n wolk -MQTT -diens gebruik, soos Cloud MQTT. Dan kan u 'n script skryf wat die data as HTTP na 'n IFTT -webhook stuur, aangesien dit nog nie MQTT -webhooks ondersteun nie en kennisgewings instel vir wanneer stofvlakke in u huis te hoog word.
Arduino lugstasie
#insluit |
#insluit |
#insluit |
#insluit |
#insluit |
#insluit |
#insluit |
#insluit |
#definieerDHT11_PIN7 |
#definieerRX_PIN2 |
#definieerTX_PIN3 |
IPAddress 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"; // Kliëntverbindings kan nie dieselfde verbindingsnaam hê nie |
EthernetClient etClient; |
PubSubClient -kliënt (ethClient); |
SoftwareSerial pmSerial (RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
int pm2_5; |
int pm10; |
ongetekende lang ID; |
// Lêer 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; |
as (Ethernet.begin (mac) == 0) |
{ |
Serial.println ("Kon nie Ethernet met DHCP opstel nie"); |
// probeer met vaste ip addr |
Ethernet.begin (mac, ip); |
} |
client.setServer (mqtt_server, mqtt_port); |
client.setCallback (terugbel); |
vertraging (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 waarde; |
char vorige waarde; |
as (! client.connected ()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println ("verbind"); |
} |
} |
terwyl (pmSerial.available ()) { |
waarde = pmSerial.read (); |
as ((indeks == 0 && waarde! = 0x42) || (indeks == 1 && waarde! = 0x4d)) { |
Serial.println ("Kan nie die data -kop kry nie."); |
terugkeer; |
} |
if (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) { |
vorige waarde = waarde; |
} |
elseif (indeks == 5) { |
pm1 = 256 * vorige waarde + waarde; |
root ["pm1"] = abs (pm1); |
} |
elseif (indeks == 7) { |
pm2_5 = 256 * vorige waarde + waarde; |
root ["pm2_5"] = abs (pm2_5); |
} |
elseif (indeks == 9) { |
pm10 = 256 * vorige waarde + waarde; |
root ["pm10"] = abs (pm10); |
} |
elseif (indeks> 15) { |
breek; |
} |
indeks ++; |
} |
terwyl (pmSerial.available ()) pmSerial.read (); |
int chk = DHT.read11 (DHT11_PIN); |
as (DHT.temperatuur == -999 || DHT.vochtigheid == -999) { |
root ["temperatuur"] = "Nvt"; |
root ["humiditeit"] = "Nvt"; |
} anders { |
root ["temperatuur"] = DHT.temperatuur; |
root ["humiditeit"] = DHT.vochtigheid; |
} |
sendResults (); |
id ++; |
vertraging (5000); |
} |
voidsendResults () { |
// publiseer aan MQTT |
char jsonChar [100]; |
root.printTo (jsonChar); |
Serial.println (client.publish ("arduino", jsonChar)); |
// ontfout na reeks |
root.printTo (reeks); |
Serial.print ('\ n'); |
} |
// Hanteer boodskappe oor onderwerpe wat ingeskryf is |
voidcallback (char* topic, byte* payload, unsignedint length) { |
} |
sien rawair_quality.ino aangebied deur ❤ deur GitHub
Stap 4: Monteer die boks
Ek gebruik net 'n boks wat ek lê en boor 'n gat vir die sensor om lug uit te kry en sny 'n gat uit om die kabels uit te gaan (alhoewel dit 'n bietjie te groot was).
Ek het gomblokkies gebruik om die sensor aan die boks vas te maak en die ingangsgat van die sensor in lyn te bring met die geboorde gat op die boks.
Uiteindelik het ek die ethernet- en kragkabels aangesluit.
Aanbeveel:
Xpedit - Toestemming vir atmosfeermonitering vir stap en trekking: 12 stappe (met foto's)
Xpedit - Atmosfeermonitoringsapparaat vir stap en trekking: as u van plan is om 'n avontuurlike reis of in die natuur te onderneem, is dit noodsaaklik om 'n toestel in u rugsak te hê wat u help om die omgewing te verstaan. Vir my komende avontuurreis was ek van plan om 'n draagbare toestel te bou wat help
Muurhouer vir iPad as bedieningspaneel vir tuisautomatisering, met behulp van servo -beheerde magneet om die skerm te aktiveer: 4 stappe (met foto's)
Muurhouer vir iPad as 'n bedieningspaneel vir tuisautomatisering, met behulp van 'n servo -beheerde magneet om die skerm te aktiveer: Ek het die afgelope tyd baie tyd spandeer om dinge in en om my huis te outomatiseer. Ek gebruik Domoticz as my Home Automation -toepassing, sien www.domoticz.com vir meer inligting. In my soeke na 'n dashboard -toepassing wat alle Domoticz -inligting saam wys
ForgetMeNot - platform vir kennisgewings vir slim huise: 14 stappe (met foto's)
ForgetMeNot - platform vir kennisgewings vir slim huise: As besige kollege studente wat rondloop tussen klasse, werk en gesinsverpligtinge, is ons geneig om die klein dingetjies te vergeet. 'N Verjaarsdag kom en gaan sonder dat ons dit agterkom, 'n belangrike sperdatum word misgeloop vanweë blote vergeetagtigheid en soms, net
Laserwyser vir brille gemonteer vir mense met bewegingsgestremdhede: 9 stappe (met foto's)
Laserwyser vir brille vir mense met bewegingsgestremdhede: Mense met ernstige bewegingsgestremdhede soos serebrale gestremdheid het dikwels ingewikkelde kommunikasiebehoeftes. Dit kan van hulle verwag word om borde met die alfabet te gebruik of woorde wat gereeld daarop gedruk word om kommunikasie te vergemaklik. Baie
Begin met die bou van 'n PM -moniteringstasie: 3 stappe (met foto's)
Begin met die bou van 'n PM -moniteringstasie: ek is veral geïnteresseerd in lugbesoedelingsvlakke, want ek woon in China en hoewel my stad, Shenzhen, waarskynlik een van die skoonste stede in China is, het dit nog steeds sy slegte dae. wou my eie bou om te vergelyk met die halfdosyn lug