Мазмұны:

Arduino шаң бөлшектерін бақылау станциясы: 4 қадам (суреттермен)
Arduino шаң бөлшектерін бақылау станциясы: 4 қадам (суреттермен)

Бейне: Arduino шаң бөлшектерін бақылау станциясы: 4 қадам (суреттермен)

Бейне: Arduino шаң бөлшектерін бақылау станциясы: 4 қадам (суреттермен)
Бейне: Үйде жоғары сапалы ПХД қалай жасауға болады / үтіктеумен қоштасу 2024, Қараша
Anonim
Arduino жұмыс істейтін шаң бөлшектерін бақылау станциясы
Arduino жұмыс істейтін шаң бөлшектерін бақылау станциясы

Сіз өзіңіздің үйіңіздегі шаңның ластануын бақылайтын заттардың DIY интернетін 50 доллардан оңай құра аласыз және шаң деңгейі жоғарылаған кезде хабар аласыз, осылайша бөлмені желдете аласыз немесе оны сыртта орнатып, ол туралы хабарлауға болады. егер сіз өте ластанған жерде тұрсаңыз, көшеге шығу қауіпсіз.

Мен мұны мектептің жобасы ретінде жасадым, сондықтан MQTT хабарламаларын қабылдайтын және оларды хабарламалар немесе электрондық пошталар сияқты сізге жіберетін қызметті табуға уақытым болмады.

Сондай -ақ, сенсордың үнемі жұмыс істеп тұруы желдеткіштің қызмет ету мерзімін қысқартады.

1 -қадам: қажет бөлшектер

Қажетті бөлшектер
Қажетті бөлшектер

Сізге не керек

  • Ардуино Уно
  • Arduino Ethernet қалқаны
  • Бөлшектелген заттардың лазерлік сенсоры (әдетте eBay/aliexpress-те $ 10-$ 30 тұрады)
  • DHT11 температура мен ылғалдылық сенсоры (міндетті емес)
  • Нан тақтасы
  • Өтпелі кабельдер

2 -қадам: бөлшектерді жинаңыз

Бөлшектерді жинаңыз
Бөлшектерді жинаңыз

Алдымен Ethernet қалқанын Arduino -ға қосу керек

PM сенсорында бірнеше сымдар бар, бірақ бізге керегі - VCC, GND, TX, RX.

VCC мен GND -ді сәйкесінше тақтадағы + және - -ге қосыңыз.

Arduino -да аппараттық RX және TX түйреуіштері бар, бірақ біз сәйкесінше 2 және 3 түйреуіштерде RX және TX түйреуіштерінің эмуляциясын қолданамыз. Сенсордың RX -ін Arduino -ның TX -ке және сенсордың TX -ін Arduino -ның RX -ке жалғаңыз.

Егер сіз температура сенсорын қолданғыңыз келсе, VCC және GND желілерін Breadboard -дегі + және - -ге, ал деректер желісін 7 -істікке қосыңыз.

3 -қадам: Кодекс

Сіз MQTT брокерін таңқурайға немесе үйде үнемі болатын компьютерге орната аласыз немесе Cloud MQTT сияқты бұлтты MQTT қызметін қолдана аласыз. Содан кейін сіз IFTT веб -ілмегіне деректерді HTTP ретінде жіберетін сценарий жаза аласыз, себебі олар MQTT веб -ілмектерін әлі қолдамайды және үйдегі шаң деңгейі тым жоғары болған кезде хабарландыруларды орнатады.

Arduino әуе станциясы

#қосу

#қосу
#қосу
#қосу
#қосу
#қосу

#қосу

#қосу
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPAddress ip (169, 169, 100, 98);
байт мак = {
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»; // Клиенттік қосылымдар бірдей байланыс атауына ие бола алмайды
EthernetClient ethClient;
PubSubClient клиенті (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
DHT;
int pm1;
int pm2_5;
int pm10;
қол қойылмаған идентификатор;
// myFile файл;
Жолдар s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
егер (Ethernet.begin (mac) == 0)
{
Serial.println («DHCP көмегімен Ethernet конфигурацияланбады»);
// тіркелген ip addr көмегімен әрекет
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (кері шақыру);
кешіктіру (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 құны;
char previousValue;
if (! client.connected ())
{
егер (client.connect («arduinoClient», mqtt_user, mqtt_pass)) {
Serial.println («қосылған»);
}
}
while (pmSerial.available ()) {
мән = pmSerial.read ();
егер ((индекс == 0 && мәні! = 0x42) || (индекс == 1 && мәні! = 0x4d)) {
Serial.println («Деректер тақырыбы табылмады.»);
қайтару;
}
егер (индекс == 4 || индекс == 6 || индекс == 8 || индекс == 10 || индекс == 12 || индекс == 14) {
previousValue = мән;
}
elseif (индекс == 5) {
pm1 = 256 * алдыңғыValue + мәні;
түбір [«pm1»] = абс (pm1);
}
elseif (индекс == 7) {
pm2_5 = 256 * алдыңғыValue + мәні;
түбір [«pm2_5»] = абс (pm2_5);
}
elseif (индекс == 9) {
pm10 = 256 * алдыңғыValue + мәні;
түбір [«pm10»] = абс (pm10);
}
elseif (индекс> 15) {
үзіліс;
}
индекс ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
егер (DHT.температурасы == -999 || DHT. ылғалдылығы == -999) {
түбір [«температура»] = «Жоқ»;
түбір [«ылғалдылық»] = «Жоқ»;
} басқа {
түбір [«температура»] = DHT.температура;
түбір [«ылғалдылық»] = DHT. ылғалдылық;
}
sendResults ();
id ++;
кешіктіру (5000);
}
voidsendResults () {
// MQTT -те жариялау
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish («arduino», jsonChar));
// сериялық күйге келтіру
root.printTo (сериялық);
Serial.print ('\ n');
}
// Жазылған тақырыпқа келген хабарларды өңдейді
voidcallback (char* тақырыбы, байт* пайдалы жүктеме, белгісіз ұзындық) {
}

GitHub ❤ ұсынған rawair_quality.ino қарау

4 -қадам: қорапты жинаңыз

Қорапты жинаңыз
Қорапты жинаңыз
Қорапты жинаңыз
Қорапты жинаңыз
Қорапты жинаңыз
Қорапты жинаңыз

Мен жай ғана қорапты қолдандым және сенсорға ауа жіберу үшін тесік бұрдым және кабельдердің сөнуі үшін тесік жасадым (ол тым үлкен болса да).

Мен сенсорды қорапқа бекіту үшін желім жастықтарды қолдандым, сенсордың кіріс саңылауын қораптағы бұрғыланған тесікпен теңестірдім.

Ақырында, мен Ethernet және қуат кабельдерін қостым.

Ұсынылған: