NodeMCU her 2 günde bir röleyi açıp kapatacak kod

Olayı zaman sakalası/timeline üzerine kurgularsanız belirlediğiniz saatte röleyi tetikler. İsterse 1 dakika kala nodeMCU' yu açmış olun. Eprom'a yazılacak bir durum yok bence. Belki en son tetikleme zamanı kaydedilebilir. En son sulama zamanı oradan okunarak belirlenen süre geçmişse nodeMCU açıldığında tekrar bir gün beklemek zorunda kalmadan tetikleme yaptırılabilir.
 
Nodemcu röleyi açtığı zaman Elektrik kesildi ve sulama yarıda diyelim. Elektrik geldiğinde rölenin açık olması gereken saatte röleyi açmıyor. O yüzden eeprom denedim.
 
EEPROM kullanarak rölenin durumunu kaydetmek ve RTC'den zamanı kontrol etmek, sistemin güvenilirliğini artıracaktır.

*****************************************************

#include <EEPROM.h>
#include <DS1302.h>
#include <LiquidCrystal.h>

// DS1302 RTC pinleri
const int DS1302_SCLK_PIN = 5; // SCLK pin
const int DS1302_IO_PIN = 6; // I/O pin
const int DS1302_CE_PIN = 7; // CE pin

// Röle pini
const int RELAY_PIN = 8; // Röle pinini uygun bir GPIO pinine bağlayın

// Lcd Ekran pini
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// RTC modülü
DS1302 myRTC(DS1302_SCLK_PIN, DS1302_IO_PIN, DS1302_CE_PIN);

void setup() {
// Röle pinini çıkış olarak ayarlayın
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // Röleyi başlangıçta Off yap

// LCD ekranı başlatın
lcd.begin(16, 2);

// RTC'yi başlatın
myRTC.halt(false);
myRTC.writeProtect(false);

// Başlangıç mesajı
lcd.setCursor(0, 0);
lcd.print("Saat Ayarlaniyor");
lcd.setCursor(0, 1);
lcd.print("Lutfen Bekleyin");
delay(2000); // 2 saniye bekleyin
lcd.clear();

// EEPROM'dan son durumu geri yükleyin
int relayState = EEPROM.read(0);
if (relayState == 0) {
digitalWrite(RELAY_PIN, LOW); // Röle On
} else {
digitalWrite(RELAY_PIN, HIGH); // Röle Off
}
}

void loop() {
myRTC.updateTime();

if(myRTC.dayofmonth % 2 == 0) {
if(myRTC.hours == 21 && myRTC.minutes == 0) {
digitalWrite(RELAY_PIN, LOW); // Röleyi On
lcd.setCursor(0, 1);
lcd.print("SULAMA YAPILIYOR");
EEPROM.write(0, 0); // Röle On durumunu kaydet
}

if(myRTC.hours == 21 && myRTC.minutes == 10) {
digitalWrite(RELAY_PIN, HIGH); // Röle off
lcd.setCursor(0, 1);
lcd.print(" SULAMA YAPILDI ");
EEPROM.write(0, 1); // Röle Off durumunu kaydet
}
}

delay(60000); // 1 dakika bekleyin
}

*******************************************************
 
Şuanda sistem sıkıntısız çalışıyor. Valfin oraya sizin gibi bir yeşil modül led taktım. Geriye kalan kablo tesisatını ledi güzelce izole edip işi bitirmek.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…