/* Claude EMERY - 04/05/2026
Simulation pompe d'arrosage déclenchée à heure/minute fixes
avec module RTC DS1307 en I2C et Relais
La LED simule la pompe d'arrosage
*/
#include <Wire.h> // Librairie Wire pour la gestion I2C
#include <RTClib.h> // Librairie RTC pour le module DS1307
RTC_DS1307 rtc; // Déclaration du module RTC
const int relaisPin = 7; // Pin du relais
const int heureArrosage = 19; // Heure d'arrosage = 19h00
const int minuteArrosage = 0; // Minute d'arrosage
const int dureeArrosage = 15; // Durée d'arrosage en secondes
bool dejaArrose = false; // Variable pour deja arrosée
void setup() {
Serial.begin(9600);
pinMode(relaisPin, OUTPUT);
digitalWrite(relaisPin, HIGH); // Relais OFF
if (!rtc.begin()) {
Serial.println("RTC non detecte");
while (1);
}
// Décommenter UNE FOIS pour régler l'heure RTC
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
if (!rtc.isrunning()) {
Serial.println("RTC inactive !");
}
}
void loop() {
DateTime now = rtc.now();
Serial.print(now.hour());
Serial.print(":");
Serial.print(now.minute());
Serial.print(":");
Serial.println(now.second());
// Déclenchement
if (now.hour() == heureArrosage && now.minute() == minuteArrosage && !dejaArrose) {
Serial.println("Pompe ON");
// Active relais
digitalWrite(relaisPin, LOW);
delay(dureeArrosage * 1000);
// Stop pompe
digitalWrite(relaisPin, HIGH);
Serial.println("Pompe OFF");
dejaArrose = true;
}
// Reset à minuit
if (now.hour() == 0 && now.minute() == 0) {
dejaArrose = false;
}
delay(1000);
}LED C = GND, A = NC du relais
La LED simule
une pompe d'arrosage
déclenchée par le relais
Allumée = Pompe ON
Eteinte = Pompe OFF
Relais COM = +5v
IN = 0 , NO = 1 et NC = 0
IN = 1 , NO = 0 et NC = 1
RTC DS1307-I2C
SDA = A4
SCL = A5