Innehållsförteckning:

Arduino Powered Dust Particles Monitoring Station: 4 steg (med bilder)
Arduino Powered Dust Particles Monitoring Station: 4 steg (med bilder)

Video: Arduino Powered Dust Particles Monitoring Station: 4 steg (med bilder)

Video: Arduino Powered Dust Particles Monitoring Station: 4 steg (med bilder)
Video: High Density 2022 2024, Juli
Anonim
Arduino Powered Dust Particles Monitoring Station
Arduino Powered Dust Particles Monitoring Station

Du kan ganska enkelt bygga en DIY -enhet för saker som övervakar dammföroreningar i ditt hem för mindre än $ 50 och få ett meddelande när dammnivån blir för hög så att du kan lufta rummet, eller så kan du ställa det utanför och få ett meddelande om det är säkert att gå ut om du bor i ett mycket förorenat område.

Jag gjorde detta som ett skolprojekt, så jag hade inte tillräckligt med tid att hitta en tjänst som tar MQTT -meddelanden och skickar dem till dig som meddelanden eller e -postmeddelanden.

Observera också att när du håller sensorn påslagen hela tiden minskar fläktens livslängd.

Steg 1: Delar som behövs

Delar som behövs
Delar som behövs

Vad du behöver

  • Arduino Uno
  • Arduino Ethernet -sköld
  • Partikelsensorsensor (kostar vanligtvis $ 10- $ 30 på eBay/aliexpress)
  • DHT11 temperatur- och fuktsensor (tillval)
  • Bakbord
  • Startkablar

Steg 2: Montera delarna

Montera delarna
Montera delarna

Först måste du ansluta ethernet -skärmen på Arduino

PM -sensorn har flera ledningar, men de vi behöver är VCC, GND, TX, RX.

Anslut VCC och GND till + och - på brödbrädan.

Arduino har hårdvaru -RX- och TX -stift, men vi kommer att använda programvaruemulering av RX- och TX -stift på stift 2 respektive 3. Anslut sensorns RX till TX på Arduino och TX på sensorn till RX på Arduino.

Om du ska använda temperatursensorn, anslut VCC- och GND -linjerna till + och - på brödbrädan och dataraden till stift 7.

Steg 3: Koden

Du kan antingen installera MQTT -mäklare på en hallon -pi eller en dator som du alltid har på hemma, eller använda en moln -MQTT -tjänst, som Cloud MQTT. Sedan kan du skriva ett skript som skickar data som HTTP till en IFTT -webhook, eftersom de ännu inte stöder MQTT -webhooks och ställer in aviseringar för när dammnivåer i ditt hem blir för höga.

Arduino flygstation

#omfatta
#omfatta
#omfatta
#omfatta
#omfatta
#omfatta
#omfatta
#omfatta
#definieraDHT11_PIN7
#definieraRX_PIN2
#definieraTX_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"; // Klientanslutningar kan inte ha samma anslutningsnamn
EthernetClient etClient;
PubSubClient -klient (etClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
osignerat långt id;
// File myFile;
Sträng 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 ("Det gick inte att konfigurera Ethernet med DHCP");
// försök med fast ip addr
Ethernet. Börjar (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (återuppringning);
fördröjning (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;
röding värde;
char previousValue;
om (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("ansluten");
}
}
medan (pmSerial.available ()) {
värde = pmSerial.read ();
if ((index == 0 && värde! = 0x42) || (index == 1 && värde! = 0x4d)) {
Serial.println ("Kan inte hitta datahuvudet.");
lämna tillbaka;
}
if (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
föregående värde = värde;
}
elseif (index == 5) {
pm1 = 256 * föregående värde + värde;
root ["pm1"] = abs (pm1);
}
elseif (index == 7) {
pm2_5 = 256 * föregående värde + värde;
root ["pm2_5"] = abs (pm2_5);
}
elseif (index == 9) {
pm10 = 256 * föregående värde + värde;
root ["pm10"] = abs (pm10);
}
elseif (index> 15) {
ha sönder;
}
index ++;
}
medan (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
om (DHT.temperatur == -999 || DHT.fuktighet == -999) {
root ["temperatur"] = "Ej tillgängligt";
root ["fuktighet"] = "Ej tillgängligt";
} annat {
root ["temperatur"] = DHT.temperatur;
root ["fuktighet"] = DHT.fuktighet;
}
sendResults ();
id ++;
fördröjning (5000);
}
voidsendResults () {
// publicera till MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// felsöka till seriell
root.printTo (seriell);
Serial.print ('\ n');
}
// Hanterar meddelanden som kommit till ämnen som prenumererar
voidcallback (karaktär* ämne, byte* nyttolast, osignerad längd) {
}

visa rawair_quality.ino värd med ❤ av GitHub

Steg 4: Montera lådan

Montera lådan
Montera lådan
Montera lådan
Montera lådan
Montera lådan
Montera lådan

Jag använde bara en låda som jag hade liggande och borrade ett hål för sensorn för att få luft från och skar ut ett hål för att kablarna skulle gå ut (även om det var lite för stort).

Jag använde limkuddar för att fästa sensorn i lådan och anpassa sensorns ingångshål med det borrade hålet på lådan.

Slutligen kopplade jag in ethernet och strömkablarna.

Rekommenderad: