une 30aine passés sans pb entre les trames

Dependencies:   ADS1015 ARNSRS_SENSORS DmTftLibrary MS5803_14BA SDFileSystem mbed

Fork of ARNSRS_SERVOS_USB_TFT by POTLESS

Committer:
POTLESS_2
Date:
Wed May 10 08:54:18 2017 +0000
Revision:
17:6e0c4c0e0fe2
Parent:
16:fc7d8cc6bf4b
Child:
18:e3827d5dbdd9
Update pour coller ? app android

Who changed what in which revision?

UserRevisionLine numberNew contents of line
potless 1:bef7856b5c0a 1 /* procédure lecture capteur COZIR ou MINIR - CO2 seul
potless 1:bef7856b5c0a 2 sur broches F401RE SERIAL PA_11 et PA_12
potless 1:bef7856b5c0a 3 renvoie sur moniteur (IDE arduino par exemple) de la valeur lue
potless 2:4a8bf1d53439 4
potless 2:4a8bf1d53439 5 procédures possibles sont :
potless 2:4a8bf1d53439 6 request (char commande) - renvoie la valeur lue si la commande ne représente qu'un seul caractère (entre '')
potless 2:4a8bf1d53439 7 cozirSend (string commande) - permet d'envoyer des commandes multicaractères (entre "") - exemple A 32 - donne la réponse obtenue
potless 2:4a8bf1d53439 8
potless 2:4a8bf1d53439 9
potless 2:4a8bf1d53439 10 la fonction cozirSend est davantage "sécurisée"
POTLESS_2 4:d84250f67dec 11 */
potless 0:69d4b21d58e0 12
potless 0:69d4b21d58e0 13
potless 1:bef7856b5c0a 14 #include "mbed.h"
POTLESS_2 5:e1d0dc7940a6 15 #include "SDFileSystem.h"
POTLESS_2 5:e1d0dc7940a6 16 #include "ARNSRS_SENSORS.h"
POTLESS_2 13:aa620707126d 17 #include "ble/BLE.h"
POTLESS_2 14:e6686a44db84 18
POTLESS_2 13:aa620707126d 19 #include "ble/services/UARTService.h"
POTLESS_2 13:aa620707126d 20 #include <string>
POTLESS_2 13:aa620707126d 21
POTLESS_2 15:c9205e490740 22 //Ecrit dans le moniteur série de l'ordi à 9600 bds si sur 1
POTLESS_2 15:c9205e490740 23 #define NEED_CONSOLE_OUTPUT 1
POTLESS_2 16:fc7d8cc6bf4b 24 //Pour utiliser le traceur du moniteur Arduino. Mettre NEED_CONSOLE_OUTPUT 0 si utilisé.
POTLESS_2 16:fc7d8cc6bf4b 25 //En premier ouvrir le moniteur série pour régler la RTC, puis fermer et ouvrir le traceur série
POTLESS_2 15:c9205e490740 26 #define NEED_GRAPH_OUTPUT 0
POTLESS_2 15:c9205e490740 27 //Datalog carte SD si sur 1
POTLESS_2 16:fc7d8cc6bf4b 28 #define NEED_SD_DATA_LOG 0
POTLESS_2 15:c9205e490740 29
POTLESS_2 15:c9205e490740 30 #if NEED_CONSOLE_OUTPUT
POTLESS_2 14:e6686a44db84 31 #define DEBUG(...) { serialMonit.printf(__VA_ARGS__); }
POTLESS_2 15:c9205e490740 32 #else
POTLESS_2 15:c9205e490740 33 #define DEBUG(...)
POTLESS_2 15:c9205e490740 34 #endif
POTLESS_2 15:c9205e490740 35
POTLESS_2 15:c9205e490740 36 #if NEED_GRAPH_OUTPUT
POTLESS_2 15:c9205e490740 37 #define TRACE(...) { serialMonit.printf(__VA_ARGS__); }
POTLESS_2 15:c9205e490740 38 #else
POTLESS_2 15:c9205e490740 39 #define TRACE(...)
POTLESS_2 15:c9205e490740 40 #endif
POTLESS_2 13:aa620707126d 41
POTLESS_2 13:aa620707126d 42 //Init BLE
POTLESS_2 13:aa620707126d 43 BLEDevice ble;
POTLESS_2 13:aa620707126d 44 UARTService *uartServicePtr;
POTLESS_2 5:e1d0dc7940a6 45
POTLESS_2 5:e1d0dc7940a6 46 //Init de la lib ARNSRS;
POTLESS_2 5:e1d0dc7940a6 47 ARNSRS arnsrs;
POTLESS_2 5:e1d0dc7940a6 48
POTLESS_2 5:e1d0dc7940a6 49 //Quelque FLAG...
POTLESS_2 5:e1d0dc7940a6 50 bool FLAG_SIMPLE_TIME = false;
potless 1:bef7856b5c0a 51
POTLESS_2 9:d945fa4be3a5 52 //COM Série vers l'ordi, Serial 2 par défaut
POTLESS_2 14:e6686a44db84 53 Serial serialMonit (USBTX,USBRX);
potless 2:4a8bf1d53439 54
POTLESS_2 5:e1d0dc7940a6 55 //Variable des capteurs
POTLESS_2 12:9ac5be447764 56 int co2 = 0;
POTLESS_2 12:9ac5be447764 57 int ppO2 = 0;
POTLESS_2 12:9ac5be447764 58 float pression = 0;
POTLESS_2 12:9ac5be447764 59 float Temp1 = 0;
POTLESS_2 12:9ac5be447764 60 float Temp2 = 0;
POTLESS_2 12:9ac5be447764 61 float Humi = 0;
POTLESS_2 12:9ac5be447764 62
POTLESS_2 15:c9205e490740 63 //Pour stocker le format date / heure
POTLESS_2 5:e1d0dc7940a6 64 string DateHeure;
potless 2:4a8bf1d53439 65
POTLESS_2 6:1c2212891714 66 //SD card
POTLESS_2 6:1c2212891714 67 SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS
POTLESS_2 6:1c2212891714 68 FILE *fp;
POTLESS_2 7:c5a5d8f678ff 69 char fileName[32];
POTLESS_2 7:c5a5d8f678ff 70 int points = 1;
POTLESS_2 4:d84250f67dec 71
POTLESS_2 15:c9205e490740 72
POTLESS_2 15:c9205e490740 73 //Fonction pour créer et envoyer la chaine d'infos en BLE
POTLESS_2 15:c9205e490740 74 //On balance tout en float, même pour des int...Qui peut le plus peut le moins...
POTLESS_2 17:6e0c4c0e0fe2 75 //deux par deux, methode pour de int et methode pour des float
POTLESS_2 17:6e0c4c0e0fe2 76 void build_send_Message_float(string com, float A, float B)
POTLESS_2 14:e6686a44db84 77 {
POTLESS_2 14:e6686a44db84 78 char buf[50];
POTLESS_2 17:6e0c4c0e0fe2 79 sprintf(buf,"%s%.1f:%.1f\r\n", com.c_str(), A, B);
POTLESS_2 14:e6686a44db84 80 uartServicePtr->writeString(buf);
POTLESS_2 17:6e0c4c0e0fe2 81 wait_ms(100);
POTLESS_2 17:6e0c4c0e0fe2 82 }
POTLESS_2 17:6e0c4c0e0fe2 83
POTLESS_2 17:6e0c4c0e0fe2 84 void build_send_Message_int(string com, int A, int B)
POTLESS_2 17:6e0c4c0e0fe2 85 {
POTLESS_2 17:6e0c4c0e0fe2 86 char buf[50];
POTLESS_2 17:6e0c4c0e0fe2 87 sprintf(buf,"%s%d:%d\r\n", com.c_str(), A, B);
POTLESS_2 17:6e0c4c0e0fe2 88 uartServicePtr->writeString(buf);
POTLESS_2 17:6e0c4c0e0fe2 89 wait_ms(100);
POTLESS_2 14:e6686a44db84 90 }
POTLESS_2 13:aa620707126d 91
POTLESS_2 13:aa620707126d 92 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
POTLESS_2 13:aa620707126d 93 {
POTLESS_2 14:e6686a44db84 94 //DEBUG("Disconnected!\n\r");
POTLESS_2 14:e6686a44db84 95 //DEBUG("Restarting the advertising process\n\r");
POTLESS_2 13:aa620707126d 96 ble.startAdvertising();
POTLESS_2 13:aa620707126d 97 }
POTLESS_2 13:aa620707126d 98
POTLESS_2 13:aa620707126d 99 void onDataWritten(const GattWriteCallbackParams *params)
POTLESS_2 13:aa620707126d 100 {
POTLESS_2 13:aa620707126d 101 if ((uartServicePtr != NULL) && (params->handle == uartServicePtr->getTXCharacteristicHandle())) {
POTLESS_2 13:aa620707126d 102 uint16_t bytesRead = params->len;
POTLESS_2 14:e6686a44db84 103 /*
POTLESS_2 14:e6686a44db84 104 // les chaines de réponse
POTLESS_2 15:c9205e490740 105 uint8_t press_mb_ToSend[14];
POTLESS_2 14:e6686a44db84 106 uint8_t co2_ppm_ToSend[14];
POTLESS_2 14:e6686a44db84 107 uint8_t o2_mb_ToSend[14];
POTLESS_2 14:e6686a44db84 108
POTLESS_2 14:e6686a44db84 109 // fabrication des chaines de réponse
POTLESS_2 14:e6686a44db84 110 // on suppose que chaque donnee peut être représentée par 5 digits
POTLESS_2 14:e6686a44db84 111 char s_press_mb [50];
POTLESS_2 14:e6686a44db84 112 sprintf(s_press_mb,"PRESS %i mb ",press_mb); // mef ! laisser les espaces de la fin
POTLESS_2 14:e6686a44db84 113
POTLESS_2 14:e6686a44db84 114 char s_co2_ppm [50];
POTLESS_2 14:e6686a44db84 115 sprintf(s_co2_ppm,"CO2 %i ppm ",co2_ppm);
POTLESS_2 14:e6686a44db84 116
POTLESS_2 14:e6686a44db84 117 char s_o2_mb [50];
POTLESS_2 14:e6686a44db84 118 sprintf(s_o2_mb,"O2 %i mb ",o2_mb);
POTLESS_2 14:e6686a44db84 119
POTLESS_2 14:e6686a44db84 120 // convertir les chaines en uint8_t
POTLESS_2 14:e6686a44db84 121 for(int j=0;j<sizeof(s_press_mb);j++){ // hypothèse : les chaines press, co2, o2 ont la même longeur
POTLESS_2 14:e6686a44db84 122 press_mb_ToSend[j]=s_press_mb[j];
POTLESS_2 14:e6686a44db84 123 co2_ppm_ToSend[j]=s_co2_ppm[j];
POTLESS_2 14:e6686a44db84 124 o2_mb_ToSend[j]=s_o2_mb[j];
POTLESS_2 14:e6686a44db84 125 }
POTLESS_2 15:c9205e490740 126 */
POTLESS_2 14:e6686a44db84 127 // chaine reçue de l'app android (à dimensionner selon besoin)
POTLESS_2 14:e6686a44db84 128 char commande [bytesRead] ;
POTLESS_2 14:e6686a44db84 129
POTLESS_2 13:aa620707126d 130 // conversion de la commande uint8_t en chaine pour permettre comparaison avec commandes connues
POTLESS_2 14:e6686a44db84 131 for (int j=0; j<bytesRead; j++) {
POTLESS_2 14:e6686a44db84 132 commande [j] = (*((params->data)+j));
POTLESS_2 13:aa620707126d 133 }
POTLESS_2 14:e6686a44db84 134 /*
POTLESS_2 13:aa620707126d 135 DEBUG("received %u bytes => ", bytesRead);
POTLESS_2 13:aa620707126d 136 DEBUG("commande recue -%s-\r\n",commande);
POTLESS_2 13:aa620707126d 137 DEBUG ( "comparaison a commande 'p' vaut %d\r\n",strcmp(commande, "p"));
POTLESS_2 13:aa620707126d 138 DEBUG ( "comparaison a commande 'o' vaut %d\r\n",strcmp(commande, "o"));
POTLESS_2 13:aa620707126d 139 DEBUG ( "comparaison a commande 'c' vaut %d\r\n",strcmp(commande, "c"));
POTLESS_2 14:e6686a44db84 140 DEBUG ( "comparaison a commande 't' vaut %d\r\n",strcmp(commande, "t"));
POTLESS_2 14:e6686a44db84 141 DEBUG ( "comparaison a commande 'u' vaut %d\r\n",strcmp(commande, "t"));
POTLESS_2 14:e6686a44db84 142
POTLESS_2 14:e6686a44db84 143 // envoi des réponses en fonction de la commande recue
POTLESS_2 14:e6686a44db84 144 if (strcmp(commande, "p") == 0) {
POTLESS_2 14:e6686a44db84 145 DEBUG("s_press_mb %s +++> data to send %s \r\n",s_press_mb,press_mb_ToSend);
POTLESS_2 14:e6686a44db84 146 ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), press_mb_ToSend, sizeof(press_mb_ToSend));
POTLESS_2 14:e6686a44db84 147 }
POTLESS_2 14:e6686a44db84 148 if (strcmp(commande, "c") == 0) {
POTLESS_2 14:e6686a44db84 149 DEBUG("s_co2_ppm %s +++> data to send %s \r\n",s_co2_ppm,co2_ppm_ToSend);
POTLESS_2 14:e6686a44db84 150 ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), co2_ppm_ToSend, sizeof(co2_ppm_ToSend));
POTLESS_2 14:e6686a44db84 151 }
POTLESS_2 14:e6686a44db84 152 if (strcmp(commande, "o") == 0) {
POTLESS_2 14:e6686a44db84 153 DEBUG("s_o2_mb %s +++> data to send %s \r\n",s_o2_mb,o2_mb_ToSend);
POTLESS_2 14:e6686a44db84 154 ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), o2_mb_ToSend, sizeof(o2_mb_ToSend));
POTLESS_2 14:e6686a44db84 155 }
POTLESS_2 15:c9205e490740 156 else
POTLESS_2 15:c9205e490740 157 */
POTLESS_2 17:6e0c4c0e0fe2 158
POTLESS_2 17:6e0c4c0e0fe2 159 //En accord avec app Android
POTLESS_2 14:e6686a44db84 160 if (strcmp(commande, "t") == 0) {
POTLESS_2 17:6e0c4c0e0fe2 161 build_send_Message_int("t", co2, ppO2);
POTLESS_2 14:e6686a44db84 162 }else
POTLESS_2 14:e6686a44db84 163 if (strcmp(commande, "u") == 0) {
POTLESS_2 17:6e0c4c0e0fe2 164 build_send_Message_float("u", Temp1, Temp2);
POTLESS_2 17:6e0c4c0e0fe2 165 }else
POTLESS_2 17:6e0c4c0e0fe2 166 if (strcmp(commande, "v") == 0) {
POTLESS_2 17:6e0c4c0e0fe2 167 build_send_Message_float("v", Humi, pression);
POTLESS_2 14:e6686a44db84 168 }
POTLESS_2 14:e6686a44db84 169 }
POTLESS_2 13:aa620707126d 170 }
POTLESS_2 14:e6686a44db84 171
POTLESS_2 7:c5a5d8f678ff 172 //Fonction qui change le nom du fichier ouvert pour le LOG
POTLESS_2 7:c5a5d8f678ff 173 FILE *nextLogFile(void)
POTLESS_2 7:c5a5d8f678ff 174 {
POTLESS_2 7:c5a5d8f678ff 175 static unsigned int fileNumber = 0;
POTLESS_2 7:c5a5d8f678ff 176 FILE *filePtr = NULL;
POTLESS_2 7:c5a5d8f678ff 177 do {
POTLESS_2 7:c5a5d8f678ff 178 if (filePtr != NULL)
POTLESS_2 7:c5a5d8f678ff 179 fclose(filePtr);
POTLESS_2 7:c5a5d8f678ff 180 sprintf(fileName,"/sd/LOG_Capteurs_%04u.txt",fileNumber++);
POTLESS_2 7:c5a5d8f678ff 181 filePtr = fopen(fileName,"r");
POTLESS_2 7:c5a5d8f678ff 182 } while (filePtr != NULL);
POTLESS_2 7:c5a5d8f678ff 183 return fopen( fileName,"w");
POTLESS_2 7:c5a5d8f678ff 184 }
POTLESS_2 15:c9205e490740 185
POTLESS_2 14:e6686a44db84 186 void SetTime()
POTLESS_2 14:e6686a44db84 187 {
POTLESS_2 14:e6686a44db84 188 //Reglage date / heure depuis le terminal
POTLESS_2 7:c5a5d8f678ff 189 struct tm t;
POTLESS_2 15:c9205e490740 190 serialMonit.printf("Entrer la date et l'heure :\n");
POTLESS_2 15:c9205e490740 191 serialMonit.printf("YYYY MM DD HH MM SS [enter]\n");
POTLESS_2 7:c5a5d8f678ff 192 scanf("%d %d %d %d %d %d", &t.tm_year, &t.tm_mon, &t.tm_mday
POTLESS_2 14:e6686a44db84 193 , &t.tm_hour, &t.tm_min, &t.tm_sec);
POTLESS_2 7:c5a5d8f678ff 194 t.tm_year = t.tm_year - 1900;
POTLESS_2 7:c5a5d8f678ff 195 t.tm_mon = t.tm_mon - 1;
POTLESS_2 14:e6686a44db84 196
POTLESS_2 7:c5a5d8f678ff 197 // set the time
POTLESS_2 14:e6686a44db84 198 set_time(mktime(&t));
POTLESS_2 15:c9205e490740 199 if(NEED_CONSOLE_OUTPUT == 0) serialMonit.printf("OK. Vous pouvez fermer le moniteur serie");
POTLESS_2 12:9ac5be447764 200 }
POTLESS_2 12:9ac5be447764 201
POTLESS_2 14:e6686a44db84 202 void init_DATALOG()
POTLESS_2 14:e6686a44db84 203 {
POTLESS_2 12:9ac5be447764 204 //Initialisation DATA LOG
POTLESS_2 14:e6686a44db84 205 DEBUG("Initialisation SD card\r\n");
POTLESS_2 15:c9205e490740 206 DEBUG("\r\n", "");
POTLESS_2 12:9ac5be447764 207 fp = nextLogFile();
POTLESS_2 14:e6686a44db84 208
POTLESS_2 14:e6686a44db84 209 if (!fp) {
POTLESS_2 14:e6686a44db84 210 DEBUG("Probleme SD card...Fin du programme...\r\n");
POTLESS_2 14:e6686a44db84 211 //exit(0);
POTLESS_2 14:e6686a44db84 212 } else {
POTLESS_2 14:e6686a44db84 213 DEBUG("Nouveau fichier LOG cree = %s\r\n", fileName);
POTLESS_2 14:e6686a44db84 214 DEBUG("\r\n", "");
POTLESS_2 12:9ac5be447764 215 }
POTLESS_2 14:e6686a44db84 216 }
POTLESS_2 14:e6686a44db84 217
POTLESS_2 14:e6686a44db84 218 void DATA_LOG()
POTLESS_2 14:e6686a44db84 219 {
POTLESS_2 12:9ac5be447764 220 time_t seconds = time(NULL);
POTLESS_2 12:9ac5be447764 221 if (fp) {
POTLESS_2 14:e6686a44db84 222 fprintf(fp, "%s,%d,%d,%f,%f,%f,%f\r\n", ctime(&seconds), co2 , ppO2, pression, Temp1, Temp2, Humi);
POTLESS_2 14:e6686a44db84 223 DEBUG(" Enregistrement d'un point sur la carte SD\r\n");
POTLESS_2 14:e6686a44db84 224 DEBUG(" Nombre de points = %d\r\n", points);
POTLESS_2 14:e6686a44db84 225 DEBUG("\r\n", "");
POTLESS_2 14:e6686a44db84 226 points++;
POTLESS_2 14:e6686a44db84 227 } else {
POTLESS_2 14:e6686a44db84 228 DEBUG(" Probleme carte SD\r\n");
POTLESS_2 14:e6686a44db84 229 }
POTLESS_2 14:e6686a44db84 230 }
potless 2:4a8bf1d53439 231 ///////////////////////////////////
potless 2:4a8bf1d53439 232 // fonction initialisation /////
potless 2:4a8bf1d53439 233 ///////////////////////////////////
POTLESS_2 4:d84250f67dec 234 void setup()
POTLESS_2 4:d84250f67dec 235 {
POTLESS_2 7:c5a5d8f678ff 236 //Réglage de l'heure
POTLESS_2 11:278bdb497ba3 237 SetTime();
POTLESS_2 14:e6686a44db84 238
POTLESS_2 15:c9205e490740 239 //Initialisation du Data log
POTLESS_2 15:c9205e490740 240 if (NEED_SD_DATA_LOG == 1) init_DATALOG();
POTLESS_2 14:e6686a44db84 241
POTLESS_2 7:c5a5d8f678ff 242 //Initialisation capteurs
POTLESS_2 8:e864edfe656e 243 arnsrs.Sensors_INIT(false, 5, SPOOLING, DIGI_FILTER32, CALIB_AIR);
potless 0:69d4b21d58e0 244 }
potless 0:69d4b21d58e0 245
potless 1:bef7856b5c0a 246 /////////////////////////////////////
potless 1:bef7856b5c0a 247 /// procédure principale /////////
potless 1:bef7856b5c0a 248 /////////////////////////////////////
potless 0:69d4b21d58e0 249
POTLESS_2 4:d84250f67dec 250 int main()
POTLESS_2 4:d84250f67dec 251 {
POTLESS_2 7:c5a5d8f678ff 252 setup();
potless 2:4a8bf1d53439 253
POTLESS_2 14:e6686a44db84 254 //DEBUG("Initialising....\n\r");
POTLESS_2 13:aa620707126d 255 ble.init();
POTLESS_2 13:aa620707126d 256 ble.onDisconnection(disconnectionCallback);
POTLESS_2 13:aa620707126d 257 ble.onDataWritten(onDataWritten);
POTLESS_2 14:e6686a44db84 258
POTLESS_2 13:aa620707126d 259 /* setup advertising */
POTLESS_2 13:aa620707126d 260 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
POTLESS_2 13:aa620707126d 261 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
POTLESS_2 13:aa620707126d 262 ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
POTLESS_2 17:6e0c4c0e0fe2 263 (const uint8_t *)"ARNSRS", sizeof("ARNSRS") - 1);
POTLESS_2 13:aa620707126d 264 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
POTLESS_2 13:aa620707126d 265 (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed));
POTLESS_2 14:e6686a44db84 266
POTLESS_2 13:aa620707126d 267 ble.setAdvertisingInterval(1000); /* 1000ms; in multiples of 0.625ms. */
POTLESS_2 13:aa620707126d 268 ble.startAdvertising();
POTLESS_2 14:e6686a44db84 269
POTLESS_2 13:aa620707126d 270 UARTService uartService(ble);
POTLESS_2 13:aa620707126d 271 uartServicePtr = &uartService;
POTLESS_2 14:e6686a44db84 272
POTLESS_2 4:d84250f67dec 273 while (1) {
POTLESS_2 5:e1d0dc7940a6 274
POTLESS_2 14:e6686a44db84 275 ble.waitForEvent();
POTLESS_2 14:e6686a44db84 276
POTLESS_2 15:c9205e490740 277 //wait_ms(500);
POTLESS_2 14:e6686a44db84 278
POTLESS_2 5:e1d0dc7940a6 279 //RTC
POTLESS_2 7:c5a5d8f678ff 280 time_t seconds = time(NULL);
POTLESS_2 14:e6686a44db84 281
POTLESS_2 14:e6686a44db84 282 DEBUG(" Date / Heure = %s\r\n", ctime(&seconds));
POTLESS_2 14:e6686a44db84 283
POTLESS_2 4:d84250f67dec 284 //CO2 / H / T sur Cozir
POTLESS_2 6:1c2212891714 285 co2 = arnsrs.requestCO2();
POTLESS_2 6:1c2212891714 286 Humi = arnsrs.requestHUMI();
POTLESS_2 14:e6686a44db84 287 Temp1 = arnsrs.requestTEMP();
POTLESS_2 14:e6686a44db84 288
POTLESS_2 6:1c2212891714 289 //P / T sur MS5803_14BA
POTLESS_2 5:e1d0dc7940a6 290 pression = arnsrs.requestPress();
POTLESS_2 5:e1d0dc7940a6 291 Temp2 = arnsrs.requestTemp();
POTLESS_2 5:e1d0dc7940a6 292
POTLESS_2 5:e1d0dc7940a6 293 //PPO2 sur ADS1015
POTLESS_2 8:e864edfe656e 294 ppO2 = arnsrs.requestPpO2(false);
POTLESS_2 5:e1d0dc7940a6 295
POTLESS_2 5:e1d0dc7940a6 296 //Affichage sur moniteur série
POTLESS_2 14:e6686a44db84 297 DEBUG(" CO2 = %d\r\n" , co2);
POTLESS_2 15:c9205e490740 298 DEBUG(" Humidite = %f\r\n" , Humi);
POTLESS_2 15:c9205e490740 299 DEBUG(" Temperature = %f\r\n" ,Temp1);
POTLESS_2 4:d84250f67dec 300 //P / T sur MS5803
POTLESS_2 14:e6686a44db84 301 DEBUG(" Pression = %f\r\n", pression);
POTLESS_2 15:c9205e490740 302 DEBUG(" Temperature = %f\r\n", Temp2);
POTLESS_2 4:d84250f67dec 303 //PPO2 sur ADS1015
POTLESS_2 14:e6686a44db84 304 DEBUG(" PPO2 = %d\r\n", ppO2);
POTLESS_2 14:e6686a44db84 305 DEBUG("\r\n", "");
POTLESS_2 5:e1d0dc7940a6 306
POTLESS_2 15:c9205e490740 307 //Traceur
POTLESS_2 16:fc7d8cc6bf4b 308 TRACE("%d" , co2);
POTLESS_2 16:fc7d8cc6bf4b 309 TRACE(", ");
POTLESS_2 16:fc7d8cc6bf4b 310 TRACE("%d" , ppO2);
POTLESS_2 16:fc7d8cc6bf4b 311 TRACE(", ");
POTLESS_2 16:fc7d8cc6bf4b 312 TRACE("%f" , Humi);
POTLESS_2 16:fc7d8cc6bf4b 313 TRACE(", ");
POTLESS_2 16:fc7d8cc6bf4b 314 TRACE("%f" , Temp1);
POTLESS_2 16:fc7d8cc6bf4b 315 TRACE(", ");
POTLESS_2 16:fc7d8cc6bf4b 316 TRACE("%f" , Temp2);
POTLESS_2 16:fc7d8cc6bf4b 317 TRACE(", ");
POTLESS_2 16:fc7d8cc6bf4b 318 TRACE("%f" , pression);
POTLESS_2 16:fc7d8cc6bf4b 319 TRACE("\r\n");
POTLESS_2 15:c9205e490740 320
POTLESS_2 7:c5a5d8f678ff 321 //Data LOG
POTLESS_2 15:c9205e490740 322 if (NEED_SD_DATA_LOG == 1) DATA_LOG();
POTLESS_2 15:c9205e490740 323
POTLESS_2 17:6e0c4c0e0fe2 324 //En accord avec app Android
POTLESS_2 17:6e0c4c0e0fe2 325 build_send_Message_int("t", co2, ppO2);
POTLESS_2 17:6e0c4c0e0fe2 326 build_send_Message_float("u", Temp1, Temp2);
POTLESS_2 17:6e0c4c0e0fe2 327 build_send_Message_float("v", Humi, pression);
POTLESS_2 15:c9205e490740 328
POTLESS_2 13:aa620707126d 329 }
POTLESS_2 4:d84250f67dec 330 }