Inhaltsverzeichnis:

Arduino-betriebene Staubpartikel-Überwachungsstation - Gunook
Arduino-betriebene Staubpartikel-Überwachungsstation - Gunook

Video: Arduino-betriebene Staubpartikel-Überwachungsstation - Gunook

Video: Arduino-betriebene Staubpartikel-Überwachungsstation - Gunook
Video: How to Make Hydraulic Powered Claw Machine from Cardboard 2024, Dezember
Anonim
Arduino-betriebene Staubpartikel-Überwachungsstation
Arduino-betriebene Staubpartikel-Überwachungsstation

Sie können ziemlich einfach ein DIY-Internet der Dinge bauen, das die Staubverschmutzung in Ihrem Zuhause für weniger als 50 US-Dollar überwacht und benachrichtigt wird, wenn der Staubgehalt zu hoch wird, damit Sie den Raum belüften können, oder Sie können es nach draußen stellen und benachrichtigt werden, wenn dies der Fall ist Sie können sicher nach draußen gehen, wenn Sie in einer stark verschmutzten Gegend leben.

Ich habe dies als Schulprojekt erstellt, daher hatte ich nicht genug Zeit, um einen Dienst zu finden, der MQTT-Nachrichten entgegennimmt und sie wie Benachrichtigungen oder E-Mails an Sie sendet.

Beachten Sie auch, dass die ständige Stromversorgung des Sensors die Lebensdauer des Lüfters verkürzt.

Schritt 1: Benötigte Teile

Benötigte Teile
Benötigte Teile

Was du brauchen wirst

  • Arduino Uno
  • Arduino-Ethernet-Schild
  • Partikellasersensor (normalerweise für 10 bis 30 US-Dollar bei eBay / aliexpress)
  • DHT11 Temperatur- und Feuchtigkeitssensor (optional)
  • Steckbrett
  • Überbrückungskabel

Schritt 2: Montieren Sie die Teile

Montieren Sie die Teile
Montieren Sie die Teile

Zuerst müssen Sie das Ethernet-Shield auf den Arduino stecken

Der PM-Sensor hat mehrere Drähte, aber die, die wir brauchen, sind VCC, GND, TX, RX.

Verbinden Sie VCC und GND mit + bzw. - auf dem Steckbrett.

Der Arduino hat Hardware-RX- und TX-Pins, aber wir verwenden die Software-Emulation von RX- und TX-Pins an den Pins 2 bzw. 3. Stecken Sie den RX des Sensors auf den TX des Arduino und den TX des Sensors auf den RX des Arduino.

Wenn Sie den Temperatursensor verwenden möchten, stecken Sie die VCC- und GND-Leitungen an + und - am Steckbrett und die Datenleitung an Pin 7.

Schritt 3: Der Code

Sie können den MQTT-Broker entweder auf einem Raspberry Pi oder einem Computer installieren, den Sie immer zu Hause haben, oder einen Cloud-MQTT-Dienst wie Cloud MQTT verwenden. Dann können Sie ein Skript schreiben, das die Daten als HTTP an einen IFTT-Webhook sendet, da diese MQTT-Webhooks noch nicht unterstützen, und Benachrichtigungen einrichten, wenn die Staubbelastung in Ihrem Zuhause zu hoch wird.

Arduino-Flugstation

#enthalten

#enthalten
#enthalten
#enthalten
#enthalten
#enthalten

#enthalten

#enthalten
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IP-Adresse ip(169, 169, 100, 98);
Byte-Mac = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
konstant mqtt_port = 11895;
constchar *mqtt_user = "jhetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // Clientverbindungen dürfen nicht denselben Verbindungsnamen haben
EthernetClient ethClient;
PubSubClient-Client (ethClient);
SoftwareSerial pmSerial(RX_PIN, TX_PIN);
dht-DHT;
int pm1;
int pm2_5;
int pm10;
unsignedlong id;
//Datei meineDatei;
Zeichenfolge 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("Ethernet konnte nicht mit DHCP konfiguriert werden");
// Versuch mit fester IP-Adresse
Ethernet.begin(mac, ip);
}
client.setServer(mqtt_server, mqtt_port);
client.setCallback (Rückruf);
Verzögerung (2000);
Serial.println (Ethernet.localIP());
client.connect("arduinoClient", mqtt_user, mqtt_pass);
Serial.print("rc=");
Serial.print (client.state ());
Serial.print("\n");
}
Leerschleife () {
intindex = 0;
Zeichenwert;
char vorherigerWert;
if (!client.connected())
{
if (client.connect("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("verbunden");
}
}
while (pmSerial.available()) {
Wert = pmSerial.read();
if ((Index == 0 && Wert != 0x42) || (Index == 1 && Wert != 0x4d)) {
Serial.println ("Kann den Datenheader nicht finden.");
Rückkehr;
}
if (Index == 4 || Index == 6 || Index == 8 || Index == 10 || Index == 12 || Index == 14) {
vorherigerWert = Wert;
}
sonst (index == 5) {
pm1 = 256 * vorherigerWert + Wert;
root["pm1"] = abs(pm1);
}
sonst (index == 7) {
pm2_5 = 256 * vorherigerWert + Wert;
root["pm2_5"] = abs(pm2_5);
}
sonst (index == 9) {
pm10 = 256 * vorherigerWert + Wert;
root["pm10"] = abs(pm10);
}
sonst (Index >15) {
brechen;
}
index++;
}
while (pmSerial.available()) pmSerial.read();
int chk = DHT.read11(DHT11_PIN);
if (DHT. Temperatur == -999 || DHT. Luftfeuchtigkeit == -999) {
root["Temperatur"] = "N/A";
root["Luftfeuchtigkeit"] = "N/A";
} anders {
root["temperatur"] = DHT.temperatur;
root["Luftfeuchtigkeit"] = DHT. Luftfeuchtigkeit;
}
sendResults();
id++;
Verzögerung (5000);
}
voidsendResults() {
// in MQTT veröffentlichen
char jsonChar[100];
root.printTo(jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// Debug auf seriell
root.printTo(Seriell);
Serial.print ('\n');
}
// Behandelt eingehende Nachrichten zu abonnierten Themen
voidcallback(char* topic, byte* payload, unsignedint Länge) {
}

view rawair_quality.ino hosted with ❤ by GitHub

Schritt 4: Bauen Sie die Box zusammen

Bauen Sie die Box zusammen
Bauen Sie die Box zusammen
Bauen Sie die Box zusammen
Bauen Sie die Box zusammen
Bauen Sie die Box zusammen
Bauen Sie die Box zusammen

Ich habe einfach eine Box benutzt, die ich herumgelegt hatte, und ein Loch für den Sensor gebohrt, um Luft zu bekommen, und ein Loch für die Kabel ausgeschnitten (obwohl es etwas zu groß war).

Ich habe Klebepads verwendet, um den Sensor an der Box zu befestigen und das Eingangsloch des Sensors mit dem gebohrten Loch auf der Box auszurichten.

Schließlich habe ich das Ethernet- und das Stromkabel angeschlossen.

Empfohlen: