Plant Monitoring project ei2i-4 Made by Jeanne Baumier, Anaïs Auberval and Thomas Broussard
Dependencies: mbed
main.cpp@9:c1392dfc57b8, 2018-01-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |