Browse Source

Creation Arduino placard mere

Remy 5 năm trước cách đây
mục cha
commit
fa3d6d149f

+ 0 - 117
Soft/Arduino/Arduino.ino

@@ -1,117 +0,0 @@
-#include <Wire.h>//https://www.arduino.cc/en/reference/wire
-#include <DS3231.h>//https://github.com/NorthernWidget/DS3231
-#include <DS18B20.h>
-#include <DS3231.h>
-
-#define ONE_WIRE_BUS 3
-
-/*
-int Inter1 = ; // inter croissance mere
-int Inter2 = ; // inter croissance reste
-int Inter3 = ; // inter flo
-int InterruptHydro = ; //Entrer Interrupt Hydro
-int Inter
-*/
-
-int Led1 = ; //Relai croissance mere
-int Led2 = ; //Relai croissance reste
-int Led3 = ; //Relai flo
-int Extract = ;//relai Extract
-int Dehum = ;
-int Pompe = ; //Relai pompe
-
-bool ExtractOn = True;
-int tmpArrosage = ; //temps d'arrosage
-
-DS3231 Clock;
-
-enum Prochain {
-	AlumFlo,
-	AlumCroi,
-	ExtFlo,
-	ExtCroi
-};
-
-enum Prochain pro = AlumFlo;
-
-void fc_InterHydro(){
-	//Voir si rearmer l'interuption
-	SI alarm1 :
-		LED();
-	Si alarm2 :
-		extracteur();
-}
-
-void fc_InterHydro(){
-	writepin(Pompe,ON);
-	sleep(tmpArrosage);
-	writepin(Pompe,OFF);
-	
-}
-
-void extracteur(){
-	//remiseAlarm2 +15min
-	if(ExtractOn)
-		writepin(Extract,OFF);
-	else
-		writepin(Extract,ON);
-	ExtractOn= ~ExtractOn;
-}
-
-void LED(){
-	Switch (pro){
-		case(AlumCroi):
-		pro = AlumFlo;
-		//rearmer l'alarm +2H
-		if(readpin(inter1))
-			writepin(Led1,ON);
-		if(readpin(inter1))
-			writepin(Led2,ON);
-		break;
-		case(AlumFlo):
-		pro = ExtFlo;
-		//rearmer l'alarm +12H
-		if (readpin(inter3))
-			writepin(Led3,ON);
-		break;
-		case(ExtFlo):
-		pro = ExtCroi;
-		//rearmer l'alarm +2H
-		writepin(Led3,OFF);
-		break;
-		case(ExtCroi):
-		pro = AlumCroi;
-		//rearmer l'alarm +8H
-		writepin(Led1,OFF);
-		writepin(Led2,OFF);
-		break;
-	}
-}
-		
-void setup() {
-  DS3231();
-  //init I/O
-  inter1 ; 
- inter2  ;
- inter3 ;
- interuptRTC  ; 
- InterruptHydro  ; 
-
- Led1  ; 
- Led2  ;
- Led3  ;
- Extract  ;
- Pompe  ; 
-
-  /*
-   * Interruption
-   */
-   PCintPort::attachInterrupt(InteruptRTC, fc_InterRTC, FALLING);
-   PCintPort::attachInterrupt(InterruptHydro, fc_InterHydro, FALLING);}
-
-void loop() {
-  
-  
-	  
-
-}

+ 0 - 14
Soft/Arduino/RTC.c

@@ -1,14 +0,0 @@
-#include "RTC.h"
-
-void activeAlarm(int heure, int Plusminute, bool Alarm, DS3231 *clock){
-	byte Day, Hour, Minute, Second, Bits;
-	
-	Second 	= clock->getSecond();
-	Minute 	= clock->getMinute() + Plusminute;
-	Hour	= clock->getHour(null,null);
-	Day		= clock->getDoW(); 
-	
-	
-	clock->setA1Time(Day, Hour, Minute, Second, 0x08, ADy, A12h, Apm);
-	
-}

+ 0 - 7
Soft/Arduino/RTC.h

@@ -1,7 +0,0 @@
-
-
-/*
- * Fonction active l'alarme a + heure + minute 
- * 
- */
-void activeAlarm(int heure, int minute);

+ 283 - 0
Soft/BOX/BOX.ino

@@ -0,0 +1,283 @@
+
+#include <OneWire.h>
+#include <DS18B20.h>  //temp DS18B20_RT by rob tillaart
+#include <DS3231.h>   //RTC DS3231 by andrew wickert
+#include <DHT.h>      //Adafruit
+#include <Wire.h>
+
+/*****************************************************************
+   Déclaration des Capteurs
+ *****************************************************************/
+//relay Lumiere
+const int RougeHaut      = 2;
+const int RougeBas       = 3;
+const int BleuHaut       = 4;
+const int BleuBas        = 5;
+const int TousBas        = 6;
+const int TousHaut       = 7;
+
+//relay Ventilation
+const int DehumPin        = 8;
+const int VentilHaut      = 9;
+const int VentilBas       = 10;
+const int Extracteur   = 11;
+
+//relay Arrosage
+const int Arro            = 12;
+const int Evacuation      = 13;
+
+//interupteur
+const int inter1  = 22;
+const int inter2  = 24;
+const int inter3  = 26;
+const int inter4  = 28;
+const int inter5  = 30;
+const int inter6  = 32;
+const int inter7  = 34;
+const int inter8  = 36;
+const int inter9  = 38;
+const int inter10 = 40;
+
+//Capteur Temp
+#define ONE_WIRE_TEMP 14
+OneWire oneWireTemp(ONE_WIRE_TEMP);
+DS18B20 Temp(&oneWireTemp);
+
+//capteur Hum air
+#define DHTTYPE DHT22
+#define DHTPIN 15
+DHT dht(DHTPIN, DHTTYPE);
+
+//Capteur hum sol
+const int HumidSolHaut = 16;
+const int HumidSolBas = 17;
+
+//RTC
+DS3231 Clock;
+
+/*****************************************************************
+   Déclaration des Variables globals
+ *****************************************************************/
+
+//Variable lumiere
+int newDay = 1; // Variable pour savoir si nouveau jour.
+int HA;  //heure allumage en minute
+int HE;  //heure extinction en minute (Ha +12Hou18H +/-15min)
+
+//Variable Extraction
+int tmpExtract, humExtract;
+int extract;
+
+//Variabe Arrosage
+const int delaySecArrosage = 20;
+const int delaySecEvacuation = 30;
+int HeuArrosage;
+/***********************************************************************
+     Setup
+ **********************************************************************/
+
+void setup() {
+  Serial.begin(9600);
+
+  /***********************************************************************
+    init des pins
+  * *********************************************************************/
+  //PIN Lumiere
+  pinMode(RougeHaut, OUTPUT);
+  pinMode(RougeBas, OUTPUT);
+  pinMode(BleuHaut, OUTPUT);
+  pinMode(BleuBas, OUTPUT);
+  pinMode(TousBas, OUTPUT);
+  pinMode(TousHaut, OUTPUT);
+
+  //Pin ventilation
+  pinMode(DehumPin, OUTPUT);
+  pinMode(VentilHaut, OUTPUT);
+  pinMode(VentilBas, OUTPUT);
+  pinMode(Extracteur, OUTPUT);
+
+  //Pin Arrosage
+  pinMode(Arro, OUTPUT);
+  pinMode(Evacuation, OUTPUT);
+
+  //interupteur
+  pinMode(inter1, INPUT);
+  pinMode(inter2, INPUT);
+  pinMode(inter3, INPUT);
+  pinMode(inter4, INPUT);
+  pinMode(inter5, INPUT);
+  pinMode(inter6, INPUT);
+  pinMode(inter7, INPUT);
+  pinMode(inter8, INPUT);
+  pinMode(inter9, INPUT);
+  pinMode(inter10, INPUT);
+
+
+  /***********************************************************************
+    init des capteurs
+  * *********************************************************************/
+
+  //Capteur Temp
+  Temp.begin();
+  Temp.setResolution(12);
+
+  //capteur Hum air
+  dht.begin();
+
+  //Capteur hum sol
+  pinMode(HumidSolBas, INPUT);
+  pinMode(HumidSolHaut, INPUT);
+
+  //RTC
+  Wire.begin();
+}
+
+void loop() {
+
+  /***********************************************************************
+    Gestion des capteurs
+  * **********************************************************************/
+  //Capteur Temp
+  Temp.requestTemperatures();
+  while (!Temp.isConversionComplete());
+  float Temper = Temp.getTempC();
+
+  //capteur Hum air
+  float hum = dht.readHumidity();
+
+  //Capteur hum sol
+
+  //RTC
+  bool h24, am;
+  int heure = Clock.getHour(h24, am );
+  int minu = Clock.getMinute();
+  int HMin = heure * 60 + minu; // heure en minute
+
+  /***********************************************************************
+    Gestion de la lumiere
+   * *********************************************************************
+  */
+  if (newDay == 1) {
+    newDay = 0;
+    if (inter1) {
+      Serial.println("Floraison");
+      HA = random (585, 615);
+      HE = HA + 705 + random(30);
+    }
+    else {
+      Serial.println("Croissance");
+      HA = random (285, 315);
+      HE = HA + 1065 + random(30);
+    }
+  }
+
+  if (HMin == 0)
+    newDay = 1;
+
+
+  if (inter1) {
+    if (HMin >= HA & HMin < HE) {
+      if (inter2) {
+        digitalWrite(RougeHaut, LOW);
+        digitalWrite(TousHaut, LOW);
+      }
+      if (inter3) {
+        digitalWrite(RougeBas, LOW);
+        digitalWrite(TousBas, LOW);
+      }
+    }
+  }
+  else {
+    if (HMin >= HA & HMin < HE) {
+      if (inter2) {
+        digitalWrite(BleuHaut, LOW);
+        digitalWrite(TousHaut, LOW);
+      }
+      if (inter3) {
+        digitalWrite(BleuBas, LOW);
+        digitalWrite(TousBas, LOW);
+      }
+    }
+  }
+
+  /***********************************************************************
+    Gestion de l'extraction
+  * *********************************************************************/
+  if (Temper >= 26) {
+    Serial.println("tmp >26 °C");
+    tmpExtract = 1 ;
+  }
+
+  if (Temper < 25) {
+    Serial.println("tmp <25 °C");
+    tmpExtract = 0;
+  }
+
+  if (inter6 & hum > 70) {
+    Serial.println("inter hum 70% et plus de 70% d'hum");
+    humExtract = 1;
+  }
+  else if ( inter6 == 0 & hum > 60) {
+    Serial.println("inter hum 60 % et plus de 60 % d'hum");
+    humExtract = 1;
+  }
+  else
+    humExtract = 0;
+
+  if (minu == 0 | minu == 1 | tmpExtract | humExtract | inter4){
+    Serial.println("Extracteur ON");
+    digitalWrite(Extracteur, LOW);
+  }
+    
+  else{
+    Serial.println("Extracteur OFF");
+    digitalWrite(Extracteur, HIGH);
+  }
+    
+
+  /***********************************************************************
+    Gestion de la ventilation
+  * *********************************************************************/
+  if(minu>=50 | inter4){
+    Serial.println("Ventilation ON");
+    digitalWrite(VentilHaut, LOW);
+    digitalWrite(VentilBas, LOW);
+  }
+  else{ 
+    Serial.println("Ventilation OFF");
+    digitalWrite(VentilHaut, HIGH);
+    digitalWrite(VentilBas, HIGH);
+  }
+  
+  /***********************************************************************
+    Gestion de l'arrosage
+  * *********************************************************************/
+
+  if ((HumidSolBas | HumidSolHaut) & inter9) {
+    Serial.println("Arrosage");
+    digitalWrite(Arro, LOW);
+    delay(delaySecArrosage * 1000 );
+    digitalWrite(Arro, LOW);
+    HeuArrosage = HMin;
+  }
+
+  if (inter7)
+    digitalWrite(Arro, LOW);
+  else
+    digitalWrite(Arro, HIGH);
+
+  if (HeuArrosage + 10 == HMin) {
+    Serial.println("Arrosage");
+    digitalWrite(Evacuation, LOW);
+    delay(delaySecEvacuation * 1000 );
+    digitalWrite(Evacuation, HIGH);
+  }
+
+  if (inter8)
+    digitalWrite(Evacuation, LOW);
+  else
+    digitalWrite(Evacuation, HIGH);
+
+
+  delay(10000);
+}

