Inhoudsopgave:

Arduino aangedreven stofdeeltjes bewakingsstation - Ajarnpa
Arduino aangedreven stofdeeltjes bewakingsstation - Ajarnpa

Video: Arduino aangedreven stofdeeltjes bewakingsstation - Ajarnpa

Video: Arduino aangedreven stofdeeltjes bewakingsstation - Ajarnpa
Video: LEGO trein aangedreven met Arduino 2024, December
Anonim
Arduino aangedreven stofdeeltjes bewakingsstation
Arduino aangedreven stofdeeltjes bewakingsstation

Je kunt vrij eenvoudig een doe-het-zelf-apparaat voor internet van dingen bouwen dat stofvervuiling in je huis bewaakt voor minder dan $ 50 en een melding krijgen wanneer het stofniveau te hoog wordt, zodat je de kamer kunt verluchten, of je kunt het buiten zetten en een melding krijgen als het is veilig om naar buiten te gaan als je in een sterk vervuild gebied woont.

Ik heb dit gemaakt als een schoolproject, dus ik had niet genoeg tijd om een dienst te vinden die MQTT-berichten aanneemt en naar je stuurt zoals meldingen of e-mails.

Houd er ook rekening mee dat als u de sensor altijd van stroom houdt, de levensduur van de ventilator wordt verkort.

Stap 1: benodigde onderdelen

Onderdelen nodig
Onderdelen nodig

Wat je nodig hebt

  • Arduino Uno
  • Arduino Ethernet-schild
  • Fijnstoflasersensor (ga meestal voor $ 10- $ 30 op eBay/aliexpress)
  • DHT11 temperatuur- en vochtigheidssensor (optioneel)
  • Breadboard
  • Startkabels

Stap 2: Monteer de onderdelen

Monteer de onderdelen
Monteer de onderdelen

Eerst moet je het ethernet-schild op de Arduino aansluiten

De PM-sensor heeft meerdere draden, maar degene die we nodig hebben zijn VCC, GND, TX, RX.

Sluit de VCC en GND respectievelijk aan op + en - op het breadboard.

De Arduino heeft hardware RX- en TX-pinnen, maar we gebruiken software-emulatie van RX- en TX-pinnen op respectievelijk pinnen 2 en 3. Sluit de RX van de sensor aan op TX van de Arduino en TX van de sensor op RX van de Arduino.

Als u de temperatuursensor gaat gebruiken, sluit u de VCC- en GND-lijnen aan op + en - op het Breadboard en de datalijn op pin 7.

Stap 3: De code

Je kunt MQTT-broker installeren op een Raspberry pi of een computer die je altijd thuis hebt staan, of je kunt een cloud MQTT-service gebruiken, zoals Cloud MQTT. Vervolgens kun je een script schrijven dat de gegevens als HTTP naar een IFTT-webhook stuurt, aangezien deze nog geen MQTT-webhooks ondersteunen, en meldingen instellen voor wanneer de stofniveaus in je huis te hoog worden.

Arduino luchtstation

#erbij betrekken

#erbij betrekken
#erbij betrekken
#erbij betrekken
#erbij betrekken
#erbij betrekken

#erbij betrekken

#erbij betrekken
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IP-adres ip(169, 169, 100, 98);
byte-mac = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
consint mqtt_port = 11895;
constchar *mqtt_user = "jhetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // Clientverbindingen kunnen niet dezelfde verbindingsnaam hebben
EthernetClient ethClient;
PubSubClient-client (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht-DHT;
int pm1;
int pm2_5;
int pm10;
niet-ondertekende lange id;
//Bestand mijn bestand;
Tekenreeksen;
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
voidsetup() {
Serieel.begin(57600);
pmSerial.begin(9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
if (Ethernet.begin(mac) == 0)
{
Serial.println("Kan Ethernet niet configureren met DHCP");
// poging met vast ip-adres
Ethernet.begin(mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setTerugbellen (terugbellen);
vertraging (2000);
Serial.println(Ethernet.localIP());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Serieel.print("rc=");
Serial.print(client.state());
Serieel.print("\n");
}
voidloop() {
intindex = 0;
char-waarde;
char vorigeWaarde;
if (!client.connected())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println("verbonden");
}
}
while (pmSerial.available()) {
waarde = pmSerial.read();
if ((index == 0 && waarde != 0x42) || (index == 1 && waarde != 0x4d)) {
Serial.println("Kan de gegevenskop niet vinden.");
opbrengst;
}
if (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
vorigeWaarde = waarde;
}
andersif (index == 5) {
pm1 = 256 * vorige Waarde + waarde;
root["pm1"] = abs(pm1);
}
andersif (index == 7) {
pm2_5 = 256 * vorige Waarde + waarde;
root["pm2_5"] = abs(pm2_5);
}
andersif (index == 9) {
pm10 = 256 * vorige Waarde + waarde;
root["pm10"] = abs(pm10);
}
andersif (index >15) {
pauze;
}
index++;
}
while (pmSerial.available()) pmSerial.read();
int chk = DHT.read11(DHT11_PIN);
if (DHT.temperatuur == -999 || DHT.vochtigheid == -999) {
root["temperatuur"] = "N.v.t.";
root["vochtigheid"] = "N.v.t.";
} anders {
root["temperatuur"] = DHT.temperatuur;
root["vochtigheid"] = DHT.vochtigheid;
}
sendResultaten();
id++;
vertraging (5000);
}
voidsendResultaten() {
// publiceren naar MQTT
char jsonChar [100];
root.printTo(jsonChar);
Serial.println(client.publish("arduino", jsonChar));
// debuggen naar serieel
root.printTo(Seriële);
Serieel.print('\n');
}
// Verwerkt berichten die zijn binnengekomen op geabonneerde onderwerp(en)
voidcallback(char* onderwerp, byte* payload, unsignedint lengte) {
}

bekijk rawair_quality.ino gehost met ❤ door GitHub

Stap 4: Monteer de doos

Monteer de doos
Monteer de doos
Monteer de doos
Monteer de doos
Monteer de doos
Monteer de doos

Ik gebruikte gewoon een doos die ik had liggen en boorde een gat voor de sensor om lucht uit te krijgen en knipte een gat uit zodat de kabels eruit konden gaan (hoewel het een beetje te groot was).

Ik heb lijmkussentjes gebruikt om de sensor aan de doos te bevestigen, waarbij ik het invoergat van de sensor uitlijnde met het geboorde gat in de doos.

Ten slotte heb ik de ethernet- en stroomkabels aangesloten.

Aanbevolen: