Plant Monitoring project ei2i-4 Made by Jeanne Baumier, Anaïs Auberval and Thomas Broussard

Dependencies:   mbed

Committer:
Tbroussard
Date:
Mon Jan 15 15:57:21 2018 +0000
Revision:
9:c1392dfc57b8
Parent:
6:96556f982fb7
Add deepsleep mode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Tbroussard 4:63b7f6304f74 1 /****************************************************************************************************************************************************
Tbroussard 4:63b7f6304f74 2 Titre : Full_Sensors
Tbroussard 4:63b7f6304f74 3 Auteur : Jeanne Baumier, Anaïs Auberval et Thomas Broussard
Tbroussard 4:63b7f6304f74 4 Date : 29/11/17
Tbroussard 4:63b7f6304f74 5 Plateforme : STM32L432KC
Tbroussard 4:63b7f6304f74 6 Projet : PlantSigfox - Monitoring de plante à distance
Tbroussard 4:63b7f6304f74 7 --------------------------------
Tbroussard 4:63b7f6304f74 8 Description :
Tbroussard 4:63b7f6304f74 9 Ce programme permet d'effectuer des relèves des différents capteurs météorologiques toute les T secondes.
Tbroussard 4:63b7f6304f74 10 Les données reçues par les capteurs sont traitées puis transmises via un module Sigfox TD1208R sur un serveur sigfox (https://backend.sigfox.com)
Tbroussard 4:63b7f6304f74 11 puis redirigées vers un dashboard (https://plantsigfox.eu-gb.mybluemix.net/ui)
Tbroussard 1:ec997414ae6b 12
Tbroussard 4:63b7f6304f74 13 L'ensemble des composants peuvent être configurés dans le fichier Mapping.h, à savoir :
Tbroussard 4:63b7f6304f74 14 - l'activation ou la désactivation d'un composant
Tbroussard 4:63b7f6304f74 15 - les paramètres d'étalonnage et de mesure des capteurs
Tbroussard 4:63b7f6304f74 16 - les broches programmées pour le microcontrôleur
Tbroussard 4:63b7f6304f74 17
Tbroussard 4:63b7f6304f74 18 ****************************************************************************************************************************************************/
Tbroussard 1:ec997414ae6b 19
Tbroussard 1:ec997414ae6b 20 // ------------------------------------------------------------------------------
Tbroussard 1:ec997414ae6b 21 // LIBRAIRIES
Tbroussard 1:ec997414ae6b 22 // ------------------------------------------------------------------------------
Tbroussard 4:63b7f6304f74 23 #include "mbed.h"
Tbroussard 4:63b7f6304f74 24 #include "DS18B20.h" // OneWire Temperature
Tbroussard 4:63b7f6304f74 25 #include "DHT.h" // DHT22
Tbroussard 4:63b7f6304f74 26 #include "TSL2561.h" // Lux
Tbroussard 4:63b7f6304f74 27 #include "TCS34725.h" // RGB
Tbroussard 4:63b7f6304f74 28 #include "Adafruit_SSD1306.h" // OLED
Tbroussard 4:63b7f6304f74 29 #include "Mapping.h"
Tbroussard 9:c1392dfc57b8 30 #include "WakeUp.h" // Low Power Energy
Tbroussard 1:ec997414ae6b 31 // ------------------------------------------------------------------------------
Tbroussard 1:ec997414ae6b 32 // CLASSES ET STRUCTURES
Tbroussard 1:ec997414ae6b 33 // ------------------------------------------------------------------------------
Tbroussard 4:63b7f6304f74 34
Tbroussard 4:63b7f6304f74 35 #ifdef OLED_ACTIF
Tbroussard 4:63b7f6304f74 36 // sub-class SPI :
Tbroussard 4:63b7f6304f74 37 // Caractéristiques par défaut de la communication SPI avec le SSD1306
Tbroussard 4:63b7f6304f74 38 class SPIPreInit : public SPI
Tbroussard 1:ec997414ae6b 39 {
Tbroussard 4:63b7f6304f74 40 public:
Tbroussard 4:63b7f6304f74 41 SPIPreInit(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk)
Tbroussard 4:63b7f6304f74 42 {
Tbroussard 4:63b7f6304f74 43 format(8,3);
Tbroussard 4:63b7f6304f74 44 frequency(2000000);
Tbroussard 4:63b7f6304f74 45 };
Tbroussard 1:ec997414ae6b 46 };
Tbroussard 4:63b7f6304f74 47 #endif
JeanneBaum 0:b00763eabe6c 48
Tbroussard 1:ec997414ae6b 49 // ------------------------------------------------------------------------------
Tbroussard 1:ec997414ae6b 50 // INITIALISATION DES GPIO DU MICROCONTROLEUR
Tbroussard 1:ec997414ae6b 51 // ------------------------------------------------------------------------------
Tbroussard 4:63b7f6304f74 52 #ifdef DEBUG_UART_ACTIF
Tbroussard 4:63b7f6304f74 53 // Liaison UART pour Debug
Tbroussard 4:63b7f6304f74 54 Serial pc(USBTX, USBRX);
Tbroussard 4:63b7f6304f74 55 #endif
Tbroussard 4:63b7f6304f74 56
Tbroussard 4:63b7f6304f74 57 #ifdef SIGFOX_ACTIF
Tbroussard 4:63b7f6304f74 58 // Liaison UART Sigfox
Tbroussard 4:63b7f6304f74 59 Serial Sigfox(SIGFOX_RX, SIGFOX_TX);
Tbroussard 4:63b7f6304f74 60 #endif
JeanneBaum 0:b00763eabe6c 61
Tbroussard 4:63b7f6304f74 62 #ifdef OLED_ACTIF
Tbroussard 4:63b7f6304f74 63 // Ecran OLED (communication SPI)
Tbroussard 4:63b7f6304f74 64 SPIPreInit gSpi(MOSI,MISO,CLK);
Tbroussard 4:63b7f6304f74 65 Adafruit_SSD1306_Spi OLED(gSpi,DC,RST_SPI,CS,HAUTEUR_OLED,LARGEUR_OLED);
Tbroussard 4:63b7f6304f74 66 #endif
Tbroussard 1:ec997414ae6b 67
Tbroussard 4:63b7f6304f74 68 #ifdef GROVE_MOIST_ACTIF
Tbroussard 4:63b7f6304f74 69 // Capteur d'humidité du sol Grove
Tbroussard 4:63b7f6304f74 70 AnalogIn Capteur_Moisture(GROVE_MOIST_PIN);
Tbroussard 4:63b7f6304f74 71 #endif
Tbroussard 1:ec997414ae6b 72
Tbroussard 4:63b7f6304f74 73 #ifdef ONEWIRE_TEMP_ACTIF
Tbroussard 4:63b7f6304f74 74 //Capteur de Température du sol One Wire CRC
Tbroussard 4:63b7f6304f74 75 DS18B20 Temperature(true, true, false, ONEWIRE_TEMP_PIN); // Temperature( crcOn, useAddress, parasitic, mbed pin )
Tbroussard 4:63b7f6304f74 76 #endif
Tbroussard 1:ec997414ae6b 77
Tbroussard 4:63b7f6304f74 78 #ifdef DHT_ACTIF
Tbroussard 4:63b7f6304f74 79 //Capteur Température/Humidité de l'air Grove DHT22
Tbroussard 4:63b7f6304f74 80 DHT sensor(DHT_PIN,SEN51035P); // Use the SEN11301P sensor
Tbroussard 4:63b7f6304f74 81 #endif
JeanneBaum 0:b00763eabe6c 82
Tbroussard 4:63b7f6304f74 83 #ifdef I2C_ACTIF
Tbroussard 4:63b7f6304f74 84 I2C i2c(I2C_SDA,I2C_SCL); // SDA, SCL
Tbroussard 4:63b7f6304f74 85 //Capteur de Luminosité et RGB Adafruit (tous les deux connectés au bus i2c)
Tbroussard 4:63b7f6304f74 86 #ifdef LUX_ACTIF
Tbroussard 4:63b7f6304f74 87 TSL2561 lum(i2c);
Tbroussard 4:63b7f6304f74 88 #endif
Tbroussard 4:63b7f6304f74 89 #ifdef RGB_ACTIF
Tbroussard 4:63b7f6304f74 90 TCS34725 rgb(i2c);
Tbroussard 4:63b7f6304f74 91 #endif
Tbroussard 4:63b7f6304f74 92 #endif
JeanneBaum 0:b00763eabe6c 93
Tbroussard 4:63b7f6304f74 94 #ifdef BATTERIE_ACTIF
Tbroussard 4:63b7f6304f74 95 //Batterie
Tbroussard 4:63b7f6304f74 96 AnalogIn Batterie(BATTERIE_PIN);
Tbroussard 4:63b7f6304f74 97 #endif
Tbroussard 3:fa892129f832 98
Tbroussard 1:ec997414ae6b 99
Tbroussard 1:ec997414ae6b 100 // ------------------------------------------------------------------------------
Tbroussard 1:ec997414ae6b 101 // PROGRAMME PRINCIPAL
Tbroussard 1:ec997414ae6b 102 // ------------------------------------------------------------------------------
JeanneBaum 0:b00763eabe6c 103 int main()
JeanneBaum 0:b00763eabe6c 104 {
Tbroussard 1:ec997414ae6b 105 /*********************************
Tbroussard 1:ec997414ae6b 106 Variables locales
Tbroussard 1:ec997414ae6b 107 *********************************/
Tbroussard 1:ec997414ae6b 108 // Divers
Tbroussard 3:fa892129f832 109 int i;
Tbroussard 1:ec997414ae6b 110 int line = 0;
Tbroussard 3:fa892129f832 111
Tbroussard 1:ec997414ae6b 112 // Variables permettant de stocker les données à relever
Tbroussard 4:63b7f6304f74 113 float VBAT = 0;
Tbroussard 1:ec997414ae6b 114 float HumidSol = 0;
Tbroussard 1:ec997414ae6b 115 float TempSol = 0;
Tbroussard 1:ec997414ae6b 116 float TempAir = 0;
Tbroussard 1:ec997414ae6b 117 float HumidAir = 0;
Tbroussard 1:ec997414ae6b 118 float Lumiere = 0;
Tbroussard 4:63b7f6304f74 119 float Niveau_Batterie = 101;
Tbroussard 4:63b7f6304f74 120 int Clear = 0;
Tbroussard 4:63b7f6304f74 121 int Red = 0;
Tbroussard 4:63b7f6304f74 122 int Green = 0;
Tbroussard 4:63b7f6304f74 123 int Blue = 0;
Tbroussard 2:0ab485995dbb 124
Tbroussard 5:209b3eb7c162 125 wait(2);
JeanneBaum 0:b00763eabe6c 126 /*********************************
Tbroussard 1:ec997414ae6b 127 Initialisation
Tbroussard 6:96556f982fb7 128 *********************************/
Tbroussard 6:96556f982fb7 129 #ifdef BATTERIE_ACTIF
Tbroussard 6:96556f982fb7 130 float BATTERIE_MIN = 33;
Tbroussard 6:96556f982fb7 131 float BATTERIE_MAX = 42;
Tbroussard 6:96556f982fb7 132 #endif
Tbroussard 6:96556f982fb7 133
Tbroussard 4:63b7f6304f74 134 #ifdef OLED_ACTIF
Tbroussard 4:63b7f6304f74 135 // Initialisation de l'écran
Tbroussard 4:63b7f6304f74 136 OLED.fillRect(0,0,LARGEUR_OLED,HAUTEUR_OLED,BLACK);
Tbroussard 4:63b7f6304f74 137 OLED.setTextCursor(0,10); OLED.printf("===================");
Tbroussard 4:63b7f6304f74 138 OLED.setTextCursor(0,20); OLED.printf(" PlantSigfox ");
Tbroussard 4:63b7f6304f74 139 OLED.setTextCursor(0,30); OLED.printf(" Projet ei2i-4 ");
Tbroussard 4:63b7f6304f74 140 OLED.setTextCursor(0,40); OLED.printf("Jeanne Anais Thomas");
Tbroussard 4:63b7f6304f74 141 OLED.setTextCursor(0,50); OLED.printf("===================");
Tbroussard 4:63b7f6304f74 142 OLED.display();
Tbroussard 4:63b7f6304f74 143 #endif
Tbroussard 3:fa892129f832 144
Tbroussard 4:63b7f6304f74 145 #ifdef DEBUG_UART_ACTIF
Tbroussard 4:63b7f6304f74 146 // Initialisation des communication UART
Tbroussard 4:63b7f6304f74 147 pc.format(8,SerialBase::None,1);
Tbroussard 4:63b7f6304f74 148 pc.baud(9600);
Tbroussard 4:63b7f6304f74 149 #endif
Tbroussard 1:ec997414ae6b 150
Tbroussard 4:63b7f6304f74 151 #ifdef SIGFOX_ACTIF
Tbroussard 4:63b7f6304f74 152 Sigfox.format(8,SerialBase::None,1);
Tbroussard 4:63b7f6304f74 153 Sigfox.baud(9600);
Tbroussard 4:63b7f6304f74 154 #endif
Tbroussard 1:ec997414ae6b 155
Tbroussard 4:63b7f6304f74 156 #ifdef ONEWIRE_TEMP_ACTIF
Tbroussard 4:63b7f6304f74 157 // Initialisation du capteur de température
Tbroussard 4:63b7f6304f74 158 while (!Temperature.initialize()); // on attend que le capteur soit initialisé avant de pouvoir effectuer des mesures
Tbroussard 4:63b7f6304f74 159 #endif
Tbroussard 4:63b7f6304f74 160
Tbroussard 4:63b7f6304f74 161 #ifdef RGB_ACTIF
Tbroussard 4:63b7f6304f74 162 // Initialisation du TCS34725
Tbroussard 4:63b7f6304f74 163 rgb.init_RGB();
Tbroussard 4:63b7f6304f74 164 #endif
Tbroussard 1:ec997414ae6b 165
Tbroussard 1:ec997414ae6b 166 // Attente de 5 secondes avant le démarrage du programme
Tbroussard 1:ec997414ae6b 167 wait(5);
JeanneBaum 0:b00763eabe6c 168
JeanneBaum 0:b00763eabe6c 169
JeanneBaum 0:b00763eabe6c 170 /*********************************
Tbroussard 1:ec997414ae6b 171 Boucle principale
JeanneBaum 0:b00763eabe6c 172 *********************************/
Tbroussard 1:ec997414ae6b 173 while(1)
Tbroussard 1:ec997414ae6b 174 {
Tbroussard 1:ec997414ae6b 175 /*********************************
Tbroussard 4:63b7f6304f74 176 Mesure des ADC
Tbroussard 4:63b7f6304f74 177 *********************************/
Tbroussard 4:63b7f6304f74 178
Tbroussard 3:fa892129f832 179 // On effectue une moyenne sur une quantité de relevés ( pour avoir une mesure fiable )
Tbroussard 4:63b7f6304f74 180 #if defined(GROVE_MOIST_ACTIF) || defined(BATTERIE_ACTIF)
Tbroussard 4:63b7f6304f74 181 Niveau_Batterie = 0;
Tbroussard 4:63b7f6304f74 182 HumidSol = 0;
Tbroussard 4:63b7f6304f74 183
Tbroussard 4:63b7f6304f74 184 for (i=0; i < NB_MESURES; i++)
Tbroussard 4:63b7f6304f74 185 {
Tbroussard 4:63b7f6304f74 186 #ifdef BATTERIE_ACTIF
Tbroussard 4:63b7f6304f74 187 // Batterie
Tbroussard 4:63b7f6304f74 188 VBAT = 100 * Batterie; // Lecture de l'entrée ADC
Tbroussard 4:63b7f6304f74 189 Niveau_Batterie += ((VBAT - BATTERIE_MIN) / (BATTERIE_MAX - BATTERIE_MIN)) * 100 ;
Tbroussard 4:63b7f6304f74 190 #endif
Tbroussard 4:63b7f6304f74 191
Tbroussard 4:63b7f6304f74 192 #ifdef GROVE_MOIST_ACTIF
Tbroussard 4:63b7f6304f74 193 // Humidité du Sol (Grove)
Tbroussard 4:63b7f6304f74 194 HumidSol += ((Capteur_Moisture - GROVE_MOIST_MIN) / (GROVE_MOIST_MAX - GROVE_MOIST_MIN)) * 100;
Tbroussard 4:63b7f6304f74 195 #endif
Tbroussard 5:209b3eb7c162 196
Tbroussard 4:63b7f6304f74 197 wait(TEMPS_MESURE);
Tbroussard 4:63b7f6304f74 198 }
Tbroussard 4:63b7f6304f74 199 #endif
Tbroussard 3:fa892129f832 200
Tbroussard 4:63b7f6304f74 201 // Moyennage du résultat
Tbroussard 4:63b7f6304f74 202 #ifdef GROVE_MOIST_ACTIF
Tbroussard 4:63b7f6304f74 203 HumidSol /= NB_MESURES;
Tbroussard 4:63b7f6304f74 204 #endif
Tbroussard 4:63b7f6304f74 205
Tbroussard 4:63b7f6304f74 206 #ifdef BATTERIE_ACTIF
Tbroussard 4:63b7f6304f74 207 Niveau_Batterie /= NB_MESURES;
Tbroussard 4:63b7f6304f74 208 // Limitation de la batterie
Tbroussard 4:63b7f6304f74 209 if (Niveau_Batterie >100) Niveau_Batterie = 100;
Tbroussard 4:63b7f6304f74 210 // Si la batterie est déconnectée, on doit le faire remarquer (code : 101)
Tbroussard 4:63b7f6304f74 211 if (Niveau_Batterie < 0) Niveau_Batterie = 101;
Tbroussard 4:63b7f6304f74 212 #endif
Tbroussard 4:63b7f6304f74 213
Tbroussard 1:ec997414ae6b 214 /*********************************
Tbroussard 1:ec997414ae6b 215 Température du sol (OneWIRE)
Tbroussard 1:ec997414ae6b 216 *********************************/
Tbroussard 4:63b7f6304f74 217 #ifdef ONEWIRE_TEMP_ACTIF
Tbroussard 4:63b7f6304f74 218 Temperature.setResolution(twelveBit); // Le choix de la résolution se fait avant le relevé des données
Tbroussard 4:63b7f6304f74 219 TempSol = Temperature.readTemperature(); // relevé de données
Tbroussard 4:63b7f6304f74 220 #endif
Tbroussard 4:63b7f6304f74 221
Tbroussard 1:ec997414ae6b 222 /*********************************
Tbroussard 1:ec997414ae6b 223 Température/Humidité Air (Grove)
Tbroussard 4:63b7f6304f74 224 *********************************/
Tbroussard 4:63b7f6304f74 225 #ifdef DHT_ACTIF
Tbroussard 4:63b7f6304f74 226 int err;
Tbroussard 4:63b7f6304f74 227 wait(1); // wait 1 second for device stable status
Tbroussard 4:63b7f6304f74 228 do
Tbroussard 4:63b7f6304f74 229 {
Tbroussard 4:63b7f6304f74 230 err = sensor.readData();
Tbroussard 4:63b7f6304f74 231 wait(1);
Tbroussard 4:63b7f6304f74 232 }
Tbroussard 4:63b7f6304f74 233 while (err != 0);
Tbroussard 4:63b7f6304f74 234 if (err == 0)
Tbroussard 4:63b7f6304f74 235 {
Tbroussard 4:63b7f6304f74 236 TempAir = sensor.ReadTemperature(CELCIUS);
Tbroussard 4:63b7f6304f74 237 HumidAir = sensor.ReadHumidity();
Tbroussard 4:63b7f6304f74 238 }
Tbroussard 4:63b7f6304f74 239 #endif
Tbroussard 1:ec997414ae6b 240
Tbroussard 1:ec997414ae6b 241 /*********************************
Tbroussard 4:63b7f6304f74 242 Luminosité / RGB(Adafruit)
Tbroussard 3:fa892129f832 243 *********************************/
Tbroussard 4:63b7f6304f74 244 #ifdef LUX_ACTIF
Tbroussard 4:63b7f6304f74 245 Lumiere = COEF_LUX * lum.lux();
Tbroussard 4:63b7f6304f74 246 #endif
Tbroussard 3:fa892129f832 247
Tbroussard 4:63b7f6304f74 248 #ifdef RGB_ACTIF
Tbroussard 4:63b7f6304f74 249 rgb.GET_RGB(&Clear,&Red,&Green,&Blue);
Tbroussard 4:63b7f6304f74 250 #ifdef RGB_1_OCTET
Tbroussard 4:63b7f6304f74 251 // On réduit la précision des données brutes en divisant par 256 pour n'avoir qu'un octet seulement
Tbroussard 4:63b7f6304f74 252 Clear /= 256;
Tbroussard 4:63b7f6304f74 253 Red /= 256;
Tbroussard 4:63b7f6304f74 254 Green /= 256;
Tbroussard 4:63b7f6304f74 255 Blue /= 256;
Tbroussard 4:63b7f6304f74 256 #endif
Tbroussard 4:63b7f6304f74 257 #endif
Tbroussard 3:fa892129f832 258
Tbroussard 1:ec997414ae6b 259 /*********************************
Tbroussard 1:ec997414ae6b 260 Affichage OLED
Tbroussard 1:ec997414ae6b 261 *********************************/
Tbroussard 4:63b7f6304f74 262 #ifdef OLED_ACTIF
Tbroussard 4:63b7f6304f74 263 // OLED Reset
Tbroussard 4:63b7f6304f74 264 OLED.fillRect(0,0,LARGEUR_OLED,HAUTEUR_OLED,BLACK);
Tbroussard 4:63b7f6304f74 265 line = 0;
Tbroussard 4:63b7f6304f74 266
Tbroussard 4:63b7f6304f74 267 // Sol :
Tbroussard 4:63b7f6304f74 268 #if defined(GROVE_MOIST_ACTIF) && defined(ONEWIRE_TEMP_ACTIF)
Tbroussard 4:63b7f6304f74 269 OLED.setTextCursor(0,line);
Tbroussard 4:63b7f6304f74 270 OLED.printf("Sol = %d \tC // %d \t/\t",(int)TempSol,(int)HumidSol);
Tbroussard 4:63b7f6304f74 271 line +=10;
Tbroussard 4:63b7f6304f74 272 #endif
Tbroussard 4:63b7f6304f74 273
Tbroussard 4:63b7f6304f74 274 // Air :
Tbroussard 4:63b7f6304f74 275 #ifdef DHT_ACTIF
Tbroussard 4:63b7f6304f74 276 OLED.setTextCursor(0,line);
Tbroussard 4:63b7f6304f74 277 OLED.printf("Air = %d \tC // %d \t/\t",(int)TempAir,(int)HumidAir);
Tbroussard 4:63b7f6304f74 278 line +=10;
Tbroussard 4:63b7f6304f74 279 #endif
Tbroussard 4:63b7f6304f74 280
Tbroussard 4:63b7f6304f74 281 // Intensité lumineuse
Tbroussard 4:63b7f6304f74 282 #if defined(LUX_ACTIF) && defined(I2C_ACTIF)
Tbroussard 4:63b7f6304f74 283 OLED.setTextCursor(0,line);
Tbroussard 4:63b7f6304f74 284 OLED.printf("Light = %d", (int)Lumiere);
Tbroussard 4:63b7f6304f74 285 OLED.setTextCursor(110,line);
Tbroussard 4:63b7f6304f74 286 OLED.printf("Lux");
Tbroussard 4:63b7f6304f74 287 line +=10;
Tbroussard 4:63b7f6304f74 288 #endif
Tbroussard 4:63b7f6304f74 289
Tbroussard 4:63b7f6304f74 290 // Couleurs RGB
Tbroussard 4:63b7f6304f74 291 #if defined(RGB_ACTIF) && defined(I2C_ACTIF)
Tbroussard 4:63b7f6304f74 292 OLED.setTextCursor(0,line);
Tbroussard 4:63b7f6304f74 293 OLED.printf("RGB = %d/%d/%d",Red,Green,Blue);
Tbroussard 4:63b7f6304f74 294 line +=10;
Tbroussard 4:63b7f6304f74 295 OLED.setTextCursor(0,line);
Tbroussard 4:63b7f6304f74 296 OLED.printf("Clear = %d",Clear);
Tbroussard 4:63b7f6304f74 297 line +=10;
Tbroussard 4:63b7f6304f74 298 #endif
Tbroussard 4:63b7f6304f74 299
Tbroussard 4:63b7f6304f74 300 // Batterie
Tbroussard 4:63b7f6304f74 301 #ifdef BATTERIE_ACTIF
Tbroussard 4:63b7f6304f74 302 OLED.setTextCursor(0,line);
Tbroussard 4:63b7f6304f74 303 if (((int)Niveau_Batterie >= 0) && ((int)Niveau_Batterie <= 100))
Tbroussard 4:63b7f6304f74 304 {
Tbroussard 4:63b7f6304f74 305 OLED.printf("Batterie : %d", (int)Niveau_Batterie);
Tbroussard 4:63b7f6304f74 306 OLED.setTextCursor(110,line);
Tbroussard 4:63b7f6304f74 307 OLED.printf("\t/\t");
Tbroussard 4:63b7f6304f74 308 }
Tbroussard 4:63b7f6304f74 309 else
Tbroussard 4:63b7f6304f74 310 {
Tbroussard 4:63b7f6304f74 311 OLED.printf("Prise Secteur");
Tbroussard 4:63b7f6304f74 312 }
Tbroussard 4:63b7f6304f74 313 #endif
Tbroussard 4:63b7f6304f74 314
Tbroussard 4:63b7f6304f74 315 // Display
Tbroussard 4:63b7f6304f74 316 OLED.display();
Tbroussard 4:63b7f6304f74 317 #endif
Tbroussard 1:ec997414ae6b 318
Tbroussard 4:63b7f6304f74 319 /****************************************************************************
Tbroussard 4:63b7f6304f74 320 Envoi des données via le module Sigfox (dépend du format des données)
Tbroussard 4:63b7f6304f74 321 *****************************************************************************/
Tbroussard 4:63b7f6304f74 322 #ifdef SIGFOX_ACTIF
Tbroussard 4:63b7f6304f74 323 #if defined(RGB_2_OCTET) && !defined(RGB_1_OCTET)
Tbroussard 4:63b7f6304f74 324 // trame 1 : [T°Air , Hum Air , T°Sol , Hum Sol , Lumiere , Batterie]
Tbroussard 4:63b7f6304f74 325 Sigfox.printf("AT$SS=%02x %02x %02x %02x %04x %02x \r\n",(int)TempAir,(int)HumidAir,(int)TempSol, (int)HumidSol, (int)Lumiere,(int)Niveau_Batterie);
Tbroussard 4:63b7f6304f74 326 // trame 2 : [Clear, Red, Green, Blue]
Tbroussard 4:63b7f6304f74 327 Sigfox.printf("AT$SS=%04x %04x %04x %04x \r\n",Clear, Red, Green, Blue);
Tbroussard 4:63b7f6304f74 328 #endif
Tbroussard 4:63b7f6304f74 329
Tbroussard 4:63b7f6304f74 330 #if defined(RGB_1_OCTET) && !defined(RGB_2_OCTET)
Tbroussard 4:63b7f6304f74 331 // trame : [T°Air , Hum Air , T°Sol , Hum Sol , Lumiere , Batterie, Clear, Red, Green, Blue]
Tbroussard 4:63b7f6304f74 332 Sigfox.printf("AT$SS=%02x %02x %02x %02x %04x %02x %02x %02x %02x %02x \r\n",(int)TempAir,(int)HumidAir,(int)TempSol, (int)HumidSol, (int)Lumiere,(int)Niveau_Batterie,Clear, Red, Green, Blue);
Tbroussard 4:63b7f6304f74 333 #endif
Tbroussard 4:63b7f6304f74 334 #endif
Tbroussard 3:fa892129f832 335
Tbroussard 4:63b7f6304f74 336 // Envoi des données sur le debug UART (optionnel)
Tbroussard 4:63b7f6304f74 337 #ifdef DEBUG_UART_ACTIF
Tbroussard 4:63b7f6304f74 338 #if defined(RGB_2_OCTET) && !defined(RGB_1_OCTET)
Tbroussard 4:63b7f6304f74 339 // trame 1 : [T°Air , Hum Air , T°Sol , Hum Sol , Lumiere , Batterie]
Tbroussard 4:63b7f6304f74 340 pc.printf("AT$SS=%02x %02x %02x %02x %04x %02x \r\n",(int)TempAir,(int)HumidAir,(int)TempSol, (int)HumidSol, (int)Lumiere,(int)Niveau_Batterie);
Tbroussard 4:63b7f6304f74 341 // trame 2 : [Clear, Red, Green, Blue]
Tbroussard 4:63b7f6304f74 342 pc.printf("AT$SS=%04x %04x %04x %04x \r\n",Clear, Red, Green, Blue);
Tbroussard 4:63b7f6304f74 343 #endif
Tbroussard 4:63b7f6304f74 344
Tbroussard 4:63b7f6304f74 345 #if defined(RGB_1_OCTET) && !defined(RGB_2_OCTET)
Tbroussard 4:63b7f6304f74 346 // trame : [T°Air , Hum Air , T°Sol , Hum Sol , Lumiere , Batterie, Clear, Red, Green, Blue]
Tbroussard 4:63b7f6304f74 347 pc.printf("AT$SS=%02x %02x %02x %02x %04x %02x %02x %02x %02x %02x \r\n",(int)TempAir,(int)HumidAir,(int)TempSol, (int)HumidSol, (int)Lumiere,(int)Niveau_Batterie,Clear, Red, Green, Blue);
Tbroussard 4:63b7f6304f74 348 #endif
Tbroussard 4:63b7f6304f74 349 #endif
Tbroussard 1:ec997414ae6b 350
Tbroussard 1:ec997414ae6b 351
Tbroussard 3:fa892129f832 352 /*********************************
Tbroussard 3:fa892129f832 353 Mise en veille de l'appareil
Tbroussard 3:fa892129f832 354 *********************************/
Tbroussard 4:63b7f6304f74 355 #if defined(OLED_ACTIF) && defined(OLED_VEILLE)
Tbroussard 4:63b7f6304f74 356 // Test : éteindre l'écran au bout d'un temps donné
Tbroussard 9:c1392dfc57b8 357 wait (DUREE_AFFICHAGE);
Tbroussard 4:63b7f6304f74 358 OLED.fillRect(0,0,LARGEUR_OLED,HAUTEUR_OLED,BLACK);
Tbroussard 4:63b7f6304f74 359 OLED.display();
Tbroussard 4:63b7f6304f74 360
Tbroussard 9:c1392dfc57b8 361 WakeUp::set_ms((TEMPS_RELEVE-DUREE_AFFICHAGE)* 1000);
Tbroussard 9:c1392dfc57b8 362 deepsleep();
Tbroussard 4:63b7f6304f74 363 #else
Tbroussard 9:c1392dfc57b8 364 WakeUp::set_ms(TEMPS_RELEVE * 1000);
Tbroussard 9:c1392dfc57b8 365 deepsleep();
Tbroussard 4:63b7f6304f74 366 #endif
Tbroussard 1:ec997414ae6b 367
Tbroussard 4:63b7f6304f74 368 /***********************************************************************************
Tbroussard 4:63b7f6304f74 369 On attend le réveil de l'appareil pour exécuter le prochain relevé
Tbroussard 4:63b7f6304f74 370 ***********************************************************************************/
JeanneBaum 0:b00763eabe6c 371 }
Tbroussard 3:fa892129f832 372 }
Tbroussard 3:fa892129f832 373
Tbroussard 3:fa892129f832 374
Tbroussard 3:fa892129f832 375 void my_wakeup()
Tbroussard 3:fa892129f832 376 {
Tbroussard 1:ec997414ae6b 377 }