Mundarija:

ESP32 Thing and Blynk yordamida o'simlik monitor: 5 qadam
ESP32 Thing and Blynk yordamida o'simlik monitor: 5 qadam

Video: ESP32 Thing and Blynk yordamida o'simlik monitor: 5 qadam

Video: ESP32 Thing and Blynk yordamida o'simlik monitor: 5 qadam
Video: Next Videos - ESP32 Development Board (Web Server Project) 2024, Noyabr
Anonim
ESP32 Thing and Blynk yordamida o'simlik monitor
ESP32 Thing and Blynk yordamida o'simlik monitor
ESP32 Thing and Blynk yordamida o'simlik monitor
ESP32 Thing and Blynk yordamida o'simlik monitor

Sharh

Loyihaning maqsadi - uy o'simliklari sharoitini kuzata oladigan ixcham qurilma yaratish. Qurilma foydalanuvchiga Blynk ilovasi yordamida smartfondan tuproq namligi, namlik darajasi, harorat va "o'zini his qiladigan" haroratni tekshirishga imkon beradi. Qolaversa, zavod uchun sharoitlar yaroqsiz holga kelganda, foydalanuvchi elektron pochta orqali ogohlantirish oladi. Masalan, tuproq namligi mos darajadan pastga tushganda, foydalanuvchiga o'simlikni sug'orish haqida eslatma keladi.

1 -qadam: talablar

Talablar
Talablar
Talablar
Talablar
Talablar
Talablar

Ushbu loyihada Sparkfun ESP32 moslamasi, DHT22 sensori va elektron g'ishtli tuproq namligi sensori ishlatiladi. Bundan tashqari, Wi -Fi tarmog'i va Blynk ilovasi talab qilinadi. Tercihen, ESP32 elementini o'z ichiga oladigan suv o'tkazmaydigan korpus yaratilishi kerak. Bu misolda quvvat manbai uchun standart rozetkadan foydalanilgan bo'lsa -da, qayta zaryadlanuvchi batareya, quyosh paneli va zaryad regulyatorining qo'shilishi qurilmani qayta tiklanadigan energiya bilan quvvatlantirish imkonini beradi.

2 -qadam: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Blynk ilovasini yuklab oling va yangi loyiha yarating. Autentifikatsiya tokeniga e'tibor bering-u kodda ishlatiladi. Blynk ilovasida yangi displey vidjetlarini yarating va kodda belgilangan tegishli virtual pinlarni tanlang. Bosish uchun yangilanish oralig'ini o'rnating. Har bir vidjetga o'ziga xos virtual pin tayinlanishi kerak.

3 -qadam: Arduino IDE

Arduino IDE
Arduino IDE

Arduino IDE -ni yuklab oling. Wi -Fi ulanishini ta'minlash uchun ESP32 narsa haydovchisi va demosini yuklab olish bo'yicha ko'rsatmalarga amal qiling. Kodga kiritilgan Blynk va DHT kutubxonalarini yuklab oling. Autentifikatsiya tokenini, wifi parolini, wifi foydalanuvchi nomini va elektron pochtani oxirgi kodga to'ldiring. Tuproq turi uchun minimal va maksimal qiymatlarni topish uchun tuproq namligi sensori demo -kodidan foydalaning. Oxirgi kodda bu qiymatlarni yozing va o'zgartiring. Oxirgi kodda o'simlik uchun harorat, tuproq namligi va namlik uchun minimal qiymatlarni almashtiring. Kodni yuklang.

4 -qadam: Uni yarating

Uni qurish
Uni qurish
Uni qurish
Uni qurish
Uni qurish
Uni qurish

Birinchidan, tuproq namligi sensori 3.3V, topraklama va kirish pimi 34 ga ulang. E'tibor bering, bu kalit A ga o'rnatilgan, chunki bu sensor uchun analog sozlamalar ishlatiladi. Keyin, DHT sensorini 3.3V, topraklama va kirish pimi 27 ga ulang. DHT22 sensori VCC va ma'lumotlar chiqish pimi o'rtasida 10K Ohmli rezistorni talab qiladi. To'g'ri ulanganligini tekshirish uchun DHT diagrammasini tekshiring. Tuproqdagi namlik sensori va DHT sensori bilan suv o'tkazmaydigan korpus ichida ESP32 ni sozlang. Quvvat manbaiga ulaning va zavodingizdagi muhit haqida ma'lumot oling.

5 -qadam: kod

// Kiritilgan kutubxonalar

#blynk_print seriyasini aniqlang

#qo'shish #qo'shish #qo'shish #qo'shish "DHT.h"

// DHT sensori haqida ma'lumot

#Detine DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #deftine DHTPIN 27 // DHT sensori DHT dht (DHTPIN, DHTTYPE) ga ulangan raqamli pin; // DHT sensorini ishga tushiring.

