Mundarija:
- 1 -qadam: yig'ish
- 2 -qadam: kod
- 3 -qadam: sozlash
- 4 -qadam: Loop
- 5 -qadam: So'rov topilmadi
- 6 -qadam: haroratni qaytarish
- 7 -qadam: namlikni qaytarish
- 8 -qadam: HTML
- 9 -qadam: HTML uslubining davomi
- DHT monitor
- 10 -qadam: JavaScript
- 11 -qadam: ShowMonitor -ni tugatish
- 12 -qadam: Sinov
Video: ESP8266: Harorat va namlikni qanday kuzatish mumkin: 12 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Bugungi qo'llanmada biz DHT22 sensorining harorat va namlik ko'rsatkichlari uchun 01 konfiguratsiyasida ESP8266 bo'lgan ESP-01 dan foydalanamiz (faqat 2 GPIO bilan). Men sizga elektr sxemasini va Arduino bilan ESP dasturlash qismini ko'rsataman. Misol oddiy, tushunish oson, shuningdek montajda yordam berish uchun videoda ishlatilgan PDF bilan birga keladi.
Dizaynda bizda ESP01, 110 yoki 220 ni 5 voltga aylantiruvchi manba, 3v3 kuchlanish regulyatori va sensori bo'lgan DHT22 bor. Smartfon ekranida siz ESP tomonidan taqdim etilgan JavaScript kodidan tashqari mahalliy IP -manzilga ega bo'lasiz. Shunday qilib, bu ekran harorat va namlik parametrlarini oladi va har besh soniyada yangilanib turadigan bu qiymatlarni chop etadi. Buning uchun sizga telefon va planshetlarda hech qanday dastur kerak bo'lmaydi va bu Android OS va IOS uchun amal qiladi.
1 -qadam: yig'ish
Elektr sxemasi, ESP01 -ni server sifatida o'z ichiga oladigan yig'ilish qismi kabi, juda oddiy. ESPO1 xuddi Arduino kabi dasturlashtiriladi: C tili orqali. Shuni ta'kidlaymanki, kodning bir qismi brauzerdan bosilgan. Bu shuni anglatadiki, u JavaScript kodini brauzerga yuboradi. Quyida, bu qanday ishlashi haqida yaxshiroq tushuntiraman.
Ulanish sxemasiga qaytsam, ESP01ni quvvatlantirish uchun 3v3 kuchlanish regulyatoriga ulangan 5 voltli kalitni qo'ydim. Bizda hali ham to'rtta pinli DHT22 bor. Ulardan biri, ma'lumotlar ishlatilmaydi. Shu bilan birga, tortishish qarshiligi talab qilinadi.
2 -qadam: kod
Birinchi qadam, biz ishlatadigan liblarni kiritishdir. DHT libini Sketch opsiyasi> Kutubxonani qo'shish> Kutubxonalarni boshqarish orqali qo'shish mumkin.
Ochilgan oynada DHT sensor kutubxonasini toping.
Shundan so'ng, biz ESP8266WebServer tipidagi o'zgaruvchini yaratdik, u bizning serverimiz bo'ladi va HTTP so'rovlariga javob beradi (80 -port).
Shuningdek, biz parametrlari 0 (bu GPIO pin 0) va turi (bizning holatda DHT22) bo'lgan DHT o'zgaruvchisini yaratamiz.
#include #include #include #include // ESP8266WebServer -ni ishga tushirish // ESP8266 -ga tez javob beradigan ESP8266WebServer serveri (80); // DHT -ning turli xil variantlari, masalan, DHT dht (0, DHT22) haroratini o'zgartirish uchun ruxsat beradi;
3 -qadam: sozlash
O'rnatishda biz faqat jurnalga ega bo'lishimiz uchun Serialni ishga tushiramiz. Agar ESP8266 ketma -ket monitordan foydalanish uchun kompyuterga ketma -ket ulangan bo'lsa, bu sodir bo'ladi.
Biz ESP8266 -ni o'z tarmog'imizga ulaymiz. Bizning holatda, biz 87654321 parol bilan TesteESP tarmog'idan foydalanamiz, lekin siz buni ishlatayotgan tarmoqqa qarab o'zgartirishingiz kerak bo'ladi.
// Informize a Serial apenas caso esteja com or ESP8266 conectado ao computador pere a log log // aforiches de la este acontecendo com ESP8266 Serial.begin (115200); // ESP8266 buyrug'i bo'yicha ko'rsatmalar. // Yo'q, hech qanday savol yo'q 87654321. // Teskari aloqa Serial.println ("") ni kuzatib boring; Serial.print ("Konektando");
Biz ESP8266 tarmoqqa ulanishini kutamiz va u ulangandan so'ng tarmoq sozlamalarini yuboramiz. O'z tarmog'ingizga qarab o'zgartiring.
// Esperamos até que o módulo se conecte aà rede while (WiFi.status ()! = WL_CONNECTED) {kechiktirish (500); Serial.print ("."); } // IP -tuzatishni sozlash. Boshqa IPAddress ip (192, 168, 3, 11) mos keladi; IP -manzil shlyuzi (192, 168, 3, 1); IPAddress pastki tarmog'i (255, 255, 255, 0); Serial.print ("Configurando IP fixo para:"); Serial.println (ip); // WiFi.config konfiguratsiyasi (IP, shlyuz, pastki tarmoq);
Keyingi buyruqlar faqat ESP8266 kompyuterga ketma -ket ulangan bo'lsa, sizda ketma -ket monitordan fikrlar bo'ladi.
ESP8266 qabul qilingan IP -ni sozlamalarda bo'lgani kabi tekshirish mumkin.
// Mostramos yo'q monitor seriyali, chunki u yuqori sifatli yoki esp8266 ulangan bo'lishi mumkin, bu Serial.println ("") konfiguratsiyasini ta'minlaydi; Serial.println ("Connectado"); Serial.print ("IP:"); Serial.println (WiFi.localIP ());
Bu erda biz har bir so'rov uchun qaysi funktsiyalar bajarilishini aniqlashni boshlaymiz.
Quyidagi yo'riqnomada, har safar ESP8266 yo'l / haroratda GET turidagi HTTP so'rovini olganda, getTemperature funktsiyasi bajariladi.
// Aniq ta'riflar, bu sizning vazifangizni bajarishga imkon beradi. // Bu erda hech qanday ma'lumot olish mumkin emas https://192.168.2.8/temperature // (masalan, konfiguratsiyani o'rnatish) serverni ishga tushirish serverining "GetTemperature" funktsiyasi ("/harorat", HTTP_GET), getTemperature);
Boshqa bayonotda, har safar ESP8266 yo'lda / namlikda GET turidagi HTTP so'rovini olganda, getHumidity funktsiyasi bajariladi.
// Bu erda hech qanday ma'lumot olish mumkin emas https://192.168.2.8/ namlik // (masalan, serverni o'rnatish) serverni ishga tushirish serveri ("namlik" uchun). HTTP_GET, getHumidity);
Ushbu yo'riqnomada, har safar ESP8266 yo'l / monitorda GET turidagi HTTP so'rovini olganda, showMonitor funktsiyasi bajariladi.
ShowMonitor funktsiyasi harorat va namlik qiymatlarini aks ettiruvchi asosiy html -ni qaytarish uchun javobgardir.
// Bu erda hech qanday ma'lumot yo'q https://192.168.2.8/monitor // GET bo'lmaguncha // (bu sizning konfiguratsiyangizga bog'liq emas) showMonitor -ni ishga tushiradi. // Ma'lumotlarni qayta ishlashning asosiy vazifasi // haroratni o'zgartirish yoki o'chirish server.on ("monitor", HTTP_GET, showMonitor) ma'lumotlarini qayta yozish;
Bu erda so'ralgan yo'l topilmaganda bajarilishi kerak bo'lgan funktsiya ta'rifi.
// Muvaffaqiyatli mijozlar ro'yxatini ro'yxatdan o'tkazish server.onNotFound (onNotFound);
Bu erda biz ilgari 80 -portda e'lon qilgan serverimizni ishga tushiramiz.
Bu sozlashning oxiri.
// 80 server.begin () serverini ishga tushirish; Serial.println ("Servidor HTTP iniciado"); }
4 -qadam: Loop
ESP8266WebServer lib tufayli biz mijozlar borligini va so'rov yo'lini aniqlashimiz shart emas. Biz faqat handleClient () ni chaqirishimiz kerak, va ob'ekt har qanday mijoz so'rov yuborayotganligini tekshiradi va biz ilgari ro'yxatdan o'tgan tegishli funktsiyaga yo'naltiradi.
void loop () {// Server serveri.handleClient () ni tekshirish kerak; }
5 -qadam: So'rov topilmadi
Mijoz ro'yxatdan o'tmagan har qanday so'rovlarni bajarganda, bu biz ilgari kirgan funktsiyadir.
Funktsiya faqat 404 kodini (manba topilmaganda ko'rsatuv kod), qaytarilgan ma'lumotlar turini (oddiy matn bo'lsa) va "Topilmadi" so'zlari bo'lgan matnni qaytaradi.
// Funksiyalar aniqlanmagan bo'lsa, ro'yxatdan o'tish bekor qilinadi ()NotFound () {server.send (404, "matn/oddiy", "Topilmadi"); }
6 -qadam: haroratni qaytarish
Bu mijoz harorat rejimida GET so'rovini yuborganida harorat ma'lumoti bilan jsonni qaytaradigan funksiya.
// Mijozlar talablariga javob beradigan vazifalar bajarilmasligi uchun // hech qanday ma'lumot olmang https://192.168.2.8/temperature da temperatura através do módulo dht float t = dht.readTemperature (); // Crus um json com os dados da temperatura String json = "{" harorat / ":"+String (t)+"}"; // Envia yoki mijoz uchun 200 dan ortiq mijoz, server.send (200, "application/json", json) buyrug'ini bajaring. }
7 -qadam: namlikni qaytarish
Bu mijoz namlik / namlikda GET so'rovini yuborganida namlik ma'lumoti bilan jsonni qaytaradigan funksiya.
// Mijozlar talablariga javob beradigan vazifalar bajarilmasligi uchun // hech qanday ma'lumotni olmang https://192.168.2.8/ namlik (bo'sh joyni sozlash konfiguratsiyasi) bo'sh GetHumidity () {// Fazemos a leitura da umidade através do módulo dht float h = dht.readHumidity (); // Cria um json com os dados da umidade String json = "{" namlik / ":"+String (h)+"}"; // Envia yoki mijoz uchun 200 dan ortiq mijoz, server.send (200, "application/json", json) buyrug'ini bajaring. }
8 -qadam: HTML
Bu mijoz kirish / monitorga kirganda html -ni qaytaradigan funksiya. Bu sahifa harorat va namlik qiymatlarini ko'rsatadi va vaqti -vaqti bilan ma'lumotlarni qayta yuklaydi. Va uslubi o'rtasida joylashgan qism
sahifaning ko'rinishini belgilaydi va uni xohlaganingizcha o'zgartirishingiz mumkin.
// Mijozlar uchun zarur bo'lgan vazifalar bajarilsa, // hech qanday ma'lumotni olmang https://192.168.2.8/monitor (bu sizning konfiguratsiyangizga bog'liq emas) showMonitor void showMonitor () {String html = "" "" ""
"DHT monitor"
"tana {"
"to'ldirish: 35 piksel;"
"fon rangi: #222222;" "}"
9 -qadam: HTML uslubining davomi
"h1 {" "rangi: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "rangi: #EEEEEE;" "font-family: sans-serif;" "shrift o'lchami: 18 piksel;" "}" ""
Bu erda html -ning asosiy qismi bor. Unda bizda harorat va namlikni ko'rsatadigan ikkita paragraf mavjud. Paragraflarning identifikatorlariga e'tibor bering, chunki ular orqali biz talab qilingan talablardan keyin harorat va namlik qiymatlarini kiritish uchun ushbu paragraflarni tiklaymiz.
DHT monitor
Harorat:
Namlik:
10 -qadam: JavaScript
Bu erda biz vaqti -vaqti bilan harorat va namlik qiymatlarini o'qiy oladigan skriptni aniqlashni boshlaymiz. Refresh () funktsiyasi refreshTemperature () va refreshHumdity () funktsiyalarini chaqiradi va setInterval yangilanish funktsiyasini har 5000 millisekundda (5 soniya) chaqiradi.
"yangilash ();" "setInterval (yangilash, 5000);" "funktsiyani yangilash ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"
RefreshTemperature () funktsiyasi haroratda so'rov yuboradi, json tarkibidagi ma'lumotlarni tahlil qiladi va paragrafga id haroratini qo'shadi.
"refreshTemperature () funktsiyasi" "" "" xmlhttp = yangi XMLHttpRequest (); " "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('harorat'). innerHTML = 'Harorat:' + JSON. tahlil (xmlhttp.responseText). harorat + 'C'; " "}" "};" "xmlhttp.open (" Oling "," https://192.168.2.8/temperatur ", to'g'ri);" "xmlhttp.send ();" "}"
RefreshHumidity () funktsiyasi namlik uchun so'rov yuboradi, json tarkibidagi ma'lumotlarni tahlil qiladi va paragrafga namlik idini qo'shadi. Va shu bilan biz / monitorda so'rovlarni yuboradigan html -ni tugatamiz.
"refreshHumidity () funktsiyasi" "" {"" var xmlhttp = new XMLHttpRequest (); " "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('namlik'). innerHTML = 'Namlik:' + JSON. tahlil (xmlhttp.responseText). namlik + '%'; " "}" "};" "xmlhttp.open (" Oling "," https://192.168.2.8/ namlik ", to'g'ri);" "xmlhttp.send ();" "}"
"";
11 -qadam: ShowMonitor -ni tugatish
Endi biz yuboradigan html satri tayyor, biz uni mijozga yuborishimiz mumkin. Bu showMonitor funktsiyasini va kodni yakunlaydi.
// Envia yoki html mijoz uchun 200 dan ortiq, server.send (200, "text/html", html) buyrug'ini bajaring. }
12 -qadam: Sinov
Endi brauzeringizni oching va https://192.168.2.8/monitor kiriting (konfiguratsiyangizga qarab sizga boshqa ip kerak bo'lishi mumkin).
Tavsiya:
Arduino harorat va namlikni o'lchash tizimi - Texnik Jou: 3 qadam
Arduino harorat va namlikni o'lchash tizimi | Texnik Jou: Arduino bilan ikkita befoyda o'yin qurib, vaqtimni behuda o'tkazgandan so'ng, men Arduino bilan foydali narsa yaratmoqchi bo'ldim. Men o'simliklar uchun harorat va havo namligini o'lchash tizimi g'oyasini oldim. Loyihani biroz yaxshi qilish uchun
NodeMCU va Blynk -da AM2301 yordamida harorat va namlikni kuzatib boring: 3 qadam
NodeMCU & Blynk -dagi AM2301 yordamida harorat va namlikni kuzatib boring: Ma'lumki, ko'pchilik sohalarda vertikallar, harorat, namlik, bosim, havo sifati, suv sifati va boshqalar doimiy ravishda kuzatilishi kerak bo'lgan muhim omillarni o'ynaydi. ogohlantirish tizimlari qiymatga ega bo'lganda bo'lishi kerak
ESP8266 va AskSensors IoT Cloud yordamida ultrasonik masofani qanday kuzatish mumkin: 5 qadam
Ultrasonik masofani ESP8266 va AskSensors IoT Cloud yordamida qanday kuzatish mumkin: Bu ko'rsatma, AskSensors IoT bulutiga ulangan ultratovushli HC-SR04 sensori va ESP8266 tugunli MCU yordamida ob'ektdan masofani qanday kuzatish kerakligini ko'rsatadi
DHT11 / DHT22 va Arduino yordamida harorat va namlikni o'lchash: 4 qadam
DHT11 / DHT22 va Arduino yordamida harorat va namlikni o'lchash: Arduino darsligida biz DHT11 yoki DHT22 sensoridan harorat va namlikni o'lchash uchun Arduino kartasi yordamida qanday foydalanishni bilib olamiz
ESP8266 va Blynk ilovasi yordamida harorat va namlikni masofadan nazorat qilish: 15 qadam
ESP8266 va Blynk ilovasi yordamida masofadan turib harorat va namlikni kuzatish: Bu ESP8266 chipli birinchi loyiham edi. Men hozirgina uyim yaqinida yangi issiqxona qurdim va men uchun u erda kun davomida nima bo'layotgani qiziq edi? Aytmoqchimanki, harorat va namlik qanday o'zgaradi? Issiqxona etarli darajada ventilyatsiya qilinganmi? Shunday qilib, men tan olaman