İçindekiler:

ESP32 Thing ve Blynk Kullanan Tesis Monitörü: 5 Adım
ESP32 Thing ve Blynk Kullanan Tesis Monitörü: 5 Adım

Video: ESP32 Thing ve Blynk Kullanan Tesis Monitörü: 5 Adım

Video: ESP32 Thing ve Blynk Kullanan Tesis Monitörü: 5 Adım
Video: Temperature and Humidity Monitor Using ESP32 and Blynk IOT | Blynk 2.0 Projects 2024, Kasım
Anonim
ESP32 Thing ve Blynk Kullanan Tesis Monitörü
ESP32 Thing ve Blynk Kullanan Tesis Monitörü
ESP32 Thing ve Blynk Kullanan Tesis Monitörü
ESP32 Thing ve Blynk Kullanan Tesis Monitörü

genel bakış

Bu projenin amacı, bir houseplantın koşullarını izleyebilen kompakt bir cihaz oluşturmaktır. Cihaz, kullanıcının Blynk Uygulamasını kullanarak bir akıllı telefondan toprak nem seviyesini, nem seviyesini, sıcaklığı ve "hissedilen" sıcaklığı kontrol etmesini sağlar. Ek olarak, koşullar tesis için uygun olmadığında kullanıcı bir e-posta uyarısı alacaktır. Örneğin, toprak nem seviyeleri uygun bir seviyenin altına düştüğünde, kullanıcı bitkiyi sulaması için bir hatırlatma alacaktır.

Adım 1: Gereksinimler

Gereksinimler
Gereksinimler
Gereksinimler
Gereksinimler
Gereksinimler
Gereksinimler

Bu proje bir Sparkfun ESP32, bir DHT22 sensörü ve bir Elektronik Tuğla Toprak Nem Sensörü kullanıyor. Ek olarak, bir wifi ağı ve Blynk uygulaması gereklidir. Tercihen, ESP32 şeyini içermek için su geçirmez bir muhafaza oluşturulmalıdır. Bu örnekte bir güç kaynağı için standart bir priz kullanılırken, şarj edilebilir bir pil, güneş paneli ve şarj kontrol cihazının eklenmesi, cihazın yenilenebilir enerji ile çalıştırılmasını sağlayacaktır.

2. Adım: Blynk

göz kırpmak
göz kırpmak
göz kırpmak
göz kırpmak
göz kırpmak
göz kırpmak

Olmak için Blynk uygulamasını indirin ve yeni bir proje oluşturun. Kimlik doğrulama belirtecini not edin; kodda kullanılacaktır. Blynk uygulamasında yeni ekran widget'ları oluşturun ve kodda tanımlanan ilgili sanal pinleri seçin. İtmek için yenileme aralığını ayarlayın. Her widget'a kendi sanal pini atanmalıdır.

Adım 3: Arduino IDE'si

Arduino IDE'si
Arduino IDE'si

Arduino IDE'yi indirin. Wifi bağlantısını sağlamak için ESP32 şey sürücüsü ve demo için indirme talimatlarını izleyin. Kodda bulunan Blynk ve DHT kitaplıklarını indirin. Son kodda kimlik doğrulama jetonunu, wifi şifresini, wifi kullanıcı adını ve e-postayı doldurun. Toprak türü için minimum ve maksimum değerleri bulmak için toprak nem sensörü demo kodunu kullanın. Bu değerleri son kodda kaydedin ve değiştirin. Nihai kodda bitki için sıcaklık, toprak nemi ve nem için minimum değerleri değiştirin. Kodu yükleyin.

Adım 4: İnşa Edin

İnşa et
İnşa et
İnşa et
İnşa et
İnşa et
İnşa et

İlk olarak, toprak nemi sensörünü 3,3V'a, toprağa ve giriş pimi 34'e bağlayın. Bu sensörün analog ayarı kullanılacağından anahtarın A'ya ayarlanmasının ayrılmaz olduğunu unutmayın. Ardından, DHT sensörünü 3,3V, toprak ve giriş pimi 27'ye bağlayın. DHT22 sensörü, VCC ile veri çıkış pimi arasında 10K Ohm'luk bir direnç gerektirir. Doğru şekilde kablolandığından emin olmak için DHT şemasını kontrol ettiğinizden emin olun. ESP32'yi nem sensörü toprakta ve DHT sensörü yüzeyin üzerinde olacak şekilde su geçirmez bir muhafaza içinde yapılandırın. Bir güç kaynağına bağlanın ve tesisinizin ortamındaki verilerin keyfini çıkarın.

Adım 5: Kod

// Dahil edilen kitaplıklar

#define BLYNK_PRINT Seri

#include #include #include #include "DHT.h"

//DHT sensör bilgisi

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // DHT sensörüne bağlı dijital pin DHT dht(DHTPIN, DHTTYPE); // DHT sensörünü başlat.

//giriş pinlerini ve çıkışlarını tanımla

int toprak_algılayıcısı = 34; //nem sensörüne bağlı analog giriş pin numarasını tanımla

int çıktı_değeri;//çıktı olarak tanımla

int nem seviyesi;//çıktı olarak tanımla

int bildirildi = 0; // bildirimi 0 olarak tanımla

int zaman gecikmesi= 60000L; //zamanlayıcıyı dakikada bir veya 60.000 milisaniyede veri almak için çalıştır

// tesis için minimum değerleri ayarla

int min_nem =20; int min_sıcaklık =75; int min_nem =60;

// Blynk Uygulamasında Auth Token almalısınız.

char auth = "Auth_Token_Here";

// WiFi kimlik bilgileriniz.

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

BlynkTimer zamanlayıcı;

// Bu fonksiyon Arduino'nun çalışma süresini her saniye Virtual Pin'e (5) gönderir.

// Uygulamada, Widget'ın okuma frekansı PUSH olarak ayarlanmalıdır. Bu, // Blynk Uygulamasına ne sıklıkta veri göndereceğinizi tanımladığınız anlamına gelir.

void Sensors () // sensörleri okumak ve yanıp sönmeye basmak için ana işlev

{ output_value = analogRead(soil_sensor);// toprak_sensöründen gelen analog sinyali okuyun ve output_value olarak tanımlayın // output_vlaue'yi min, maks değerleri 100, 0'a eşleyin ve 0, 100 arasında sınırlandırın //min ve daha iyi kalibrasyon için bireysel sensör ve toprak tipi için maksimum değerler nem seviyesi = kısıtlama (harita(çıktı_değeri, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity(); // Nem şamandırasını oku t = dht.readTemperature(); // Sıcaklığı Celsius olarak oku (varsayılan) float f = dht.readTemperature(true); // Sıcaklığı Fahrenhayt olarak oku (isFahrenheit = true) // Isı indeksini Fahrenhayt cinsinden hesapla (varsayılan) float hif = dht.computeHeatIndex(f, h); // Herhangi bir okumanın başarısız olup olmadığını kontrol edin ve erken çıkın (tekrar denemek için). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("DHT sensöründen okunamadı!")); dönüş; } //Bu, değerleri Blynk uygulamasındaki widget'larda tanımlanan sanal pimlere bağlar Blynk.virtualWrite(V5, nem düzeyi);// Nem seviyesini sanal pim 5'e gönder Blynk.virtualWrite(V6, f);// Sanala sıcaklığı gönder pin 6 Blynk.virtualWrite(V7, h);// Sanal pin 7'ye nem gönder Blynk.virtualWrite(V8, hif);// Sanal pin 8'e ısı indeksi gönder

if (bildirildi==0)

{ if (nem seviyesi <= min_nem) // Nem seviyesi minimum değere eşit veya altındaysa { Blynk.email("Email_Here", "Plant Monitor", "Su Tesisi!"); // Su tesisine e-posta gönder } gecikme (15000); // Blynk e-postaları 15 saniye aralıklarla olmalıdır. Gecikme 15000 milisaniye if (f <= min_temperature) // Sıcaklık minimum değere eşit veya altındaysa { Blynk.email("Email_Here", "Plant Monitor", "Sıcaklık Düşük!"); // Sıcaklığın düşük olduğuna dair e-posta gönder

}

gecikme (15000); // Blynk e-postaları 15 saniye aralıklarla olmalıdır. Gecikme 15000 milisaniye if (h <= min_nem) // Nem minimum değere eşit veya altındaysa { Blynk.email("Emial_Here", "Plant Monitor", "Nem Düşük!"); // Nemin düşük olduğuna dair e-posta gönder } bildirildi = 1; timer.setTimeout(timedelay *5, resetNotified); // zaman gecikmesini tekrar uyarı e-postaları arasında istenen dakika sayısıyla çarp } }

void resetNotified() // e-posta sıklığını sıfırlamak için işlev çağrıldı

{ bildirildi = 0; }

geçersiz kurulum()

{ Serial.başlangıç(9600); // Hata ayıklama konsolu Blynk.begin(auth, ssid, pass); // blynk timer.setInterval'e bağlanın(timedelay, Sensors); // Dakikada bir çağrılacak bir fonksiyon veya hangi zaman gecikmesinin ayarlanacağı dht.begin(); //DHT sensörünü çalıştır }

//Void döngüsü yalnızca blynk.run ve zamanlayıcıyı içermelidir

boşluk döngüsü() { Blynk.run(); // blynk timer.run()'u çalıştır; // BlynkTimer'ı başlatır }

Önerilen: