Satura rādītājs:

Arduino putekļu daļiņu uzraudzības stacija: 4 soļi (ar attēliem)
Arduino putekļu daļiņu uzraudzības stacija: 4 soļi (ar attēliem)

Video: Arduino putekļu daļiņu uzraudzības stacija: 4 soļi (ar attēliem)

Video: Arduino putekļu daļiņu uzraudzības stacija: 4 soļi (ar attēliem)
Video: Thorium: An energy solution - THORIUM REMIX 2011 2024, Jūlijs
Anonim
Arduino putekļu daļiņu uzraudzības stacija
Arduino putekļu daļiņu uzraudzības stacija

Jūs varat viegli izveidot DIY lietu interneta ierīci, kas uzrauga jūsu mājas putekļu piesārņojumu par mazāk nekā 50 ASV dolāriem, un saņemt paziņojumu, kad putekļu līmenis kļūst pārāk augsts, lai jūs varētu vēdināt telpu, vai arī varat to iestatīt ārpusē un saņemt paziņojumu, ja tas ir droši doties ārā, ja dzīvojat ļoti piesārņotā vietā.

Es to izveidoju kā skolas projektu, tāpēc man nebija pietiekami daudz laika, lai atrastu pakalpojumu, kas ņemtu MQTT ziņojumus un nosūtītu tos jums kā paziņojumus vai e -pastus.

Ņemiet vērā arī to, ka sensora nepārtraukta barošana samazinās ventilatora kalpošanas laiku.

1. darbība. Nepieciešamās detaļas

Nepieciešamas detaļas
Nepieciešamas detaļas

Kas jums būs nepieciešams

  • Arduino Uno
  • Arduino Ethernet vairogs
  • Cieto daļiņu lāzera sensors (parasti maksā 10–30 USD eBay/aliexpress)
  • DHT11 temperatūras un mitruma sensors (pēc izvēles)
  • Maizes dēlis
  • Jumper kabeļi

2. solis: salieciet detaļas

Salieciet detaļas
Salieciet detaļas

Pirmkārt, jums ir jāpievieno Arduino Ethernet vairogs

PM sensoram ir vairāki vadi, bet mums ir vajadzīgi VCC, GND, TX, RX.

Pievienojiet VCC un GND attiecīgi + un - uz maizes dēļa.

Arduino ir aparatūras RX un TX tapas, bet mēs izmantosim RX un TX tapas programmatūras emulāciju attiecīgi uz 2. un 3. tapām. Pievienojiet sensora RX Arduino TX un sensora TX pie Arduino RX.

Ja izmantosit temperatūras sensoru, pievienojiet VCC un GND līnijas uz + un - uz maizes dēļa un datu līnijas līdz 7. tapai.

3. darbība: kods

Jūs varat instalēt MQTT brokeri aveņu pi vai datorā, kas vienmēr ir mājās, vai izmantot mākoņa MQTT pakalpojumu, piemēram, Cloud MQTT. Pēc tam jūs varat uzrakstīt skriptu, kas nosūta datus kā HTTP uz IFTT tīmekļa aizķeri, jo tie vēl neatbalsta MQTT tīmekļa āķus un iestatīt paziņojumus par gadījumiem, kad putekļu līmenis jūsu mājās kļūst pārāk augsts.

Arduino gaisa stacija

#iekļaut

#iekļaut
#iekļaut
#iekļaut
#iekļaut
#iekļaut

#iekļaut

#iekļaut
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPAdd ip (169, 169, 100, 98);
baits 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"; // Klienta savienojumiem nevar būt vienāds savienojuma nosaukums
EthernetClient ethClient;
PubSubClient klients (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
neparakstīts garš ID;
// Fails myFile;
Stīgas s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Sērijas sākums (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
ja (Ethernet.begin (mac) == 0)
{
Serial.println ("Neizdevās konfigurēt Ethernet, izmantojot DHCP");
// mēģināt ar fiksētu ip adr
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (atzvanīšana);
kavēšanās (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Sērijas nospiedums ("rc =");
Sērijas nospiedums (client.state ());
Serial.print ("\ n");
}
voidloop () {
intindekss = 0;
ogļu vērtība;
char previousValue;
ja (! client.connected ())
{
ja (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("savienots");
}
}
while (pmSerial.available ()) {
vērtība = pmSerial.read ();
ja ((indekss == 0 && vērtība! = 0x42) || (indekss == 1 && vērtība! = 0x4d)) {
Serial.println ("Nevar atrast datu galveni.");
atgriešanās;
}
ja (indekss == 4 || indekss == 6 || indekss == 8 || indekss == 10 || indekss == 12 || indekss == 14) {
previousValue = vērtība;
}
elseif (indekss == 5) {
pm1 = 256 * previousValue + vērtība;
sakne ["pm1"] = abs (pm1);
}
elseif (indekss == 7) {
pm2_5 = 256 * previousValue + vērtība;
sakne ["pm2_5"] = abs (pm2_5);
}
elseif (indekss == 9) {
pm10 = 256 * previousValue + vērtība;
sakne ["pm10"] = abs (pm10);
}
elseif (indekss> 15) {
pārtraukums;
}
indekss ++;
}
kamēr (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
ja (DHT.temperatūra == -999 || DHT. mitrums == -999) {
sakne ["temperatūra"] = "N/A";
sakne ["mitrums"] = "N/A";
} vēl {
sakne ["temperatūra"] = DHT.temperatūra;
sakne ["mitrums"] = DHT.mitrums;
}
sendResults ();
id ++;
kavēšanās (5000);
}
voidsendResults () {
// publicēt MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// atkļūdošana sērijā
root.printTo (sērijas);
Serial.print ('\ n');
}
// Apstrādā ziņas, kas saņemtas par abonēto tēmu (-ām)
voidcallback (char* tēma, baits* lietderīgā slodze, neparakstīts garums) {
}

skatiet rawair_quality.ino, kuru ar ❤ mitina GitHub

4. solis: salieciet kastīti

Salieciet kastīti
Salieciet kastīti
Salieciet kastīti
Salieciet kastīti
Salieciet kastīti
Salieciet kastīti

Es tikko izmantoju kastīti, kas man bija gulējusi, un izurbju caurumu sensoram, lai izvilktu gaisu, un izgriezu caurumu kabeļu iziešanai (lai gan tas bija mazliet par lielu).

Es izmantoju līmes spilventiņus, lai piestiprinātu sensoru pie kastes, izlīdzinot sensora ievades atveri ar urbto caurumu uz kastes.

Visbeidzot, es pievienoju Ethernet un strāvas kabeļus.

Ieteicams: