CLUZE Remy -EXT 6 лет назад
Родитель
Сommit
85b0b44d2c
4 измененных файлов с 322 добавлено и 134 удалено
  1. 21 0
      Soft/ESP12F/Prod/Communication.c
  2. 22 0
      Soft/ESP12F/Prod/Communication.h
  3. 269 124
      Soft/ESP12F/Prod/ESP12f.ino
  4. 10 10
      Soft/ESP12F/Test/ESP12f.ino

+ 21 - 0
Soft/ESP12F/Prod/Communication.c

@@ -0,0 +1,21 @@
+#include "Communication.h"
+
+void SPI_init( uint8_t pin ){
+	my_spi.pin=pin;
+	pinMode(my_spi.pin, OUTPUT);
+	digitalWrite(my_spi.pin, HIGH);
+	SPI.begin()
+	SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));
+}
+
+void SPI_send(uint8_t *data, uin8_t len){
+	digitalWrite(my_spi.pin, LOW);
+	SPI.transfer(data,len);
+	digitalWrite(my_spi.pin, HIGH);
+}
+
+void SPI_receive(uint8_t *data, uin8_t len){
+	digitalWrite(my_spi.pin, LOW);
+	SPI.transfer(data,len);
+	digitalWrite(my_spi.pin, HIGH);
+}

+ 22 - 0
Soft/ESP12F/Prod/Communication.h

@@ -0,0 +1,22 @@
+#ifndef __COMMUNICATION_H__
+#define __COMMUNICATION_H__
+
+#include <stdint.c>
+
+typedef struct{
+	uint8_t pin;
+}SPI_Handler;
+
+SPI_Handler my_spi;
+
+/**
+ * Fonction d'initialisation du SPI_init
+ * Param : pin pin du ship select
+ */
+void SPI_init( uint8_t pin );
+
+void SPI_send(uint8_t *data, uin8_t len);
+
+void SPI_receive(uint8_t *data, uin8_t len);
+
+#endif

+ 269 - 124
Soft/ESP12F/Prod/ESP12f.ino

@@ -1,35 +1,71 @@
 /* Comment this out to disable prints and save space */
-#define BLYNK_PRINT Serial
+//#define BLYNK_PRINT Serial
 
 #include <SPI.h>
 #include <ESP8266WiFi.h>
 #include <BlynkSimpleEsp8266.h>
+#include <WidgetRTC.h>
+#include <TimeLib.h>
 #include "ESP12f.h"
 
+#define VALUE_BLANC 0x60
+#define VALUE_CHAUD 0x61
+#define VALUE_BLEU	0x62
+#define VALUE_ROUGE 0x63
+#define VALUE_UV	0x64
+#define VALUE_VERT  0x65
+
+#define STOP 		0x70
+#define RETABLIR	0x80
+#define SYNCRTC		0x90
+
+#define	DEMMARAGE_BLANC	0x01
+#define	DEMMARAGE_CHAUD	0x02
+#define	DEMMARAGE_BLEU	0x03
+#define	DEMMARAGE_ROUGE	0x04
+#define	DEMMARAGE_UV	0x05
+#define	DEMMARAGE_VERT	0x06
+#define	ARRET_BLANC		0x08
+#define	ARRET_CHAUD		0x09
+#define	ARRET_BLEU		0x0A
+#define	ARRET_ROUGE		0X0B
+#define	ARRET_UV		0x0C
+#define	ARRET_VERT		0x0D
+#define	MAX_BLANC		0x11
+#define	MAX_CHAUD		0x12
+#define	MAX_BLEU		0x13
+#define	MAX_ROUGE		0x14
+#define	MAX_UV			0x15
+#define	MAX_VERT		0x16
+#define	PENTE_BLANC		0x18
+#define	PENTE_CHAUD		0x19
+#define	PENTE_BLEU		0x1A
+#define	PENTE_ROUGE		0X0B
+#define	PENTE_UV		0x1C
+#define	PENTE_VERT		0x1D
 
 /* Global Variable */
 
 // Token identification
-char auth[] = "qDSPfbEHHMiQxMNFeKZ2_lKwbxD81Yu8";
+char auth[] = "";
 
 // Your WiFi credentials.
 char ssid[] = "Livebox-7C2C";
 char pass[] = "566C61F61F9C925C9F3D7D79E6";
 
-BlynkTimer timer;
-WidgetLED  led1(V11) // Led Tech bas
-         , led2(V12) // Led Tech Haut
-         , led3(V13) // Led Cuve Haut
-         , led4(V14) // Led Reserve Bas
-         , led5(V15) // Led Autre1
-         , led6(V16); // Led Autre2
+WidgetRTC rtc;
 
 /* Fonction */
 void setup(){
   // Debug console
   Serial.begin(9600);
   Blynk.begin(auth, ssid, pass);
-  timer.setInterval(30000L, statusOrdi); //Configuration du timer pour que toute les seconde ils appelles la fonction de status.
+  
+  timer.setInterval(600000L, requestTime);//On appel la fonction de mise a jour de la RTC toute les 10 min
+}
+
+void requestTime() {
+  Blynk.sendInternal("rtc", "sync");//Appel a la mise a jour de time
 }
 
 void loop(){
@@ -37,165 +73,274 @@ void loop(){
 	timer.run();
 }
 
-void statusOrdi(){
-	uint8_t tab[7];
-	SPI_Status(tab); //Lecture du status de l'ordinateur
-	
-	//Transmission temp air
-	Blynk.virtualWrite(8, tab[1]);
-	//Envoi notification si necessaire
-		if (tab[1]<18)
-		Blynk.notify("Temérature air trop froid");
-	else (tab[1]>29)
-		Blynk.notify("Temérature air trop Chaud");
-	
-	//Transmission temp eau
-	Blynk.virtualWrite(9, tab[2]);
-	//Envoi notification si necessaire
-	if (tab[1]<23)
-		Blynk.notify("Temérature Eau trop froid");
-	else (tab[1]>29)
-		Blynk.notify("Temérature Eau trop Chaud");
-	
-	//Transmission PH
-	Blynk.virtualWrite(10, tab[3]);
-	//Envoi notification si necessaire
-	if (tab[1]<7.5)
-		Blynk.notify("PH trop bas");
-	else (tab[1]>8.5)
-		Blynk.notify("PH trop Haut");
-		
-	//Affichage led
-	if((tab[4] & MASK_TB) = MASK_TB)
-		led1.on();
-	else
-		led1.off();
-
-	if((tab[4] & MASK_TH) = MASK_TH)
-		led2.on();
-		Blynk.notify("Cuve technique haut");//Envoi notification si necessaire
-	else
-		led2.off();
+BLYNK_WRITE(InternalPinRTC) {
+  long t = param.asLong();//renvoi le temps unix
+  
+}
+
+hour(t);            // the hour now  (0-23)
+minute(t);          // the minute now (0-59)
+second(t);          // the second now (0-59)
+day(t);             // the day now (1-31)
+weekday(t);         // day of the week (1-7), Sunday is day 1
+month(t);           // the month now (1-12)
+
+BLYNK_WRITE(InternalPinRTC) {
+	unsigned long t = param.asLong();
+	uint8_t mes[8];
+	mes[0]=SYNCRTC;
+	mes[1]= year(t);
+	mes[2]=month(t);
+	mes[3]=day(t);
+	mes[4]=weekday(t);
+	mes[5]=hour(t);
+	mes[6]=minute(t);
+	mes[7]=second(t);
+	SPI_send(val,8);
+}
+
+BLYNK_WRITE(V0){ //Slider Blanc
+	uint8_t val[2]:
+	val[0] = VALUE_BLANC;
+	val[1] = param.asInt();
+	SPI_send(val,2);
+}
 
-	if((tab[4] & MASK_CH) = MASK_CH)
-		led3.on();
-	else
-		led3.off();
+BLYNK_WRITE(V1){ //Slider Chaud
+	uint8_t val[2]:
+	val[0] = VALUE_CHAUD;
+	val[1] = param.asInt();
+	SPI_send(val,2);
+}
 
-	if((tab[4] & MASK_RB) = MASK_RB)
-		led4.on();
-		Blynk.notify("Reserve bas");//Envoi notification si necessaire
-	else
-		led4.off();
+BLYNK_WRITE(V2){ //Slider Bleu
+	uint8_t val[2]:
+	val[0] = VALUE_BLEU;
+	val[1] = param.asInt();
+	SPI_send(val,2);
+}
 
-	if((tab[4] & MASK_A1) = MASK_A1)
-		led5.on();
-	else
-		led5.off();
+BLYNK_WRITE(V3){ //Slider Rouge
+	uint8_t val[2]:
+	val[0] = VALUE_ROUGE;
+	val[1] = param.asInt();
+	SPI_send(val,2);
+}
 
-	if((tab[4] & MASK_A2) = MASK_A2)
-		led6.on();
-	else
-		led6.off();
-	
-	// a faire
-	//affichage des osmolation passé.
+BLYNK_WRITE(V4){ //Slider UV
+	uint8_t val[2]:
+	val[0] = VALUE_UV;
+	val[1] = param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V20){ //Bouton Ecumeur
-	uint8_t data;
-	Read_actionneur(data);
-	if (param.asInt())
-		data = data | MASK_ECU;
-	else 
-		data = data & (!MASK_ECU);
-	Write_actionneur(data);
+BLYNK_WRITE(V5){ //Slider Vert
+	uint8_t val[2]:
+	val[0] = VALUE_VERT;
+	val[1] = param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V21){ //Bouton Remonter
-		uint8_t data;
-	Read_actionneur(data);
-	if (param.asInt())
-		data = data | MASK_ECU;
-	else
-		data = data & (!MASK_ECU);
-	Write_actionneur(data);
+BLYNK_WRITE(V6){ //Bouton STOP
+	uint8_t val[1]:
+	val[0] = STOP;
+	SPI_send(val,1);
 }
 
-BLYNK_WRITE(V22){ //Bouton Chauffage
-		uint8_t data;
-	Read_actionneur(data);
-	if (param.asInt())
-		data = data | MASK_ECU;
-	else
-		data = data & (!MASK_ECU);
-	Write_actionneur(data);
+BLYNK_WRITE(V7){ //BOUTON RETABLIR
+	uint8_t val[1]:
+	val[0] = RETABLIR;
+	SPI_send(val,1);
 }
 
-BLYNK_WRITE(V23){ //Bouton Brassage1
-		uint8_t data;
-	Read_actionneur(data);
-	if (param.asInt())
-		data = data | MASK_ECU;
-	else
-		data = data & (!MASK_ECU);
-	Write_actionneur(data);
+BLYNK_WRITE(V8){ //MAX blanc
+	uint8_t val[2];
+	val[0]= MAX_BLANC;
+	val[1]= param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V24){ //Bouton Brassage2
-		uint8_t data;
-	Read_actionneur(data);
-	if (param.asInt())
-		data = data | MASK_ECU;
-	else
-		data = data & (!MASK_ECU);
-	Write_actionneur(data);
+BLYNK_WRITE(V12){ //MAX chaud
+	uint8_t val[2];
+	val[0]= MAX_CHAUD;
+	val[1]= param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V25){ //Bouton Osmolateur
+BLYNK_WRITE(V16){ //MAX bleu
+	uint8_t val[2];
+	val[0]= MAX_BLEU;
+	val[1]= param.asInt();
+	SPI_send(val,2);
+}
 
+BLYNK_WRITE(V20){ //MAX rouge
+	uint8_t val[2];
+	val[0]= MAX_ROUGE;
+	val[1]= param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V26){ //Bouton Remplisage Osmolateur N2
+BLYNK_WRITE(V24){ //MAX UV
+	uint8_t val[2];
+	val[0]= MAX_UV;
+	val[1]= param.asInt();
+	SPI_send(val,2);
+}
 
+BLYNK_WRITE(V28){ //MAX Vert
+	uint8_t val[2];
+	val[0]= MAX_VERT;
+	val[1]= param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V27){ //Bouton Suplémentaire 12V 1
+BLYNK_WRITE(V9){ //PENTE blanc
+	uint8_t val[2];
+	val[0]= PENTE_BLANC;
+	val[1]= param.asInt();
+	SPI_send(val,2);
+}
 
+BLYNK_WRITE(V13){ //PENTE chaud
+	uint8_t val[2];
+	val[0]= PENTE_CHAUD;
+	val[1]= param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V28){ //Bouton Suplémentaire 12V 2	
+BLYNK_WRITE(V17){ //PENTE bleu
+	uint8_t val[2];
+	val[0]= PENTE_BLEU;
+	val[1]= param.asInt();
+	SPI_send(val,2);
+}
 
+BLYNK_WRITE(V21){ //PENTE rouge
+	uint8_t val[2];
+	val[0]= PENTE_ROUGE;
+	val[1]= param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V29){ //Bouton Lit fluidiser	
+BLYNK_WRITE(V25){ //PENTE UV
+	uint8_t val[2];
+	val[0]= PENTE_UV;
+	val[1]= param.asInt();
+	SPI_send(val,2);
+}
 
+BLYNK_WRITE(V29){ //PENTE Vert
+	uint8_t val[2];
+	val[0]= PENTE_VERT;
+	val[1]= param.asInt();
+	SPI_send(val,2);
 }
 
-BLYNK_WRITE(V30){ //Bouton RAH	
+BLYNK_WRITE(V10){ //DEMARAGE blanc
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= DEMMARAGE_BLANC;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
+}
 
+BLYNK_WRITE(V14){ //DEMARAGE chaud
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= DEMMARAGE_CHAUD;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
 }
 
-BLYNK_WRITE(V31){ //Bouton Suplémentaire 230V	
+BLYNK_WRITE(V18){ //DEMARAGE bleu
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= DEMMARAGE_BLEU;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
+}
 
+BLYNK_WRITE(V22){ //DEMARAGE rouge
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= DEMMARAGE_ROUGE;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
 }
 
-BLYNK_WRITE(V32){ //Ventilateur 1
-	
+BLYNK_WRITE(V26){ //DEMARAGE UV
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= DEMMARAGE_UV;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
 }
 
-BLYNK_WRITE(V33){ //Ventilateur 3
-	
+BLYNK_WRITE(V30){ //DEMARAGE Vert
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= DEMMARAGE_VERT;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
 }
 
-BLYNK_WRITE(V34){ //Ventilateur 3
-	
+BLYNK_WRITE(V11){ //ARRET blanc
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= ARRET_BLANC;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
 }
 
-BLYNK_WRITE(V35){ //Bouton OSMOLATEUR2 Activé
-	
+BLYNK_WRITE(V13){ //ARRET chaud
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= ARRET_CHAUD;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
 }
 
+BLYNK_WRITE(V19){ //ARRET bleu
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= ARRET_BLEU;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
+}
 
+BLYNK_WRITE(V23){ //ARRET rouge
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= ARRET_ROUGE;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
+}
 
+BLYNK_WRITE(V27){ //ARRET UV
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= ARRET_UV;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
+}
 
+BLYNK_WRITE(V31){ //ARRET Vert
+	long h = param[0].asLong();
+	uint8_t val[3];
+	val[0]= ARRET_VERT;
+	val[1]= h/3600;
+	val[2]= (h-(val[1]*3600))/60;
+	SPI_send(val,3);
+}

+ 10 - 10
Soft/ESP12F/Test/ESP12f.ino

@@ -20,21 +20,21 @@ char pass[] = "566C61F61F9C925C9F3D7D79E6";
 
 /* Fonction */
 void setup(){
-  // Debug console
-  Serial.begin(9600);
-  
-  pinMode(9, OUTPUT);
-  digitalWrite(9, 1);
-  SPI.begin()
-  SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));
+	// Debug console
+	Serial.begin(9600);
+
+	pinMode(9, OUTPUT);
+	digitalWrite(9, 1);
+	SPI.begin()
+	SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));
 }
 
 void loop(){
 	Blynk.run();
-	
+
 	digitalWrite(9, 0);
-	SPI.transfer(0xAA)
-	SPI.transfer(0x00)
+	SPI.transfer(0xAA,1)
+	SPI.transfer(0x00,1)
 	digitalWrite(9, 1);
 	
 }