INHOUDSOPGAWE:

Moniteringstasie vir stofdeeltjies met Arduino -aandrywing: 4 stappe (met foto's)
Moniteringstasie vir stofdeeltjies met Arduino -aandrywing: 4 stappe (met foto's)

Video: Moniteringstasie vir stofdeeltjies met Arduino -aandrywing: 4 stappe (met foto's)

Video: Moniteringstasie vir stofdeeltjies met Arduino -aandrywing: 4 stappe (met foto's)
Video: Грунтовка развод маркетологов? ТОП-10 вопросов о грунтовке. 2024, Desember
Anonim
Moniteringstasie vir stofdeeltjies met Arduino -aangedrewe motor
Moniteringstasie vir stofdeeltjies met Arduino -aangedrewe motor

U kan redelik maklik 'n selfdoen -internet -van -ding -toestel bou wat stofbesoedeling in u huis vir minder as $ 50 moniteer en in kennis gestel word wanneer die stofpeil te hoog word, sodat u die kamer kan lug, of u kan dit buite stel en in kennis gestel word as dit veilig om na buite te gaan as u in 'n baie besoedelde gebied woon.

Ek het dit as 'n skoolprojek gemaak, en ek het nie genoeg tyd gehad om 'n diens te vind wat MQTT -boodskappe sal neem en dit na u stuur nie, soos kennisgewings of e -posse.

Let ook daarop dat die waaier se leeftyd deur die sensor te alle tye aangeskakel word.

Stap 1: Onderdele benodig

Onderdele benodig
Onderdele benodig

Wat jy nodig het

  • Arduino Uno
  • Arduino Ethernet -skild
  • Lasersensor vir deeltjies (gewoonlik $ 10- $ 30 op eBay/aliexpress)
  • DHT11 temperatuur- en humiditeitsensor (opsioneel)
  • Broodbord
  • Springkabels

Stap 2: Monteer die dele

Monteer die onderdele
Monteer die onderdele

Eerstens moet u die ethernet -skild op die Arduino aansluit

Die PM -sensor het verskeie drade, maar ons benodig VCC, GND, TX, RX.

Koppel die VCC en GND aan onderskeidelik + en - op die broodbord.

Die Arduino het hardeware RX en TX penne, maar ons sal sagteware emulasie van RX en TX penne gebruik op onderskeidelik penne 2 en 3. Koppel die RX van die sensor aan TX van die Arduino en TX van die sensor aan RX van die Arduino.

As u die temperatuursensor gaan gebruik, koppel die VCC- en GND -lyne aan + en - op die broodbord en die datalyn aan pen 7.

Stap 3: Die kode

U kan MQTT -makelaar installeer op 'n framboospi of 'n rekenaar waarop u altyd tuis was, of 'n wolk -MQTT -diens gebruik, soos Cloud MQTT. Dan kan u 'n script skryf wat die data as HTTP na 'n IFTT -webhook stuur, aangesien dit nog nie MQTT -webhooks ondersteun nie en kennisgewings instel vir wanneer stofvlakke in u huis te hoog word.

Arduino lugstasie

#insluit

#insluit
#insluit
#insluit
#insluit
#insluit

#insluit

#insluit
#definieerDHT11_PIN7
#definieerRX_PIN2
#definieerTX_PIN3
IPAddress ip (169, 169, 100, 98);
byte 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"; // Kliëntverbindings kan nie dieselfde verbindingsnaam hê nie
EthernetClient etClient;
PubSubClient -kliënt (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
ongetekende lang ID;
// Lêer myFile;
String s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
as (Ethernet.begin (mac) == 0)
{
Serial.println ("Kon nie Ethernet met DHCP opstel nie");
// probeer met vaste ip addr
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (terugbel);
vertraging (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 waarde;
char vorige waarde;
as (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("verbind");
}
}
terwyl (pmSerial.available ()) {
waarde = pmSerial.read ();
as ((indeks == 0 && waarde! = 0x42) || (indeks == 1 && waarde! = 0x4d)) {
Serial.println ("Kan nie die data -kop kry nie.");
terugkeer;
}
if (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) {
vorige waarde = waarde;
}
elseif (indeks == 5) {
pm1 = 256 * vorige waarde + waarde;
root ["pm1"] = abs (pm1);
}
elseif (indeks == 7) {
pm2_5 = 256 * vorige waarde + waarde;
root ["pm2_5"] = abs (pm2_5);
}
elseif (indeks == 9) {
pm10 = 256 * vorige waarde + waarde;
root ["pm10"] = abs (pm10);
}
elseif (indeks> 15) {
breek;
}
indeks ++;
}
terwyl (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
as (DHT.temperatuur == -999 || DHT.vochtigheid == -999) {
root ["temperatuur"] = "Nvt";
root ["humiditeit"] = "Nvt";
} anders {
root ["temperatuur"] = DHT.temperatuur;
root ["humiditeit"] = DHT.vochtigheid;
}
sendResults ();
id ++;
vertraging (5000);
}
voidsendResults () {
// publiseer aan MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// ontfout na reeks
root.printTo (reeks);
Serial.print ('\ n');
}
// Hanteer boodskappe oor onderwerpe wat ingeskryf is
voidcallback (char* topic, byte* payload, unsignedint length) {
}

sien rawair_quality.ino aangebied deur ❤ deur GitHub

Stap 4: Monteer die boks

Monteer die boks
Monteer die boks
Monteer die boks
Monteer die boks
Monteer die boks
Monteer die boks

Ek gebruik net 'n boks wat ek lê en boor 'n gat vir die sensor om lug uit te kry en sny 'n gat uit om die kabels uit te gaan (alhoewel dit 'n bietjie te groot was).

Ek het gomblokkies gebruik om die sensor aan die boks vas te maak en die ingangsgat van die sensor in lyn te bring met die geboorde gat op die boks.

Uiteindelik het ek die ethernet- en kragkabels aangesluit.

Aanbeveel: