La première partie de cette série de minis tutoriels abordait la façon dont la boite allait gérer les cycles jour/nuit même après une coupure de courant qu’elle soit volontaire ou non, question résolue avec l’aide d’un module RTC DS1307.
Nous allons maintenant nous intéresser au moyen de piloter l’alimentation d’une lampe branchée en 220Volts pour remplacer notre petite LED de test. C’est impossible à réaliser directement avec une carte Arduino fonctionnant en 5V sans la griller (voir pire) immédiatement, c’est pourquoi il faut utiliser un relais électromécanique.
Choix du Relais
Ce projet malgré sa simplicité se doit d’être abordé avec vigilance, il n’est pas inutile de rappeler qu’il faut faire preuve d’une extrême prudence en bidouillant avec du 220 Volts!
Afin de réduire les risques mais aussi de simplifier le projet nous allons encore une fois utiliser un module pré-assemblé qui comportera déjà toute l’électronique nécessaire à l’utilisation du relais.
Les modules sont vos amis..
Beaucoup de modules relais sont disponibles sur le marché, tous pour un prix très abordable. Le nombre de relais embarqué est variable, de 1 à .. beaucoup plus. Plusieurs relais sont nécessaires pour ce projet, j’utiliserais donc un module « Ywrobot 4 relay » qui m’a semblé de bon rapport qualité / prix.
Les 5 broches du module seront reliées à l’Arduino ainsi:
- VCC –> 5V
- GND –> GND
- INT1 –> broche 2
- INT2 –> broche 3
- INT3 –> broche 4
- INT4 –> broche 5
Chaque relais possède un bornier 3 pôles, la phase de la lampe sera branchée sur le point central et le contact normalement ouvert, soit respectivement les connecteurs 1 et 2 indiqués sur la photo. Du fait de ce choix le contact de la lampe ne sera pas établis à la mise sous tension de l’Arduino. Notre relais servira donc d’interrupteur pour la lampe, il suffit alors de l’activer à l’aide de l’Arduino pour l’allumer ou l’éteindre.
Un début d’interface de contrôle
Nous allons maintenant intégrer le premier élément de contrôle de la boite, à savoir un simple interrupteur 3 pôles ON/ON qui permettra de sélectionner un des deux programmes possibles, pousse et floraison.
Il sera relié à la broche 3 de l’Arduino, sans oublier de le protéger, à ce sujet je vous invite à visiter le fameux site d’eskimon et principalement la page dédiée aux boutons et autres interrupteurs.
Le sketch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#include #include RTC_DS1307 RTC; const int interrupteurPin = 7; // valeur broche interrupteur const int lampeRelaisPin = 2; // valeur broche du relais lampe const int startProg1 = 6; // heure de départ du programme de Pousse const int endProg1 = 24; // heure de fin du programme de Pousse const int startProg2 = 8; const int endProg2 = 20; int interrupteurVal = 0; // variable indiquant le status de l'interrupteur void setup() { Wire.begin(); RTC.begin(); // RTC.adjust(DateTime(__DATE__, __TIME__)); pinMode(lampeRelaisPin, OUTPUT); // Relais Lampe en sortie pinMode(interrupteurPin, INPUT); // interrupteur en entrée } void loop() { DateTime now = RTC.now(); // récupere l'heure du module RTC interrupteurVal = digitalRead(interrupteurPin); // Lecture de la valeur de l'interrupteur if (interrupteurVal == HIGH) { // Programme de pousse de 6h du matin à minuit (18h de pousse) if (now.hour() >= startProg1 & now.hour() <= endProg1) { // lampe ON digitalWrite(lampeRelaisPin, LOW); } else { // lampe OFF digitalWrite(lampeRelaisPin, HIGH); } } else { // Programme de floraison de 8h du matin à 20h (12h de floraison) if (now.hour() >= startProg2 & now.hour() <= endProg1) { // lampe ON digitalWrite(lampeRelaisPin, LOW); } else { // lampe OFF digitalWrite(lampeRelaisPin, HIGH); } } |
Récapitulatif
A ce stade du projet l’électronique de la boite de culture est fonctionnelle, bien que simplifiée à l’extrême elle sait gérer l’éclairage de façon autonome et propose une interface simple pour sélectionner un des deux programmes. Les valeurs horaire ne sont proposées qu’à titre d’exemple, vous pouvez les modifier directement en modifiant les constantes startProg1, endProg1, …
Ces programmes ne sont d’ailleurs pas forcément nécessaires, tout dépend de ce que vous souhaitez faire pousser dans votre boite. Un pied de tomate sera indifférent à la photopériode, alors que du Soja ou du fenouil en auront besoin, mais ceci n’étant pas un tuto de jardinage je vous laisse toute indépendance sur le sujet
Un premier aperçu
Et après ?
Dans la prochaine partie nous allons améliorer la boite en ajoutant un capteur de température et d’humidité, ces deux informations ne sont pas obligatoires pour toutes les plantes mais elles vont nous permettre d’optimiser les choses pour certains types de cultures.
Ce capteur n’ayant pas trop d’intérêt seul, nous utiliserons donc les données retournées pour piloter un ventilateur et un chauffage.
j’ai un problème est ce que tu peut me aider j’ai besoin d’allumer une led en fonctionne du temps j’ai réussit à programmer le temps avec DS1307 mais j’ai bloquer dans cette partie de led
voila mon gmail benlamlihsaida@gmail.com pour reponder à mon question
merci d’avance
J’ai un probleme avec mon code il ne veux pas allumer ma led pouvez vous me contacter pour plus d’info svp je vous enverrais mon code