Innholdsfortegnelse:

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

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

Video: Arduino Powered Dust Particles Monitoring Station: 4 trinn (med bilder)
Video: DIY Air Quality Monitor - PM2.5, CO2, VOC, Ozone, Temp & Hum Arduino Meter 2024, November
Anonim
Arduino drevet støvpartikler overvåking stasjon
Arduino drevet støvpartikler overvåking stasjon

Du kan ganske enkelt bygge en DIY -enhet for ting som overvåker støvforurensning i hjemmet ditt for mindre enn $ 50 og bli varslet når støvnivået blir for høyt, slik at du kan lufte rommet, eller du kan sette det utenfor og bli varslet om det er trygt å gå utenfor hvis du bor i et sterkt forurenset område.

Jeg laget dette som et skoleprosjekt, så jeg hadde ikke nok tid til å finne en tjeneste som tar MQTT -meldinger og sender dem til deg som varsler eller e -post.

Vær også oppmerksom på at det å holde sensoren drevet til enhver tid vil redusere viftens levetid.

Trinn 1: Nødvendige deler

Nødvendige deler
Nødvendige deler

Hva du trenger

  • Arduino Uno
  • Arduino Ethernet -skjerm
  • Partikkelmateriale lasersensor (koster vanligvis $ 10- $ 30 på eBay/aliexpress)
  • DHT11 temperatur- og fuktighetssensor (valgfritt)
  • Brødbrett
  • Hoppekabler

Trinn 2: Monter delene

Monter delene
Monter delene

Først må du koble ethernet -skjoldet på Arduino

PM -sensoren har flere ledninger, men de vi trenger er VCC, GND, TX, RX.

Koble VCC og GND til henholdsvis + og - på brødbrettet.

Arduino har maskinvare RX og TX pins, men vi bruker programvareemulering av henholdsvis RX og TX pins på pins 2 og 3. Koble sensorens RX til TX på Arduino og TX på sensoren til RX på Arduino.

Hvis du skal bruke temperatursensoren, kobler du VCC- og GND -linjene til + og - på brødbrettet og datalinjen til pinne 7.

Trinn 3: Koden

Du kan enten installere MQTT -megler på en bringebærpi eller en datamaskin du alltid har på hjemme, eller bruke en MQTT -tjeneste i skyen, som Cloud MQTT. Deretter kan du skrive et skript som sender dataene som HTTP til en IFTT webhook, ettersom de ennå ikke støtter MQTT webhooks og konfigurerer varsler for når støvnivåer i hjemmet ditt blir for høyt.

Arduino flystasjon

#inkludere

#inkludere
#inkludere
#inkludere
#inkludere
#inkludere

#inkludere

#inkludere
#defineDHT11_PIN7
#definereRX_PIN2
#definereTX_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"; // Klientforbindelser kan ikke ha samme tilkoblingsnavn
EthernetClient ethClient;
PubSubClient -klient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
usignert lang ID;
// Fil myFile;
Streng s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
hvis (Ethernet.begin (mac) == 0)
{
Serial.println ("Kunne ikke konfigurere Ethernet ved hjelp av DHCP");
// forsøk med fast ip addr
Ethernet.begynner (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (tilbakeringing);
forsinkelse (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øye verdi;
char previousValue;
hvis (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("tilkoblet");
}
}
while (pmSerial.available ()) {
verdi = pmSerial.read ();
hvis ((indeks == 0 && verdi! = 0x42) || (indeks == 1 && verdi! = 0x4d)) {
Serial.println ("Kan ikke finne dataoverskriften.");
komme tilbake;
}
hvis (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) {
previousValue = verdi;
}
elseif (indeks == 5) {
pm1 = 256 * forrige verdi + verdi;
root ["pm1"] = abs (pm1);
}
elseif (indeks == 7) {
pm2_5 = 256 * forrige verdi + verdi;
root ["pm2_5"] = abs (pm2_5);
}
elseif (indeks == 9) {
pm10 = 256 * forrige verdi + verdi;
root ["pm10"] = abs (pm10);
}
elseif (indeks> 15) {
gå i stykker;
}
indeks ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
hvis (DHT.temperatur == -999 || DHT.fuktighet == -999) {
root ["temperatur"] = "Ikke relevant";
root ["fuktighet"] = "N/A";
} annet {
root ["temperatur"] = DHT.temperatur;
root ["fuktighet"] = DHT.fuktighet;
}
sendResults ();
id ++;
forsinkelse (5000);
}
voidsendResults () {
// publiser til MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// debug to serial
root.printTo (seriell);
Serial.print ('\ n');
}
// Håndterer meldinger som kommer om emne (r) som abonnerer
voidcallback (tegn* emne, byte* nyttelast, usignert lengde) {
}

se rawair_quality.ino hostet av ❤ av GitHub

Trinn 4: Monter esken

Monter esken
Monter esken
Monter esken
Monter esken
Monter esken
Monter esken

Jeg brukte bare en boks jeg hadde liggende og boret et hull for sensoren for å få luft fra og kuttet ut et hull for at kablene skulle gå ut (selv om det var litt for stort).

Jeg brukte limputer for å feste sensoren til esken, og justere inngangshullet til sensoren med det borede hullet på esken.

Til slutt koblet jeg til ethernet og strømkabler.

Anbefalt: