Përmbajtje:

Stacioni i monitorimit të grimcave të pluhurit me Arduino: 4 hapa (me fotografi)
Stacioni i monitorimit të grimcave të pluhurit me Arduino: 4 hapa (me fotografi)

Video: Stacioni i monitorimit të grimcave të pluhurit me Arduino: 4 hapa (me fotografi)

Video: Stacioni i monitorimit të grimcave të pluhurit me Arduino: 4 hapa (me fotografi)
Video: Ndotja e ajrit: Shkupi në krye të listave botërore 2024, Dhjetor
Anonim
Stacioni i monitorimit të grimcave të pluhurit me energji Arduino
Stacioni i monitorimit të grimcave të pluhurit me energji Arduino

Ju mund të krijoni me lehtësi një pajisje DIY të gjërave që monitoron ndotjen e pluhurit në shtëpinë tuaj për më pak se 50 dollarë dhe të njoftoheni kur niveli i pluhurit të jetë shumë i lartë, kështu që ju mund të ajrosni dhomën, ose mund ta vendosni jashtë dhe të njoftoheni nëse është e sigurt për të dalë jashtë nëse jetoni në një zonë shumë të ndotur.

E bëra këtë si një projekt shkollor, kështu që nuk kisha kohë të mjaftueshme për të gjetur një shërbim që do të merrte mesazhe MQTT dhe do t'ju dërgonte si njoftime ose email.

Gjithashtu vini re se mbajtja e sensorit të ndezur gjatë gjithë kohës do të zvogëlojë jetëgjatësinë e ventilatorit.

Hapi 1: Pjesët e nevojshme

Pjesët e nevojshme
Pjesët e nevojshme

Ajo që do t'ju duhet

  • Arduino Uno
  • Mburoja Arduino Ethernet
  • Sensori lazer i grimcave (zakonisht shkon për $ 10-$ 30 në eBay/aliexpress)
  • Sensori i temperaturës dhe lagështisë DHT11 (opsional)
  • Breadboard
  • Kabllo kërcyes

Hapi 2: Mblidhni Pjesët

Mblidhni Pjesët
Mblidhni Pjesët

Së pari, duhet të lidhni mburojën ethernet në Arduino

Sensori PM ka tela të shumtë, por ato që na duhen janë VCC, GND, TX, RX.

Lidhni VCC dhe GND përkatësisht me + dhe - në panelin e bukës.

Arduino ka kunja harduerike RX dhe TX, por ne do të përdorim emulimin e softuerit të kunjave RX dhe TX në kunjat 2 dhe 3 respektivisht. Lidheni RX të sensorit me TX të Arduino dhe TX të sensorit me RX të Arduino.

Nëse do të përdorni sensorin e temperaturës, lidhni linjat VCC dhe GND në + dhe - në Breadboard dhe linja e të dhënave në pin 7.

Hapi 3: Kodi

Ju ose mund të instaloni ndërmjetësin MQTT në një pi mjedër ose një kompjuter që keni gjithmonë në shtëpi, ose të përdorni një shërbim cloud MQTT, si Cloud MQTT. Pastaj mund të shkruani një skenar që dërgon të dhënat si HTTP në një webhook IFTT, pasi ato ende nuk mbështesin lidhëset e internetit MQTT dhe vendosni njoftime kur nivelet e pluhurit në shtëpinë tuaj bëhen shumë të larta.

Stacioni ajror Arduino

#përfshi
#përfshi
#përfshi
#përfshi
#përfshi
#përfshi

#përfshi

#përfshi
#përcaktoDHT11_PIN7
#përcaktoRX_PIN2
#përcaktoTX_PIN3
Adresa IP IP (169, 169, 100, 98);
byte mac = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
përmbajtja mqtt_port = 11895;
constchar *mqtt_user = "jhetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // Lidhjet me klientët nuk mund të kenë të njëjtin emër lidhjeje
EthernetClient ethClient;
Klienti PubSubClient (ethClient);
SoftueriSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
ID e panënshkruar;
// Dosja myFile;
Varg s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.filloj (57600);
pmSerial.filloj (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
nëse (Ethernet.filloj (mac) == 0)
{
Serial.println ("Konfigurimi i Ethernet dështoi duke përdorur DHCP");
// përpjekje me shtues ip fiks
Ethernet.filloj (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (kthim në telefon);
vonesa (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Serial.print ("rc =");
Serial.print (client.state ());
Serial.print ("\ n");
}
voidloop () {
intindeksi = 0;
vlerë char;
char previousVlera;
nëse (! klienti.lidhur ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("i lidhur");
}
}
ndërsa (pmSerial. në dispozicion ()) {
vlera = pmSerial.read ();
nëse ((indeksi == 0 && vlera! = 0x42) || (indeksi == 1 && vlera! = 0x4d)) {
Serial.println ("Nuk mund të gjej kokën e të dhënave.");
kthim;
}
nëse (indeksi == 4 || indeksi == 6 || indeksi == 8 || indeksi == 10 || indeksi == 12 || indeksi == 14) {
previousVlera = vlera;
}
elseif (indeksi == 5) {
pm1 = 256 * vlera e mëparshme + vlera;
rrënjë ["pm1"] = abs (pm1);
}
elseif (indeksi == 7) {
pm2_5 = 256 * vlera e mëparshmeVlera +;
rrënjë ["pm2_5"] = abs (pm2_5);
}
elseif (indeksi == 9) {
pm10 = 256 * vlera e mëparshme + vlera;
rrënjë ["pm10"] = abs (pm10);
}
elseif (indeksi> 15) {
pushim;
}
indeks ++;
}
ndërsa (pmSerial.disponueshëm ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
nëse (DHT.temperatura == -999 || DHT. lagështia == -999) {
rrënja ["temperatura"] = "N/A";
rrënja ["lagështia"] = "N/A";
} tjetër {
rrënja ["temperatura"] = DHT.temperatura;
rrënjë ["lagështia"] = DHT. lagështi;
}
sendResults ();
id ++;
vonesa (5000);
}
voidsendResults () {
// publikoni në MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// korrigjim në serial
root.printTo (Serial);
Serial.print ('\ n');
}
// Trajton mesazhet e mbërritura në temat (et) e regjistruara
voidcallback (tema* e karakterit, bajti* ngarkesa, gjatësia pa shenjë) {
}

shikoni rawair_quality.ino të organizuar me ❤ nga GitHub

Hapi 4: Mblidhni Kutinë

Mblidhni Kutinë
Mblidhni Kutinë
Mblidhni Kutinë
Mblidhni Kutinë
Mblidhni Kutinë
Mblidhni Kutinë

Unë sapo përdor një kuti që kisha shtrirë përreth dhe shpova një vrimë për sensorin që të merrte ajër dhe preva një vrimë që kabllot të dilnin (megjithëse ishte pak shumë e madhe).

Kam përdorur jastëkë zam për të bashkuar sensorin në kuti, duke e lidhur vrimën hyrëse të sensorit me vrimën e shpuar në kuti.

Më në fund, futa kabllot e ethernetit dhe energjisë.

Recommended: