Çiftçilerin çoğu büyük tarım arazisi kullanıyor ve geniş arazilerin her köşesine ulaşmak ve izlemek çok zor hale geliyor. Bazen düzensiz su serpme olasılığı vardır. Bu, daha fazla mali kayıplara yol açan kalitesiz mahsullerle sonuçlanır. Bu senaryoda, En Son IoT teknolojisini kullanan Akıllı Sulama Sistemi faydalıdır ve tarımda kolaylık sağlar.
Akıllı sulama sistemi komple sulama sistemi otomatik hale getirmek geniş kapsamı vardır. Burada ESP8266 NodeMCU Modülü ve DHT11 Sensörünü kullanarak IoT tabanlı bir Sulama Sistemi inşa ediyoruz. Suyu topraktaki nem seviyesine göre otomatik olarak sulamakla kalmayacak, aynı zamanda arazi durumunu takip etmek için Verileri ThingSpeak Sunucusuna gönderecektir. Sistem; Nem, Sıcaklık ve Nem gibi arazi ortam koşullarına bağlı olarak araziye su serpmek için kullanılacak su pompasından oluşacaktır.
Daha önce, mobil cihazlarda uyarılar gönderen ancak IoT bulutunda göndermeyen benzer Otomatik Bitki Sulama Sistemini kurduk. Bunun dışında Yağmur alarmı ve toprak nem dedektörü devresi de Akıllı Sulama sisteminin kurulmasında yardımcı olabilir.
Başlamadan önce, farklı mahsullerin farklı Toprak Nemi, Sıcaklık ve Nem Koşulları gerektirdiğine dikkat etmek önemlidir. Bu eğitimde, yaklaşık% 50-55 toprak nemi gerektiren böyle bir mahsul kullanıyoruz. Böylece toprak nemini% 50'nin altına düşürdüğünde Motor pompası otomatik olarak açılarak suyu serpecek ve nem% 55'e çıkıncaya kadar su serpmeye devam edecek ve bundan sonra pompa kapanacaktır. Sensör verileri, dünyanın herhangi bir yerinden izlenebilmesi için ThingSpeak Sunucusuna belirli bir zaman aralığında gönderilecektir.
Gerekli Bileşenler
- NodeMCU ESP8266
- Toprak Nemi Sensörü Modülü
- Su Pompası Modülü
- Röle Modülü
- DHT11
- Kabloların Bağlanması
Bu proje için gerekli tüm bileşenleri satın alabilirsiniz.
Devre şeması
Bu IoT Akıllı Sulama Sistemi için devre şeması aşağıda verilmiştir:
Otomatik Sulama Sistemi için ESP8266 NodeMCU'nun Programlanması
ESP8266 NodeMCU modülünü programlamak için, yalnızca DHT11 sensör kitaplığı harici kitaplık olarak kullanılır. Nem sensörü, ESP8266 NodeMCU analog pini A0 üzerinden okunabilen analog çıkış verir. NodeMCU, GPIO'sundan 3,3V'den daha yüksek çıkış voltajı veremediğinden, 5V motor pompasını çalıştırmak için bir röle modülü kullanıyoruz. Ayrıca Nem sensörü ve DHT11 sensörü, harici 5V güç kaynağından beslenir.
Bu eğitimin sonunda bir çalışma videosu ile birlikte eksiksiz kod verilmiştir, burada projenin çalışma akışını anlamak için programı açıklıyoruz.
Gerekli kitaplığı dahil ederek başlayın.
#Dahil etmek
ThingSpeak Sunucusunu kullandığımız için, sunucu ile iletişim kurmak için API Anahtarı gereklidir. API Anahtarını ThingSpeak'ten nasıl alabileceğimizi öğrenmek için ThingSpeak'te Canlı Sıcaklık ve Nem İzleme hakkında bir önceki makaleyi ziyaret edebilirsiniz.
String apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Bir sonraki Adım, SSID ve Şifre gibi Wi-Fi kimlik bilgilerini yazmaktır.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
DHT'nin bağlı olduğu DHT Sensör Pinini tanımlayın ve DHT tipini seçin.
# tanımla DHTPIN D3 DHT dht (DHTPIN, DHT11);
Nem sensörü çıkışı, ESP8266 NodeMCU'nun A0 Pimine bağlanır. Ve motor pini NodeMCU'nun D0'ına bağlanır.
const int nemPin = A0; const int motorPin = D0;
Biz kullanıyor olacaktır () Geçen Mili 10 saniyedir burada zamanın her tanımlanmış aradan sonra veri göndermek için işlevi. Gecikme () o mikrodenetleyici diğer görevleri yapamaz tanımlanmış bir gecikme için bir program durur beri önlenir. Delay () ve millis () arasındaki fark hakkında daha fazla bilgiyi burada bulabilirsiniz.
işaretsiz uzun aralık = 10000; işaretsiz uzun previousMillis = 0;
Motor pimini çıkış olarak ayarlayın ve başlangıçta motoru kapatın. DHT11 sensör okumasını başlatın.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, DÜŞÜK); // motoru başlangıçta kapalı tut dht.begin ();
Wi-Fi'yi verilen SSID ve Şifre ile bağlamayı deneyin ve Wi-Fi'nin bağlanmasını bekleyin ve eğer bağlıysa sonraki adımlara geçin.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { gecikme (500); Seri.baskı ("."); } Serial.println (""); Serial.println ("WiFi bağlı"); }
Programı başlatmak için geçerli zamanı tanımlayın ve geçen süre ile karşılaştırmak için bir değişkene kaydedin.
işaretsiz uzun currentMillis = millis ();
Sıcaklık ve nem verilerini okuyun ve bunları değişkenlere kaydedin.
float h = dht.readHumidity (); float t = dht.readTemperature ();
DHT bağlıysa ve ESP8266 NodeMCU okumaları okuyabiliyorsa, bir sonraki adıma geçin veya tekrar kontrol etmek için buradan dönün.
if (isnan (h) - isnan (t)) { Serial.println ("DHT sensöründen okunamadı!"); dönüş; }
Sensörden okunan nem değerini okuyun ve okumayı yazdırın.
nem Yüzdesi = (100,00 - ((analogRead (nemPin) / 1023,00) * 100,00)); Serial.print ("Toprak Nemi ="); Seri baskı (nem Yüzdesi); Serial.println ("%");
Nem okuması, gerekli toprak nem aralığı arasındaysa, pompayı kapalı tutun veya gerekli nemin ötesine geçerse, pompayı AÇIN.
eğer (nem Yüzdesi <50) { digitalWrite (motorPin, HIGH); } if (nem Yüzdesi > 50 && nem Yüzdesi <55) { digitalWrite (motorPin, HIGH); } if ( nemYüzdesi > 56) { digitalWrite (motorPin, LOW); }
Şimdi her 10 saniyede bir , nem, sıcaklık ve nem verilerini ThingSpeak sunucusuna göndermek için sendThingspeak () işlevini çağırın.
eğer ((unsigned long) (currentMillis - previousMillis)> = interval) { sendThingspeak (); previousMillis = milis (); client.stop (); }
In sendThingspeak () sistem sunucusuna bağlıysa ve evet o zaman nem, sıcaklık, nem okuma yazılmış bir dize hazırlayıp bu dize API anahtarı ve sunucu adresi ile birlikte ThingSpeak sunucuya gönderilecek eğer fonksiyonu kontrol ederiz.
if (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (nem Yüzdesi); postStr + = "& field2 ="; postStr + = Dize (t); postStr + = "& field3 ="; postStr + = Dize (h); postStr + = "\ r \ n \ r \ n";
Son olarak veriler, API anahtarı, sunucu adresi ve önceki adımda hazırlanan dizeyi içeren client.print () işlevi kullanılarak ThingSpeak sunucusuna gönderilir.
client.print ("POST / güncelleme HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n"); client.print ("Bağlantı: kapat \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("İçerik Türü: uygulama / x-www-form-urlencoded \ n"); client.print ("İçerik-Uzunluk:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Son olarak veriler ThingSpeak Dashboard'da böyle görünüyor
Bu son adım, IoT tabanlı Akıllı Sulama Sistemi ile ilgili eğitimin tamamını tamamlıyor. Su serptikten sonra toprak nemi gerekli seviyeye ulaştığında motoru kapatmanın önemli olduğunu unutmayın. Farklı mahsuller için farklı kontroller içerebilen daha akıllı bir sistem yapabilirsiniz.
Bu projeyi yaparken herhangi bir sorunla karşılaşırsanız, aşağıya yorum yapın veya daha alakalı sorular ve cevapları için forumlarımıza ulaşın.
Aşağıda bu proje için tam programı ve tanıtım videosunu bulun.