Beni hatırlarsınız, köyde bahçe sulama sistemi için röleyi açıp kapatacak projem için yardım istemiştim. Wi-Fi var ama köy yeri olduğu için ara sıra kopma sorunları olabiliyor.İnternet bağlantısı varsa, RTC modülüne gerek yok. NTP servisi ile saati güncelleyebilirsiniz.
Hatta micropython ile işiniz daha kolay olur.
void loop() {
myRTC.updateTime();
if(myRTC.dayofmonth % 2 == 0) {
if(myRTC.hours == 21 && myRTC.minutes == 0) {
digitalWrite(RELAY_PIN, LOW);
lcd.setCursor(0,1);
lcd.print("SULAMA YAPILIYOR");
}
if(myRTC.hours == 21 && myRTC.minutes == 10) {
digitalWrite(RELAY_PIN, HIGH);
lcd.setCursor(0,1);
lcd.print(" SULAMA YAPILDI ");
}
}
delay(60000);
}
void loop() {
myRTC.updateTime();
if(myRTC.dayofmonth % 2 == 0) {
if(myRTC.hours == 21 && myRTC.minutes >= 0 && myRTC.minutes <=1) {
digitalWrite(RELAY_PIN, LOW);
lcd.setCursor(0,1);
lcd.print("SULAMA YAPILIYOR");
}
if(myRTC.hours == 21 && myRTC.minutes >= 10) {
digitalWrite(RELAY_PIN, HIGH);
lcd.setCursor(0,1);
lcd.print(" SULAMA YAPILDI ");
}
}
delay(60000);
}
Elimde bunlar vardı daha fazla masraf yapmak istemedim. Acaba yazdığım kod 2 günde bir çalıştırır mı? Ay sonlarında bi sıkıntı çıkarmı 1 günde bir açma 3 günde bir açma gibi?Çok uzak mesafe ise, sizin yerinizde olsam;
RPi Zero ve Mikroe GSM2 Click ile sistemimi yapardım. En ucuz gsm data hattı alıp kullanılabilir.
Bu sisteme Telegram bot ilave edilir, ister manuel ister otomatik işlem yaptırabilirsiniz.
İlk maliyet ve işletme maliyeti bir miktar fazla olabilir. Ancak; takip, kontrol ve işletme konularında kolaylık sağlayacaktır.
Dakikası saniyesine kadar doğru olmasına gerek yok, röleyi 1.5 saat falan açık tutup kapatsa yeterBen aynı şeyi nodeMCU ile internetten remotexy uygulaması üzerinden damlama sistemini elle açıp kapatıyorum. Her ihtimal röle bağlantılarına birer kablo bağlayıp sistemde bir sorun olursa elle/manuel selenoid vanayı açıp kapatabiliyorum. Önceki mesajlarımda kodu paylaşmıştım.
Kolunuzda şöyle bir sorun var. Loop sonundaki 60 saniye beklemede 21:00'ı ve 21:10'u tutturamayabilirsiniz. O yüzden işi garantiye almak için ufak bir değişiklik yapın.
Kod:void loop() { myRTC.updateTime(); if(myRTC.dayofmonth % 2 == 0) { if(myRTC.hours == 21 && myRTC.minutes >= 0 && myRTC.minutes <=1) { digitalWrite(RELAY_PIN, LOW); lcd.setCursor(0,1); lcd.print("SULAMA YAPILIYOR"); } if(myRTC.hours == 21 && myRTC.minutes >= 10) { digitalWrite(RELAY_PIN, HIGH); lcd.setCursor(0,1); lcd.print(" SULAMA YAPILDI "); } } delay(60000); }
60000 milisaniye yani 60 saniye beklemeden dolayı dakikayı tutturamayabilir. Ya beklemeyi 30 saniyenin altına azaltmak lazım ya da önerdiğim şekilde if'lerin değiştirilmesi gerekir. Diyelim 20:59:59 da koşul sağlanmadı olduğunda, 60 saniye sonra 21:01 olarak istenilen 21:00 geçilmiş olabilir. Her nekadar loop içinde hız daha fazla olsa da ben işi garantiye alırdım. Delay kısmı bir saniyeye alınarak çok daha kısa aralıklarda 5 veya 10 dakikada bu koşullar sağlanıyor mu test edilebilir.Elimde bunlar vardı daha fazla masraf yapmak istemedim. Acaba yazdığım kod 2 günde bir çalıştırır mı? Ay sonlarında bi sıkıntı çıkarmı 1 günde bir açma 3 günde bir açma gibi?
Dakikası saniyesine kadar doğru olmasına gerek yok, röleyi 1.5 saat falan açık tutup kapatsa yeter
Yani 60 saniye beklemeden dolayı dakika atlarsa sulama zamanını atlayabilir ve röleyi açmayabilir diyorsunuz?60000 milisaniye yani 60 saniye beklemeden dolayı dakikayı tutturamayabilir. Ya beklemeyi 30 saniyenin altına azaltmak lazım ya da önerdiğim şekilde if'lerin değiştirilmesi gerekir. Diyelim 20:59:59 da koşul sağlanmadı olduğunda, 60 saniye sonra 21:01 olarak istenilen 21:00 geçilmiş olabilir. Her nekadar loop içinde hız daha fazla olsa da ben işi garantiye alırdım. Delay kısmı bir saniyeye alınarak çok daha kısa aralıklarda 5 veya 10 dakikada bu koşullar sağlanıyor mu test edilebilir.