BIN
Soft/BOX/Capteur.xlsx


+ 1 - 0
Soft/Mere/.~lock.Capteur.xlsx#

@@ -0,0 +1 @@
+,remy,lemien.home,20.12.2020 07:02,file:///home/remy/.config/libreoffice/4;

BIN
Soft/Mere/Capteur.xlsx


+ 160 - 0
Soft/Mere/Mere.ino

@@ -0,0 +1,160 @@
+
+
+#include <DS3231.h>   //RTC DS3231 by andrew wickert
+#include <Wire.h>
+
+/*****************************************************************
+   Déclaration des Capteurs
+ *****************************************************************/
+//relay Lumiere
+const int Haut      = 2;
+const int Bas       = 3;
+
+//relay Ventilation
+const int Ventil  = 4;
+
+//relay Arrosage
+const int Arro    = 5;
+
+//Interrupteur
+const int interLumBas  = 6; //inter Lumiere bas ON/OFF
+const int interLumOff  = 7; //inter Lumiere OFF
+const int interVentAuto  = 8; //inter Ventilation ON/Auto
+const int interVentOff  = 9; //inter Ventilation OFF
+const int interArroAuto  = 10;//inter Arro ON/Auto
+const int interArroOff  = 11;//inter Arro OFF
+const int inter7  = 12;
+
+//RTC
+DS3231 Clock;
+
+/*****************************************************************
+   Déclaration des Variables globals
+ *****************************************************************/
+
+//Variable lumiere
+int newDay = 1; // Variable pour savoir si nouveau jour.
+int HA;  //heure allumage en minute
+int HE;  //heure extinction en minute (Ha +18H +/-15min)
+
+//Variable Extraction
+int tmpExtract, humExtract;
+int extract;
+
+//Variabe Arrosage
+const int delaySecArrosage = 20;
+int HeuArrosage;
+int jourArrosage = 0;
+/***********************************************************************
+     Setup
+ **********************************************************************/
+
+void setup() {
+  Serial.begin(9600);
+
+  /***********************************************************************
+    init des pins
+  * *********************************************************************/
+  //PIN Lumiere
+  pinMode(Haut, OUTPUT);
+  pinMode(Bas, OUTPUT);
+
+  //Pin ventilation
+  pinMode(Ventil, OUTPUT);
+
+  //Pin Arrosage
+  pinMode(Arro, OUTPUT);
+
+  //interupteur
+  pinMode(interLumBas, INPUT);
+  pinMode(interLumOff, INPUT);
+  pinMode(interVentAuto, INPUT);
+  pinMode(interVentOff, INPUT);
+  pinMode(interArroAuto, INPUT);
+  pinMode(interArroOff, INPUT);
+  pinMode(inter7, INPUT);
+
+
+  /***********************************************************************
+    init des capteurs
+  * *********************************************************************/
+
+  //RTC
+  Wire.begin();
+}
+
+void loop() {
+
+  /***********************************************************************
+    Gestion des capteurs
+  * **********************************************************************/
+
+  //RTC
+  bool h24, am;
+  int heure = Clock.getHour(h24, am );
+  int minu = Clock.getMinute();
+  int HMin = heure * 60 + minu; // heure en minute
+
+  /***********************************************************************
+    Gestion de la lumiere
+   * *********************************************************************
+  */
+  if (newDay == 1) {
+    newDay = 0;
+    HA = random (585, 615);
+    HE = HA + 705 + random(30);
+  }
+
+  if (HMin == 0) {
+    newDay = 1;
+    jourArrosage ++;
+  }
+
+  if (HMin >= HA & HMin < HE & interLumOff) { //On met en route si on est dans le temps et que l'inter2 est en allumé
+    if (interLumBas) {
+      Serial.println("Double lumiere ON");
+      digitalWrite(Bas, LOW);
+      digitalWrite(Haut, LOW);
+    }
+    else {
+      Serial.println("Lumiere haut ON");
+      digitalWrite(Haut, LOW);
+    }
+  }
+  else {
+    Serial.println("Lumiere Eteint");
+    digitalWrite(Bas, HIGH);
+    digitalWrite(Haut, HIGH);
+  }
+
+
+  /***********************************************************************
+    Gestion de l'extraction
+  * *********************************************************************/
+  if ((minu >= 50 | interVentAuto )& interVentOff) {
+    Serial.println("Extracteur ON");
+    digitalWrite(Ventil, LOW);
+  }
+  else {
+    Serial.println("Extracteur OFF");
+    digitalWrite(Ventil, HIGH);
+  }
+
+  /***********************************************************************
+    Gestion de l'arrosage
+  * *********************************************************************/
+  if (HMin == 1020) {
+    jourArrosage = 0;
+    Serial.println("Extracteur ON");
+    digitalWrite(Arro, LOW);
+    delay(40000);
+    digitalWrite(Arro, HIGH);
+    
+  }
+
+
+
+
+
+  delay(10000);
+}