// kirish pinlari va chiqishlarini aniqlang

int tuproq_sensori = 34; // namlik sensori ulangan analog kirish pin raqamini aniqlang

int output_value; // chiqish sifatida belgilang

int moistlevel; // chiqish sifatida belgilang

int notified = 0; // notifedni 0 deb belgilang

int timedelay = 60000L; // taymerni ishga tushirish uchun har daqiqada bir marta yoki 60 000 milisekundda olish

// o'simlik uchun minimal qiymatlarni o'rnating

int min_moisture = 20; int min_temperature = 75; int min_humidity = 60;

// Siz Blynk ilovasida avtorizatsiya tokenini olishingiz kerak.

char auth = "Auth_Token_Here";

// Wi -Fi ma'lumotlari.

char ssid = "Wifi_Network_Here"; char pass = "Wifi_Password_Here";

BlynkTimer taymeri;

// Bu funksiya Arduinoning bo'sh vaqtini har soniyada Virtual Pin (5) ga yuboradi.

// Ilovada Vidjet o'qish chastotasi PUSH ga o'rnatilishi kerak. Bu shuni anglatadiki, // siz Blynk ilovasiga ma'lumotlarni qanchalik tez -tez yuborishni aniqlaysiz.

void Sensors () // sensorlarni o'qish va blynk -ni bosishning asosiy vazifasi

{output_value = analogRead (tuproq_sensori); // tuproq_sensordan analog signalni o'qing va output_value sifatida belgilang // output_vlaue xaritasini min, maksimal qiymatlarni 100, 0 gacha va 0, 100 oralig'ida cheklab qo'ying // min va namlik darajasi = cheklash (xarita (chiqish_qiymati, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity (); // Havoning namligini o'qing t = dht.readTemperature (); // Haroratni Selsiy bo'yicha o'qing (standart) float f = dht.readTemperature (rost); // Farengeyt haroratini o'qing (isFahrenheit = rost) // Farenheitdagi issiqlik indeksini hisoblang (standart) float hif = dht.computeHeatIndex (f, h); // O'qish muvaffaqiyatsiz bo'lganligini tekshiring va erta chiqing (qaytadan urinish uchun). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("DHT sensoridan o'qib bo'lmadi!")); qaytish; } // Bu vallarni Blynk ilovasidagi Blynk.virtualWrite (V5, namlik darajasi) vidjetlarida aniqlangan virtual pimlarga ulaydi; // Namlik darajasini 5 -pinli virtual pinga yuborish Blynk.virtualWrite (V6, f); // Haroratni virtualga yuborish pin 6 Blynk.virtualWrite (V7, h); // Namlikni virtual pin 7 ga yuborish Blynk.virtualWrite (V8, hif); // Virtual pin 8 ga issiqlik indeksini yuborish

agar (bildirilgan == 0)

{if (moistlevel <= min_moisture) // Agar namlik darajasi min qiymatiga teng yoki undan past bo'lsa {Blynk.email ("Email_Here", "O'simlik monitor", "Suv zavodi!"); // Suv zavodiga elektron pochta yuborish} kechiktirish (15000); // Blynk elektron pochta xabarlari bir -biridan 15 soniya masofada bo'lishi kerak. 15000 millisekundni kechiktiring, agar (f <= min_temperaturasi) // Agar harorat min qiymatiga teng yoki undan past bo'lsa {Blynk.email ("Email_Here", "O'simlik monitor", "Harorat past!"); // Harorat pastligi haqida elektron pochta xabarini yuboring

}

kechikish (15000); // Blynk elektron pochta xabarlari bir -biridan 15 soniya masofada bo'lishi kerak. 15000 millisekundni kechiktirish, agar (h <= min_ namlik) // Agar namlik min qiymatiga teng yoki undan past bo'lsa {Blynk.email ("Emial_Here", "O'simlik monitor", "Namlik past!"); // namlik pastligi haqida elektron pochta xabarini yuboring} notified = 1; timer.setTimeout (timedelay *5, resetNotified); // takroriy ogohlantirish xatlari orasidagi kerakli vaqtlar soniga ko'p sonli vaqt}}

void resetNotified () // elektron pochta chastotasini tiklash uchun chaqirilgan funksiya

{xabardor qilingan = 0; }

bo'sh o'rnatish ()

{Serial.begin (9600); // Debug konsoli Blynk.begin (auth, ssid, pass); // blynk timer.setInterval ga ulanish (timedelay, Sensors); // Har daqiqada chaqiriladigan funktsiyani o'rnating yoki dht.begin () ga qaysi vaqtni belgilang; // DHT sensorini ishga tushirish}

// Void loop faqat blynk.run va taymerni o'z ichiga olishi kerak

void loop () {Blynk.run (); // blynk timer.run () ni ishga tushiring; // BlynkTimerni ishga tushiradi}

Tavsiya: