Sisukord:

Arduino toitega tolmuosakeste seirejaam: 4 sammu (piltidega)
Arduino toitega tolmuosakeste seirejaam: 4 sammu (piltidega)

Video: Arduino toitega tolmuosakeste seirejaam: 4 sammu (piltidega)

Video: Arduino toitega tolmuosakeste seirejaam: 4 sammu (piltidega)
Video: Как измерить любое напряжение постоянного тока с Arduino ARDVC-01 2024, November
Anonim
Arduino toitega tolmuosakeste seirejaam
Arduino toitega tolmuosakeste seirejaam

Saate üsna hõlpsalt ehitada asjade Interneti -seadme, mis jälgib teie kodu tolmureostust vähem kui 50 dollari eest, ja saada märku, kui tolmu tase tõuseb liiga kõrgeks, et saaksite ruumi õhutada, või saate selle välja seada ja saada märguande, kui see on turvaline õue minna, kui elate väga saastatud piirkonnas.

Tegin selle kooliprojektina, nii et mul ei olnud piisavalt aega, et leida teenust, mis võtab vastu MQTT -sõnumeid ja saadab need teile nagu märguanded või e -kirjad.

Pange tähele ka seda, et anduri pidev sisselülitamine vähendab ventilaatori eluiga.

Samm: vajalikud osad

Vajalikud osad
Vajalikud osad

Mida vajate

  • Arduino Uno
  • Arduino Etherneti kilp
  • Tahkete osakeste lasersensor (tavaliselt maksab eBay/aliexpress 10–30 dollarit)
  • DHT11 temperatuuri ja niiskuse andur (valikuline)
  • Leivalaud
  • Jumper kaablid

Samm: pange osad kokku

Pange osad kokku
Pange osad kokku

Esiteks peate ühendama Arduino Etherneti kilbi

PM -anduril on mitu juhet, kuid need, mida vajame, on VCC, GND, TX, RX.

Ühendage VCC ja GND vastavalt leivaplaadil olevatele plussidele + ja -.

Arduinol on riistvara RX- ja TX -tihvtid, kuid me kasutame RX- ja TX -nööpnõelte tarkvara emuleerimist vastavalt tihvtidel 2 ja 3. Ühendage anduri RX Arduino TX -ga ja anduri TX Arduino RX -ga.

Kui kavatsete kasutada temperatuuriandurit, ühendage VCC- ja GND -jooned paneelil + ja - ning andmerida tihvtiga 7.

3. samm: kood

Võite installida MQTT maakleri vaarika pi või arvutisse, mis on alati kodus, või kasutada pilv MQTT teenust, näiteks Cloud MQTT. Seejärel saate kirjutada skripti, mis saadab andmed HTTP -vormingus IFTT -i veebihaakesse, kuna need ei toeta veel MQTT -veebihaake ja seadistavad märguanded, kui teie kodus on tolmutase liiga kõrge.

Arduino lennujaam

#kaasake

#kaasake
#kaasake
#kaasake
#kaasake
#kaasake

#kaasake

#kaasake
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPAdd ip (169, 169, 100, 98);
bait 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"; // Kliendiühendustel ei saa olla sama ühenduse nimi
EthernetClient ethClient;
PubSubClient klient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
allkirjastamata pikk ID;
// Fail myFile;
String s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Seriaalne algus (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
kui (Ethernet.begin (mac) == 0)
{
Serial.println ("Etherneti konfigureerimine ebaõnnestus DHCP abil");
// proovige fikseeritud ip -aadressiga
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (tagasihelistamine);
viivitus (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Seeria.print ("rc =");
Serial.print (client.state ());
Serial.print ("\ n");
}
voidloop () {
intindex = 0;
süsiniku väärtus;
char previousValue;
kui (! klient.ühendatud ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("ühendatud");
}
}
while (pmSerial.available ()) {
väärtus = pmSerial.read ();
kui ((indeks == 0 && väärtus! = 0x42) || (indeks == 1 && väärtus! = 0x4d)) {
Serial.println ("Ei leia andmepäist.");
tagasipöördumine;
}
kui (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) {
previousValue = väärtus;
}
elseif (indeks == 5) {
pm1 = 256 * eelmineVäärtus + väärtus;
juur ["pm1"] = abs (pm1);
}
elseif (indeks == 7) {
pm2_5 = 256 * previousValue + väärtus;
juur ["pm2_5"] = abs (pm2_5);
}
elseif (indeks == 9) {
pm10 = 256 * previousValue + väärtus;
juur ["pm10"] = abs (pm10);
}
elseif (indeks> 15) {
murda;
}
indeks ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
kui (DHT.temperatuur == -999 || DHT.niiskus == -999) {
juur ["temperatuur"] = "N/A";
juur ["niiskus"] = "N/A";
} muud {
juur ["temperatuur"] = DHT.temperatuur;
juur ["niiskus"] = DHT.niiskus;
}
sendResults ();
id ++;
viivitus (5000);
}
voidsendResults () {
// avaldada MQTT -le
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// silumine seriaaliks
root.printTo (jada);
Serial.print ('\ n');
}
// Käsitleb tellitud teema (te) le saabunud sõnumeid
voidcallback (sümbol* teema, bait* kasulik koormus, märkimata pikkus) {
}

vaadake rawair_quality.ino, mille hostiks on GitHub ❤

Samm: pange kast kokku

Pange kast kokku
Pange kast kokku
Pange kast kokku
Pange kast kokku
Pange kast kokku
Pange kast kokku

Kasutasin lihtsalt kasti, mis mul oli pikali, ja puurisin andurile augu, et sealt õhku saada, ja lõikasin välja augu kaablite väljumiseks (kuigi see oli natuke liiga suur).

Anduri karbi külge kinnitamiseks kasutasin liimipatju, joondades anduri sisendava karbi puuritud avaga.

Lõpuks ühendasin Etherneti ja toitekaablid.

Soovitan: