Bonjour a tous,
Alors avant tous, je tiens a préciser que je ne suis pas ici pour que l'on me fasse mon programme, juste que l'on m'aiguille pour résoudre mon problème pour apprendre et ne plus être embêter la prochaine fois.
Alors voila mon projet : automatiser un terrarium a dendrobates (petites grenouille tropicale, pour celles et ceux qui ne connaissent pas).
Je souhaite pouvoir gérer un fogger (machine a "brouillard") via un relais (mise en marche a heure prédéfinie dans le programme), une pompe de brumisation (pour simuler la pluie si je suis dire) également via un relais. Pour la brumisation, 2 capteurs de niveau dans la réserve d'eau, un qui indique (via une led rgb) le niveau d'eau (premier capteur en niveau haut, led verte allumé, niveau bas led rouge allumé, capteur au fond en bas, led rouge clignote et relais brumisation désactivé (sécurité pour éviter que la pompe ne tourne a vide).
Par la suite, je pense rajouter sonde de température et d'humidité pour gérer via l'arduino.
j'ai également prévu 2 boutons poussoir, pour pouvoir déclencher manuellement le fogger ou la pompe de brumisation.
Pour gérer le temps, j'ai un module RTC.
Maintenant que je vous ai présenter le projet, les problèmes.
-
J'ai essayer un programme trouver sur internet pour afficher la date et l'heure dans le moniteur série = OK.
-
J'ai créer mon programme (comme je l'avais fait pour gérer l'éclairage de mes aquarium via relais (un interrupteur qui commander 2 relais en ON/OFF) = sa ne fonctionne pas, appui sur les BP ne change rien du tous.
-
J'ai intégrer le programme pour l'heure dans mon programme, l'heure ne s'affiche qu'une seule fois dans le moniteur série, et affiche tous le temps l'heure a laquelle j'ai televerser le programme dans l'arduino (UNO).
Je vous joint mon programme, si quelqu'un pouvais m'aiguiller, parceque la je ne comprend vraiment pas.
Je precise également, que ma UNO et mes 2 shields relais se trouver sous mon aquarium, donc peut être sujet a l'humidité, et par conséquent défaillant.
Le plan de câblage est en cours de réalisation, je vous le poste dès que possible.
En vous remerciant.
//PROJET DE GESTION DE TERRARIUM POUR DENDROBATES VIA ARDUINO
//COMMANDE DU FOGGER ("MACHINE A FUMEE"), BRUMISATEUR (POMPE HAUTE PRESSION ET SPRINKLER) EN AUTOMATIQUE (HEURES DEFINIE VIA MODULE RTC) ET EN MANUEL VIA BOUTON POUSSOIR SUR PANNEAU DE CONTROLE
//SURVEILLANCE DU NIVEAU D'EAU DANS LA RESERVE DE BRUMISATION VIA 2 CAPTEURS DE NIVEAU (UN POUR LE NIVEAU BAS, UN POUR LA SECURITE (EMPECHE LA POMPE DE TOUNER SI PLUS D'EAU) ET INDICATION DE L'ETAT VIA LED RGB (ALLUMEE VERTE = NIVEAU D'EAU CORRECT, ALLUMEE ROUGE = NIVEAU D'EAU BAS, CLIGNOTE ROUGE = RESERVE VIDE, EMPECHE LA POMPE DE SE METTRE EN MARCHE)
//PAR LA SUITE, AJOUT DE CAPTEURS DE TEMPERATURE ET D'HUMIDITE POUR GESTION DU CHAUFFAGE/BRUMISATION EN FONCTION DES MESURES / VENTILATEUR POUR LA CONDENSATION/TEMPERATURE HAUTE (EN ETE) ET AFFICHAGE DES VALEURS SUR ECRAN LCD
//D'AUTRES OPTIONS VIENDRONT JE PENSE COMPLETE LE SYSTEME AU FUR ET A MESURE, COMME JE PENSE UN LECTEU NFC POUR POUVOIR DECLENCHER LE FOGGER / LA BRUMISATION EN MANUEL (EVITE QUE QUELQU'UN NE JOUE AVEC)
//L'ECLAIRAGE SERA GERER VIA UN TC420 (POUR TROP TROUVER COMMENT GERER LE PWM DE L'ARDUINO SANS FAIRE DE CIRCUIT COMPLEXE AUQUELS POUR ETRE FRANC JE NE COMPREND PAS GRAND CHOSE ET N'EST PAS TROP LE TEMPS POUR L'INSTANT, MAIS PAR LE SUITE, POURQUOI PAS
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
const int BP_FOGGER=1;
const int BP_BRUMI=2;
const int RELAIS_FOGGER=3;
const int RELAIS_BRUMI=4;
const int CAPTEUR_NIVEAU_BRUMI=5;
const int CAPTEUR_STOP_BRUMI=6;
const int LED_ROUGE_BRUMI=7;
const int LED_VERTE_BRUMI=8;
void setup () {
Serial.begin(57600); //Démarrage de la communication
Wire.begin(); //Démarrage de la librairie wire.h
RTC.begin(); //Démarrage de la librairie RTClib.h
//Met à l'heure à date à laquelle le programme est compilé
RTC.adjust(DateTime(DATE, TIME));
pinMode (BP_FOGGER, INPUT_PULLUP);
pinMode (BP_BRUMI, INPUT_PULLUP);
pinMode (CAPTEUR_NIVEAU_BRUMI, INPUT_PULLUP);
pinMode (CAPTEUR_STOP_BRUMI, INPUT_PULLUP);
digitalWrite (BP_FOGGER, HIGH);
digitalWrite (BP_BRUMI, HIGH);
digitalWrite (CAPTEUR_NIVEAU_BRUMI, HIGH);
digitalWrite (CAPTEUR_STOP_BRUMI, HIGH);
pinMode (RELAIS_FOGGER, OUTPUT);
pinMode (RELAIS_BRUMI, OUTPUT);
pinMode (LED_ROUGE_BRUMI, OUTPUT);
pinMode (LED_VERTE_BRUMI, OUTPUT);
}
void loop() {
//Affichage de l'heure dans le moniteur serie (pour essai fonctionnement ou verification)
DateTime now = RTC.now();
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(3000);
// DECLENCHEMENT AUTOMATIQUE FOGGER
// A 6H50 PENDANT 10 MINUTES
if(now.hour() == 6 && now.minute() == 50) {
digitalWrite(RELAIS_FOGGER,1);
delay(1000000);
digitalWrite(RELAIS_FOGGER,0);
}
// A 23H00 PENDANT 10 MINUTES
if(now.hour() == 23 && now.minute() == 00) {
digitalWrite(RELAIS_FOGGER,1);
delay(1000000);
digitalWrite(RELAIS_FOGGER,0);
}
// DECLENCHEMENT AUTOMATIQUE BRUMISATION
// A 8H15 PENDANT 8 SECONDES
if(now.hour() == 8 && now.minute() == 15) {
digitalWrite(RELAIS_BRUMI,1);
delay(8000);
digitalWrite(RELAIS_BRUMI,0);
}
// A 14H15 PENDANT 8 SECONDES
if(now.hour() == 14 && now.minute() == 15) {
digitalWrite(RELAIS_BRUMI,1);
delay(8000);
digitalWrite(RELAIS_BRUMI,0);
}
// A 20H15 PENDANT 8 SECONDES
if(now.hour() == 20 && now.minute() == 15) {
digitalWrite(RELAIS_BRUMI,1);
delay(8000);
digitalWrite(RELAIS_BRUMI,0);
}
// DECLENCHEMENT MANUEL FOGGER PENDANT 10 MINUTES
if(digitalRead(BP_FOGGER)==1) {
digitalWrite(RELAIS_FOGGER,1);
delay(1000000);
digitalWrite(RELAIS_FOGGER,0);
}
// DECLENCHEMENT MANUEL BRUMISATION PENDANT 8 SECONDES
if(digitalRead(BP_BRUMI)==1) {
digitalWrite(RELAIS_BRUMI,1);
delay(8000);
digitalWrite(RELAIS_BRUMI,0);
}
// ALLUMAGE LED VERTE NIVEAU D'EAU OK BRUMISATION
if(digitalRead(CAPTEUR_NIVEAU_BRUMI)==1) {
digitalWrite(LED_VERTE_BRUMI,1);
digitalWrite(LED_ROUGE_BRUMI,0);
}
// ALLUMAGE LED ROUGE NIVEAU D'EAU BAS BRUMISATION
if(digitalRead(CAPTEUR_NIVEAU_BRUMI)==0) {
digitalWrite(LED_ROUGE_BRUMI,1);
digitalWrite(LED_VERTE_BRUMI,0);
}
// SECURITE RESERVE BRUMISATION VIDE (COUPE LE RELAIS DE BRUMISATION ET FAIS CLIGNOTER LA LED ROUGE)
if(digitalRead(CAPTEUR_STOP_BRUMI)==1) {
digitalWrite(RELAIS_BRUMI,0);
digitalWrite(LED_ROUGE_BRUMI,1);
delay(1000);
digitalWrite(LED_ROUGE_BRUMI,0);
delay(1000);
digitalWrite(LED_ROUGE_BRUMI,1);
delay(1000);
}
}