Orodha ya maudhui:

Kituo cha Ufuatiliaji wa Chembe za Arduino Powered: 4 Hatua (na Picha)
Kituo cha Ufuatiliaji wa Chembe za Arduino Powered: 4 Hatua (na Picha)

Video: Kituo cha Ufuatiliaji wa Chembe za Arduino Powered: 4 Hatua (na Picha)

Video: Kituo cha Ufuatiliaji wa Chembe za Arduino Powered: 4 Hatua (na Picha)
Video: Управление 32 серводвигателями с PCA9685 и ESP32 - V4 2024, Novemba
Anonim
Kituo cha Ufuatiliaji wa Chembe za Arduino
Kituo cha Ufuatiliaji wa Chembe za Arduino

Unaweza kuunda kwa urahisi mtandao wa diy wa vitu ambavyo vinachunguza uchafuzi wa vumbi nyumbani kwako kwa chini ya $ 50 na ujulishwe wakati kiwango cha vumbi kinakuwa juu sana ili uweze kuinua chumba, au unaweza kuiweka nje na ujulishwe ikiwa ni salama kwenda nje ikiwa unaishi katika eneo lililochafuliwa sana.

Nilifanya hii kama mradi wa shule, kwa hivyo sikuwa na wakati wa kutosha kupata huduma ambayo itachukua ujumbe wa MQTT na kukutumia kama arifa au barua pepe.

Pia kumbuka kuwa kuweka sensor wakati wote itapunguza maisha ya shabiki.

Hatua ya 1: Sehemu Zinazohitajika

Sehemu Zinazohitajika
Sehemu Zinazohitajika

Nini utahitaji

  • Arduino Uno
  • Ngao ya Ethernet ya Arduino
  • Sensor ya laser ya kawaida (kawaida huenda kwa $ 10- $ 30 kwenye eBay / aliexpress)
  • Joto la DHT11 na sensorer ya unyevu (hiari)
  • Bodi ya mkate
  • Kamba za jumper

Hatua ya 2: Kusanya Sehemu

Kusanya Sehemu
Kusanya Sehemu

Kwanza, unahitaji kuziba ngao ya ethernet kwenye Arduino

Sensor ya PM ina waya nyingi, lakini zile tunazohitaji ni VCC, GND, TX, RX.

Unganisha VCC na GND kwa + na - kwenye ubao wa mkate mtawaliwa.

Arduino ina vifaa vya RX na TX pini, lakini tutatumia uigaji wa programu ya pini za RX na TX kwenye pini 2 na 3 mtawaliwa. Chomeka RX ya sensa kwa TX ya Arduino na TX ya sensa kwa RX ya Arduino.

Ikiwa utatumia sensa ya joto, ingiza laini za VCC na GND kwa + na - kwenye Breadboard na laini ya data kubandika 7.

Hatua ya 3: Kanuni

Unaweza kufunga broker ya MQTT kwenye pi ya rasipiberi au kompyuta ambayo umekuwa ukiwa nyumbani kila wakati, au utumie huduma ya MQTT ya wingu, kama Cloud MQTT. Kisha unaweza kuandika hati inayotuma data kama HTTP kwa webhook ya IFTT, kwani bado haziunga mkono viboreshaji vya MQTT na kuweka arifa za wakati viwango vya vumbi nyumbani kwako viko juu sana.

Kituo cha hewa cha Arduino

# pamoja
# pamoja
# pamoja
# pamoja
# pamoja
# pamoja
# pamoja
# pamoja
# fafanuaDHT11_PIN7
# fafanuaRX_PIN2
# fafanuaTX_PIN3
Anwani ya IP (169, 169, 100, 98);
byte mac = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar * mqtt_server = "m23.cloudmqtt.com";
mjumbe mqtt_port = 11895;
constchar * mqtt_user = "jhetjewk";
constchar * mqtt_pass = "QB2p9PiMV6pn";
constchar * mqtt_client_name = "arduinoClient1"; // Muunganisho wa mteja hauwezi kuwa na jina sawa la unganisho
Mteja wa wateja wa Ethernet;
Mteja wa PubSubClient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
kitambulisho kisichosainiwa;
// Faili myFile;
Kamba s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & mzizi = jsonBuffer.createObject ();
voidetup () {
Serial. Kuanza (57600);
pmSerial.anza (9600);
id = 0;
jioni1 = 0;
jioni2_5 = 0;
jioni10 = 0;
ikiwa (Ethernet. mwanzo (mac) == 0)
{
Serial.println ("Imeshindwa kusanidi Ethernet kwa kutumia DHCP");
// jaribio na fasta ip addr
Ethernet. Kuanza (mac, ip);
}
mteja.setServer (mqtt_server, mqtt_port);
mteja.setCallback (kupiga simu tena);
kuchelewa (2000);
Serial.println (Ethernet.localIP ());
mteja.connect ("arduinoClient", mqtt_user, mqtt_pass);
Serial.print ("rc =");
Serial.print (mteja.state ());
Serial.print ("\ n");
}
voidloop () {
intindex = 0;
thamani ya char;
char uliopitaValue;
ikiwa (! mteja. imeunganishwa ())
{
ikiwa (mteja.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("imeunganishwa");
}
}
wakati (pmSerial. Inapatikana ()) {
thamani = pmSerial.read ();
ikiwa ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) {
Serial.println ("Haiwezi kupata kichwa cha data.");
kurudi;
}
ikiwa (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
uliopitaValue = thamani;
}
elseif (index == 5) {
pm1 = 256 * thamani ya awali + Thamani;
mzizi ["pm1"] = abs (pm1);
}
elseif (index == 7) {
pm2_5 = 256 * thamani ya awali + Thamani;
mzizi ["pm2_5"] = abs (pm2_5);
}
elseif (index == 9) {
pm10 = 256 * iliyopita Thamani + ya thamani;
mzizi ["pm10"] = abs (pm10);
}
elseif (faharisi> 15) {
kuvunja;
}
index ++;
}
wakati (pmSerial. Inapatikana ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
ikiwa (DHT.temperature == -999 || DHT.humidity == -999) {
mzizi ["joto"] = "N / A";
mzizi ["unyevu"] = "N / A";
} mwingine {
mzizi ["joto"] = joto la DHT.
mzizi ["unyevu"] = unyevu wa DHT;
}
tuma Matokeo ();
kitambulisho ++;
kuchelewesha (5000);
}
Matokeo ya voidsend () {
// kuchapisha kwa MQTT
char jsonChar [100];
mzizi.printTo (jsonChar);
Serial.println (mteja.publish ("arduino", jsonChar));
// utatuzi kwa serial
mzizi.printTo (Serial);
Serial.print ('\ n');
}
// Hushughulikia ujumbe uliowasili kwenye mada zilizosajiliwa
voidcallback (mada ya char *, baiti * mzigo, urefu usiotiwa saini) {
}

mtazamo rawair_quality.ino mwenyeji na ❤ na GitHub

Hatua ya 4: Kusanya Sanduku

Kusanya sanduku
Kusanya sanduku
Kusanya sanduku
Kusanya sanduku
Kusanya sanduku
Kusanya sanduku

Nilitumia sanduku tu ambalo nilikuwa nimelala karibu na kuchimba shimo kwa sensorer kupata hewa na kukata shimo kwa nyaya kutoka (ingawa ilikuwa kubwa sana).

Nilitumia pedi za gundi kushikilia sensorer kwenye sanduku, nikilinganisha shimo la kuingiza la sensorer na shimo lililopigwa kwenye sanduku.

Mwishowe, niliingiza nyaya za ethernet na umeme.

Ilipendekeza: