Mündəricat:

ESP32 Thing və Blynk istifadə edərək bitki monitoru: 5 addım
ESP32 Thing və Blynk istifadə edərək bitki monitoru: 5 addım

Video: ESP32 Thing və Blynk istifadə edərək bitki monitoru: 5 addım

Video: ESP32 Thing və Blynk istifadə edərək bitki monitoru: 5 addım
Video: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 2024, Iyun
Anonim
ESP32 Thing və Blynk istifadə edərək bitki monitoru
ESP32 Thing və Blynk istifadə edərək bitki monitoru
ESP32 Thing və Blynk istifadə edərək bitki monitoru
ESP32 Thing və Blynk istifadə edərək bitki monitoru

Baxış

Bu layihənin məqsədi bir ev bitkisinin şəraitini izləyə bilən kompakt bir cihaz yaratmaqdır. Cihaz, istifadəçiyə Blynk Tətbiqindən istifadə edərək bir smartfondan torpağın nəm səviyyəsini, rütubət səviyyəsini, istiliyini və "bənzər" temperaturu yoxlamağa imkan verir. Əlavə olaraq, şərtlər bitki üçün uyğun olmadıqda istifadəçi bir e -poçt xəbərdarlığı alacaq. Məsələn, istifadəçi torpağın nəm səviyyəsi uyğun bir səviyyədən aşağı düşdüyü zaman bitkini sulaması üçün bir xatırlatma alacaq.

Addım 1: Tələblər

Tələblər
Tələblər
Tələblər
Tələblər
Tələblər
Tələblər

Bu layihədə bir Sparkfun ESP32 əşyası, DHT22 sensoru və Elektron Kərpic Torpaq Nəm Sensoru istifadə olunur. Əlavə olaraq bir wifi şəbəkəsi və Blynk tətbiqi tələb olunur. Tercihen, ESP32 şeyini ehtiva edən su keçirməyən bir korpus yaradılmalıdır. Bu nümunə bir enerji mənbəyi üçün standart bir prizdən istifadə etsə də, təkrar doldurulan bir batareya, günəş paneli və şarj tənzimləyicisinin əlavə edilməsi cihazın bərpa olunan enerji ilə işləməsini təmin edər.

Addım 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Blynk tətbiqini yükləyin və yeni bir layihə yaradın. Doğrulama işarəsinə diqqət yetirin-kodda istifadə olunacaq. Blynk tətbiqində yeni ekran vidjetləri yaradın və kodda müəyyən edilmiş müvafiq virtual sancaqları seçin. Yeniləmə aralığını itələmək üçün təyin edin. Hər bir vidjetə öz virtual pin təyin edilməlidir.

Addım 3: Arduino IDE

Arduino IDE
Arduino IDE

Arduino IDE proqramını yükləyin. Wifi bağlantısını təmin etmək üçün ESP32 şey sürücüsü və demo üçün yükləmə təlimatlarına əməl edin. Kod daxil olan Blynk və DHT kitabxanalarını yükləyin. Doğrulama simvolunu, wifi şifrəsini, wifi istifadəçi adını və e -poçtu son koda daxil edin. Torpaq növü üçün minimum və maksimum dəyərləri tapmaq üçün torpaq nəm sensoru üçün demo kodunu istifadə edin. Bu dəyərləri son kodda qeyd edin və dəyişdirin. Bitki üçün temperatur, torpaq nəmliyi və rütubət üçün minimum dəyərləri son kodda dəyişdirin. Kodu yükləyin.

Addım 4: Qurun

Qurun
Qurun
Qurun
Qurun
Qurun
Qurun

Birincisi, torpağın nəm sensörünü 3.3V, torpaq və giriş pininə 34 qoşun. Qeyd edək ki, bu sensor üçün analoq parametr istifadə olunacağı üçün açarın A -ya qoyulduğu ayrılmazdır. Daha sonra, DHT sensorunu 3.3V, torpaq və giriş pin 27 -yə qoşun. DHT22 sensoru VCC ilə məlumat çıxışı pimi arasında 10K Ohm müqavimət tələb edir. Düzgün bağlandığından əmin olmaq üçün DHT diaqramını yoxlayın. ESP32 -ni torpaqda olan nəm sensoru və səthin üstündəki DHT sensoru olan su keçirməyən bir korpusda konfiqurasiya edin. Güc mənbəyinə qoşulun və zavodunuzun ətrafındakı məlumatlardan zövq alın.

Addım 5: Kod

// Daxil kitabxanalar

#blynk_print seriyasını təyin edin

#daxil edin #əlavə edin "daxil edin" "DHT.h" daxil edin

// DHT sensor məlumatları

#dehine DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #dehine DHTPIN 27 // DHT sensoru DHT dht (DHTPIN, DHTTYPE) ilə əlaqəli rəqəmsal pin; // DHT sensorunu işə salın.

// giriş pinlərini və çıxışlarını təyin edin

int torpaq_sensoru = 34; // nəm sensoruna qoşulan analoq giriş pin nömrəsini təyin edin

int output_value; // çıxış olaraq təyin edin

int moistlevel; // çıxış olaraq təyin edin

int notified = 0; // notifed -i 0 olaraq təyin edin

int timedelay = 60000L; // hər dəqiqədə bir dəfə və ya 60.000 milisaniyədə məlumat almaq üçün taymer təyin edin

// bitki üçün minimum dəyərləri təyin edin

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

// Blynk Tətbiqində Doğrulama Tokenini almalısınız.

char auth = "Auth_Token_Here";

// WiFi etimadnaməniz.

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

BlynkTimer taymeri;

// Bu funksiya hər saniyədə Arduinonun boş vaxtını Virtual Pin -ə (5) göndərir.

// Tətbiqdə, Widgetin oxuma tezliyi PUSH olaraq təyin olunmalıdır. Bu, məlumatların Blynk Tətbiqinə nə qədər tez -tez göndərilməsini təyin etdiyiniz deməkdir.

void Sensors () // sensorları oxumaq və blynk -ə basmaq üçün əsas funksiya

{output_value = analogRead (tuproq_sensoru); // torpaq_sensorundan analoq siqnalı oxuyun və çıxış_dəyəri olaraq təyin edin // output_vlaue -ni min, maksimum dəyərləri 100, 0 -a qədər göstərin və 0 ilə 100 arasında məhdudlaşdırın // Min və daha yaxşı kalibrləmə üçün fərdi sensor və torpaq növü üçün maksimum dəyərlər nəm səviyyəsi = məhdudlaşdırma (xəritə (çıxış_dəyəri, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity (); // rütubət floatını oxuyun t = dht.readTemperature (); // İstiliyi Celsius (standart) float olaraq oxuyun f = dht.readTemperature (doğru); // İstiliyi Fahrenheit olaraq oxuyun (isFahrenheit = true) // Fahrenheit -də istilik indeksini hesablayın (standart) float hif = dht.computeHeatIndex (f, h); // Oxunanların uğursuz olub olmadığını yoxlayın və erkən çıxın (yenidən cəhd etmək üçün). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("DHT sensorundan oxunmadı!")); qayıtmaq; } // Bu, valları Blynk app Blynk.virtualWrite (V5, nəm səviyyəsi) vidjetlərində müəyyən edilmiş virtual sancaqlar ilə əlaqələndirir; // Nəm səviyyəsini virtual pin 5 -ə göndərin Blynk.virtualWrite (V6, f); // Virtuala temperatur göndərin pin 6 Blynk.virtualWrite (V7, h); // Virtual pin 7 -ə rütubət göndər Blynk.virtualWrite (V8, hif); // İstilik indeksini virtual pin 8 -ə göndərin

əgər (bildirildi == 0)

{if (moistlevel <= min_moisture) // Nəm səviyyəsi minimum dəyərə bərabər və ya aşağıdırsa {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Su zavoduna e -poçt göndərin} gecikmə (15000); // Blynk e -poçtları 15 saniyə aralı olmalıdır. 15000 milisaniyəni gecikdir, əgər (f <= min_temperatur) // İstilik minimum dəyərə bərabərdirsə və ya ondan aşağıdırsa {Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // E -poçt göndərin ki, temperatur aşağıdır

}

gecikmə (15000); // Blynk e -poçtları 15 saniyə aralı olmalıdır. 15000 milisaniyəni gecikdir, əgər (h <= min_həmlik) // Rütubət minimum dəyərə bərabər və ya aşağıdırsa {Blynk.email ("Emial_Here", "Bitki Monitoru", "Nəmlik Azdır!"); // Rütubətin aşağı olması barədə e -poçt göndərin} bildiriş = 1; timer.setTimeout (timedelay *5, resetNotified); // təkrar xəbərdarlıq e -poçtları arasında istədiyiniz dəqiqə sayına görə çoxalma vaxtı}}

void resetNotified () // e -poçt tezliyini sıfırlamaq üçün çağırılan funksiya

{bildirildi = 0; }

boş quraşdırma ()

{Serial.begin (9600); // Debug konsolu Blynk.begin (auth, ssid, pass); // blynk timer.setInterval -a qoşulun (vaxt gecikməsi, Sensorlar); // Hər dəqiqə çağırılacaq bir funksiyanı qurun və ya nə vaxt gecikməsini dht.begin () olaraq təyin edin; // DHT sensoru işə salın}

// Void loop yalnız blynk.run və timer ehtiva etməlidir

boşluq döngəsi () {Blynk.run (); // blynk timer.run () işləyin; // BlynkTimer başlatır}

Tövsiyə: