Sisällysluettelo:

Arduinolla toimiva pölyhiukkasten valvonta -asema: 4 vaihetta (kuvilla)
Arduinolla toimiva pölyhiukkasten valvonta -asema: 4 vaihetta (kuvilla)

Video: Arduinolla toimiva pölyhiukkasten valvonta -asema: 4 vaihetta (kuvilla)

Video: Arduinolla toimiva pölyhiukkasten valvonta -asema: 4 vaihetta (kuvilla)
Video: Kuidas juhtida täiturit Arduino - Robojaxi abil 2024, Heinäkuu
Anonim
Arduinolla toimiva pölyhiukkasten valvonta -asema
Arduinolla toimiva pölyhiukkasten valvonta -asema

Voit melko helposti rakentaa esineiden internet -laitteen, joka valvoo kodin pölysaastetta alle 50 dollarilla, ja saada ilmoituksen, kun pölypinta nousee liian korkeaksi, jotta voit tuulettaa huoneen tai voit asettaa sen ulos ja saada ilmoituksen, jos se on turvallista mennä ulos, jos asut erittäin saastuneella alueella.

Tein tämän kouluprojektina, joten minulla ei ollut tarpeeksi aikaa löytää palvelua, joka ottaa MQTT -viestit ja lähettää ne sinulle ilmoitusten tai sähköpostien tavoin.

Huomaa myös, että anturin pitäminen jatkuvasti käynnissä lyhentää tuulettimen käyttöikää.

Vaihe 1: Tarvittavat osat

Tarvittavat osat
Tarvittavat osat

Mitä tarvitset

  • Arduino Uno
  • Arduino Ethernet -suoja
  • Hiukkaslaser-anturi (yleensä 10–30 dollaria eBayssa/aliexpressissä)
  • DHT11 lämpötila- ja kosteusanturi (valinnainen)
  • Leipälauta
  • Käynnistyskaapelit

Vaihe 2: Kokoa osat

Kokoa osat
Kokoa osat

Ensin sinun on kytkettävä Arduinon ethernet -suoja

PM -anturissa on useita johtoja, mutta tarvitsemme VCC, GND, TX, RX.

Kytke VCC ja GND vastaavasti + ja - leipälevylle.

Arduinolla on laitteisto -RX- ja TX -nastat, mutta käytämme RX- ja TX -nastojen ohjelmistoemulointia nastoissa 2 ja 3. Liitä anturin RX Arduinon TX: hen ja anturin TX Arduinon RX: ään.

Jos aiot käyttää lämpötila -anturia, kytke VCC- ja GND -rivit Breadboard -levyn + ja - ja tietolinja nastaan 7.

Vaihe 3: Koodi

Voit joko asentaa MQTT -välittäjän vadelmapi: lle tai tietokoneelle, joka on aina kotona, tai käyttää pilvipalvelua, kuten Cloud MQTT. Sitten voit kirjoittaa komentosarjan, joka lähettää tiedot HTTP -muodossa IFTT -webhookille, koska ne eivät vielä tue MQTT -webhookeja, ja määrittää ilmoitukset, kun kodin pölypinta nousee liian korkeaksi.

Arduinon lentoasema

#sisältää

#sisältää
#sisältää
#sisältää
#sisältää
#sisältää

#sisältää

#sisältää
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPA -osoite ip (169, 169, 100, 98);
tavu 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"; // Asiakasyhteyksillä ei voi olla sama yhteyden nimi
EthernetClient ethClient;
PubSubClient -asiakas (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
unsignedlong -tunnus;
// Tiedosto myFile;
Jono s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Sarja.alku (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
jos (Ethernet.begin (mac) == 0)
{
Serial.println ("Ethernetin määrittäminen epäonnistui DHCP: n avulla");
// yritä kiinteällä IP -osoitteella
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_palvelin, mqtt_port);
client.setCallback (takaisinsoitto);
viive (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;
char -arvo;
char previousValue;
jos (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("kytketty");
}
}
while (pmSerial.available ()) {
arvo = pmSerial.read ();
if ((indeksi == 0 && arvo! = 0x42) || (indeksi == 1 && arvo! = 0x4d)) {
Serial.println ("Tietootsikkoa ei löydy.");
palata;
}
jos (indeksi == 4 || indeksi == 6 || indeksi == 8 || indeksi == 10 || indeksi == 12 || indeksi == 14) {
previousValue = arvo;
}
elseif (indeksi == 5) {
pm1 = 256 * previousValue + arvo;
root ["pm1"] = abs (pm1);
}
elseif (indeksi == 7) {
pm2_5 = 256 * previousValue + arvo;
root ["pm2_5"] = abs (pm2_5);
}
elseif (indeksi == 9) {
pm10 = 256 * previousValue + arvo;
root ["pm10"] = abs (pm10);
}
elseif (indeksi> 15) {
tauko;
}
indeksi ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
jos (DHT.lämpötila == -999 || DHT.kosteus == -999) {
root ["lämpötila"] = "N/A";
root ["kosteus"] = "N/A";
} muuta {
root ["lämpötila"] = DHT.lämpötila;
root ["kosteus"] = DHT.kosteus;
}
sendResults ();
id ++;
viive (5000);
}
voidsendResults () {
// julkaista MQTT: lle
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// debug sarjaan
root.printTo (sarja);
Serial.print ('\ n');
}
// Käsittelee tilattuihin aiheisiin saapuneita viestejä
voidcallback (char* aihe, tavu* hyötykuorma, unsignedint pituus) {
}

katso rawair_quality.ino, jota isännöi GitHub ❤ kanssa

Vaihe 4: Kokoa laatikko

Kokoa laatikko
Kokoa laatikko
Kokoa laatikko
Kokoa laatikko
Kokoa laatikko
Kokoa laatikko

Käytin juuri laatikkoa, joka oli makaamassa, ja porasin reiän anturille ilman saamiseksi ja leikkasin reiän kaapeleille (vaikka se oli hieman liian suuri).

Kiinnitin anturin liitäntälaatikoihin laatikkoon kohdistamalla anturin tuloaukon laatikon poratun reiän kanssa.

Lopuksi liitin ethernet- ja virtakaapelit.

Suositeltava: