Talaan ng mga Nilalaman:

Station ng Pagsubaybay na Pinapatakbo ng Arduino Powered Dust: 4 Mga Hakbang (na may Mga Larawan)
Station ng Pagsubaybay na Pinapatakbo ng Arduino Powered Dust: 4 Mga Hakbang (na may Mga Larawan)

Video: Station ng Pagsubaybay na Pinapatakbo ng Arduino Powered Dust: 4 Mga Hakbang (na may Mga Larawan)

Video: Station ng Pagsubaybay na Pinapatakbo ng Arduino Powered Dust: 4 Mga Hakbang (na may Mga Larawan)
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Nobyembre
Anonim
Ang Arduino Powered Dust Particle Monitoring Station
Ang Arduino Powered Dust Particle Monitoring Station

Maaari mong madaling bumuo ng isang DIY internet ng mga bagay na aparato na sinusubaybayan ang polusyon sa alikabok sa iyong bahay nang mas mababa sa $ 50 at maabisuhan kapag ang antas ng alikabok ay napakataas upang ma-aerate mo ang silid, o maaari mo itong itakda sa labas at maabisuhan kung ito ay ligtas na lumabas sa labas kung nakatira ka sa isang lugar na lubos na marumi.

Ginawa ko ito bilang isang proyekto sa paaralan, kaya wala akong sapat na oras upang maghanap ng serbisyo na kukuha ng mga mensahe sa MQTT at ipadala ito sa iyo tulad ng mga abiso o email.

Tandaan din na ang pagpapanatili ng sensor na pinalakas sa lahat ng oras ay makakabawas sa buhay ng fan.

Hakbang 1: Kailangan ng Mga Bahagi

Mga Bahaging Kailangan
Mga Bahaging Kailangan

Kung ano ang kakailanganin mo

  • Arduino Uno
  • Kalasag ng Arduino Ethernet
  • Pag-usapan ang sensor ng bagay na laser (karaniwang pumupunta sa $ 10- $ 30 sa eBay / aliexpress)
  • DHT11 temperatura at kahalumigmigan sensor (opsyonal)
  • Breadboard
  • Mga kable ng jumper

Hakbang 2: Ipunin ang Mga Bahagi

Ipunin ang Mga Bahagi
Ipunin ang Mga Bahagi

Una, kailangan mong i-plug ang ethernet na kalasag sa Arduino

Ang PM sensor ay may maraming mga wires, ngunit ang kailangan namin ay VCC, GND, TX, RX.

Ikonekta ang VCC at GND sa + at - sa breadboard ayon sa pagkakabanggit.

Ang Arduino ay may mga hardware na RX at TX pin, ngunit gagamitin namin ang software na gayahin ng mga RX at TX pin sa mga pin na 2 at 3 ayon sa pagkakabanggit. I-plug ang RX ng sensor sa TX ng Arduino at TX ng sensor sa RX ng Arduino.

Kung gagamit ka ng sensor ng temperatura, i-plug ang mga linya ng VCC at GND sa + at - sa Breadboard at linya ng data upang i-pin ang 7.

Hakbang 3: Ang Code

Maaari kang mag-install ng MQTT broker sa isang raspberry pi o isang computer na palagi mong nasa bahay, o gumamit ng isang serbisyo ng cloud MQTT, tulad ng Cloud MQTT. Pagkatapos ay maaari kang magsulat ng isang script na nagpapadala ng data bilang HTTP sa isang webhook ng IFTT, dahil hindi pa nila sinusuportahan ang mga webhook ng MQTT at nag-set up ng mga abiso kung kailan masyadong mataas ang antas ng alikabok sa iyong tahanan.

Istasyon ng hangin sa Arduino

# isama
# isama
# isama
# isama
# isama
# isama
# isama
# isama
# kahuluganDHT11_PIN7
# kahuluganRX_PIN2
# tukuyinTX_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"; // Client koneksyon cant ay may parehong pangalan ng koneksyon
EthernetClient ethClient;
PubSubClient client (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
unsignedlong id;
// File 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;
kung (Ethernet.begin (mac) == 0)
{
Serial.println ("Nabigong i-configure ang Ethernet gamit ang DHCP");
// pagtatangka gamit ang nakapirming ip addr
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (callback);
pagkaantala (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;
halaga ng char;
char nakaraangValue;
kung (! client.connected ())
{
kung (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("konektado");
}
}
habang (pmSerial.available ()) {
halaga = pmSerial.read ();
kung ((index == 0 && halaga! = 0x42) || (index == 1 && halaga! = 0x4d)) {
Serial.println ("Hindi mahanap ang header ng data.");
bumalik;
}
kung (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
nakaraangValue = halaga;
}
kung hindi man (index == 5) {
pm1 = 256 * nakaraangValue + halaga;
ugat ["pm1"] = abs (pm1);
}
kung hindi man (index == 7) {
pm2_5 = 256 * nakaraangValue + halaga;
ugat ["pm2_5"] = abs (pm2_5);
}
kung hindi man (index == 9) {
pm10 = 256 * nakaraangValue + halaga;
ugat ["pm10"] = abs (pm10);
}
kung hindi man (index> 15) {
pahinga;
}
index ++;
}
habang (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
kung (DHT.temperature == -999 || DHT.humidity == -999) {
ugat ["temperatura"] = "N / A";
ugat ["kahalumigmigan"] = "N / A";
} iba pa {
ugat ["temperatura"] = DHT.temperature;
ugat ["kahalumigmigan"] = DHT.humidity;
}
sendResults ();
id ++;
pagkaantala (5000);
}
voidsendResults () {
// i-publish sa MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// debug to serial
root.printTo (Serial);
Serial.print ('\ n');
}
// Hinahawakan ang mga mensahe sa (mga) naka-subscribe na paksa
voidcallback (char * topic, byte * payload, unsignedint haba) {
}

tingnan ang rawair_quality.ino na naka-host sa ❤ ng GitHub

Hakbang 4: Magtipon ng Kahon

Ipunin ang Kahon
Ipunin ang Kahon
Ipunin ang Kahon
Ipunin ang Kahon
Ipunin ang Kahon
Ipunin ang Kahon

Gumamit lang ako ng isang kahon na nakahiga ako at nag-drill ng isang butas para makakuha ng hangin ang sensor at gupitin ang isang butas para lumabas ang mga kable (bagaman medyo malaki ito).

Gumamit ako ng mga pandikit upang ilakip ang sensor sa kahon, na pinapantay ang butas ng pag-input ng sensor na may drill na butas sa kahon.

Sa wakas, isinaksak ko ang ethernet at mga kable ng kuryente.

Inirerekumendang: