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 03 08:12:47 2017 +0000
Revision:
5:e1d0dc7940a6
Parent:
4:d84250f67dec
Child:
6:1c2212891714
Version code utilisant la librairie ARNSRS_SENSORS...A tester plus profond?ment....

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 5:e1d0dc7940a6 17
POTLESS_2 5:e1d0dc7940a6 18 //Init de la lib ARNSRS;
POTLESS_2 5:e1d0dc7940a6 19 ARNSRS arnsrs;
POTLESS_2 5:e1d0dc7940a6 20
POTLESS_2 5:e1d0dc7940a6 21 //Bouton et led de la carte
POTLESS_2 5:e1d0dc7940a6 22 DigitalIn mybutton(USER_BUTTON);
POTLESS_2 5:e1d0dc7940a6 23 DigitalOut myled(LED1);
POTLESS_2 4:d84250f67dec 24
POTLESS_2 5:e1d0dc7940a6 25 //RTC
POTLESS_2 5:e1d0dc7940a6 26 time_t seconds;
POTLESS_2 5:e1d0dc7940a6 27
POTLESS_2 5:e1d0dc7940a6 28 //SD card
POTLESS_2 5:e1d0dc7940a6 29 SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS
POTLESS_2 5:e1d0dc7940a6 30 FILE *fp;
POTLESS_2 5:e1d0dc7940a6 31
POTLESS_2 5:e1d0dc7940a6 32 //Quelque FLAG...
POTLESS_2 5:e1d0dc7940a6 33 bool FLAG_SIMPLE_TIME = false;
potless 1:bef7856b5c0a 34
POTLESS_2 4:d84250f67dec 35 //COM Série
POTLESS_2 5:e1d0dc7940a6 36 Serial serialMonit (USBTX,USBRX,9600); //Serial 2
potless 2:4a8bf1d53439 37
POTLESS_2 5:e1d0dc7940a6 38 //Variable des capteurs
POTLESS_2 5:e1d0dc7940a6 39 int co2, ppO2;
POTLESS_2 5:e1d0dc7940a6 40 float pression, Temp1, Temp2, Humi;
POTLESS_2 5:e1d0dc7940a6 41 string DateHeure;
potless 2:4a8bf1d53439 42
POTLESS_2 4:d84250f67dec 43
potless 2:4a8bf1d53439 44 ///////////////////////////////////
potless 2:4a8bf1d53439 45 // fonction initialisation /////
potless 2:4a8bf1d53439 46 ///////////////////////////////////
POTLESS_2 4:d84250f67dec 47 void setup()
POTLESS_2 4:d84250f67dec 48 {
POTLESS_2 5:e1d0dc7940a6 49 //RTC
POTLESS_2 5:e1d0dc7940a6 50 seconds = time(NULL);
POTLESS_2 5:e1d0dc7940a6 51 DateHeure = ctime(&seconds);
potless 2:4a8bf1d53439 52
POTLESS_2 5:e1d0dc7940a6 53 arnsrs.Sensors_INIT();
POTLESS_2 4:d84250f67dec 54
potless 0:69d4b21d58e0 55 }
potless 0:69d4b21d58e0 56
potless 1:bef7856b5c0a 57 /////////////////////////////////////
potless 1:bef7856b5c0a 58 /// procédure principale /////////
potless 1:bef7856b5c0a 59 /////////////////////////////////////
potless 0:69d4b21d58e0 60
POTLESS_2 4:d84250f67dec 61 int main()
POTLESS_2 4:d84250f67dec 62 {
POTLESS_2 5:e1d0dc7940a6 63 wait(2);
POTLESS_2 5:e1d0dc7940a6 64
POTLESS_2 5:e1d0dc7940a6 65 serialMonit.printf("Initialisation SD card\r\n");
POTLESS_2 5:e1d0dc7940a6 66 fp = fopen("/sd/Capteurs.txt", "r");
POTLESS_2 5:e1d0dc7940a6 67 if (fp != NULL) {
POTLESS_2 5:e1d0dc7940a6 68 fclose(fp);
POTLESS_2 5:e1d0dc7940a6 69 remove("/sd/Capteurs.txt");
POTLESS_2 5:e1d0dc7940a6 70 serialMonit.printf("Suppression d'un fichier du meme nom\r\n");
POTLESS_2 5:e1d0dc7940a6 71 }
POTLESS_2 5:e1d0dc7940a6 72
POTLESS_2 5:e1d0dc7940a6 73 fp = fopen("/sd/Capteurs.txt", "w");
POTLESS_2 5:e1d0dc7940a6 74 if (fp == NULL) {
POTLESS_2 5:e1d0dc7940a6 75 serialMonit.printf("Impossible d'ouvrir le fichier LOG\r\n");
POTLESS_2 5:e1d0dc7940a6 76 } else {
POTLESS_2 5:e1d0dc7940a6 77 fprintf(fp, "LOG Capteurs ARNSRS");
POTLESS_2 5:e1d0dc7940a6 78 fclose(fp);
POTLESS_2 5:e1d0dc7940a6 79 serialMonit.printf("Header du fichier cree\r\n");
POTLESS_2 5:e1d0dc7940a6 80 }
POTLESS_2 5:e1d0dc7940a6 81
POTLESS_2 5:e1d0dc7940a6 82 setup(); //initialisation
potless 2:4a8bf1d53439 83
POTLESS_2 4:d84250f67dec 84 while (1) {
POTLESS_2 5:e1d0dc7940a6 85
POTLESS_2 5:e1d0dc7940a6 86 //RTC
POTLESS_2 5:e1d0dc7940a6 87 seconds = time(NULL);
POTLESS_2 5:e1d0dc7940a6 88
POTLESS_2 5:e1d0dc7940a6 89 if (!FLAG_SIMPLE_TIME){
POTLESS_2 5:e1d0dc7940a6 90 DateHeure = ctime(&seconds);
POTLESS_2 5:e1d0dc7940a6 91 printf(" Date / Heure = %s\r\n", DateHeure);
POTLESS_2 5:e1d0dc7940a6 92 }else{
POTLESS_2 5:e1d0dc7940a6 93 char buffer[32];
POTLESS_2 5:e1d0dc7940a6 94 strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
POTLESS_2 5:e1d0dc7940a6 95 printf(" Heure = %s", buffer);
POTLESS_2 5:e1d0dc7940a6 96 }
POTLESS_2 5:e1d0dc7940a6 97
POTLESS_2 4:d84250f67dec 98 //CO2 / H / T sur Cozir
POTLESS_2 5:e1d0dc7940a6 99 co2 = arnsrs.cozirSend("Z")*10; // on multiplie par 10 pour etre en ppm
POTLESS_2 5:e1d0dc7940a6 100 //serialMonit.printf(" co2 COZIR par methode request = %5d\r\n" ,request('Z')*10); // on multiplie par 10 pour etre en ppm (méthode précédente)
POTLESS_2 5:e1d0dc7940a6 101 Humi = (float)arnsrs.cozirSend ("H") / 10; // à laisser comme ça pour transmettre en BLE mais à diviser par 10 à réception dans l'app android pour être en xx,x%
POTLESS_2 5:e1d0dc7940a6 102 //serialMonit.printf(" H COZIR par methode request = %5d\r\n" ,request('H')); // à laisser comme ça pour transmettre en BLE mais à diviser par 10 à réception dans l'app android pour être en xx,x%
POTLESS_2 5:e1d0dc7940a6 103 Temp1 = (float)(arnsrs.cozirSend ("T")-1000) / 10; // à laisser comme ça pour envoi BLE et à diviser par 10 à réception dans l'app android pour etre en yy,y°C
POTLESS_2 5:e1d0dc7940a6 104 //serialMonit.printf(" T COZIR par methode request = %5d\r\n" ,request('T')-1000);
POTLESS_2 5:e1d0dc7940a6 105
POTLESS_2 5:e1d0dc7940a6 106 pression = arnsrs.requestPress();
POTLESS_2 5:e1d0dc7940a6 107 Temp2 = arnsrs.requestTemp();
POTLESS_2 5:e1d0dc7940a6 108
POTLESS_2 5:e1d0dc7940a6 109 //PPO2 sur ADS1015
POTLESS_2 5:e1d0dc7940a6 110 ppO2 = arnsrs.requestPpO2();
POTLESS_2 5:e1d0dc7940a6 111
POTLESS_2 5:e1d0dc7940a6 112 //Affichage sur moniteur série
POTLESS_2 5:e1d0dc7940a6 113 serialMonit.printf(" co2 COZIR par methode cozirSend = %d\r\n" , co2); // on multiplie par 10 pour etre en ppm
POTLESS_2 5:e1d0dc7940a6 114 //serialMonit.printf(" co2 COZIR par methode request = %5d\r\n" ,request('Z')*10); // on multiplie par 10 pour etre en ppm (méthode précédente)
POTLESS_2 5:e1d0dc7940a6 115 serialMonit.printf(" H COZIR par methode cozirSend = %f\r\n" , Humi); // à laisser comme ça pour transmettre en BLE mais à diviser par 10 à réception dans l'app android pour être en xx,x%
POTLESS_2 5:e1d0dc7940a6 116 //serialMonit.printf(" H COZIR par methode request = %5d\r\n" ,request('H')); // à laisser comme ça pour transmettre en BLE mais à diviser par 10 à réception dans l'app android pour être en xx,x%
POTLESS_2 5:e1d0dc7940a6 117 serialMonit.printf(" T COZIR par methode cozirSend = %f\r\n" ,Temp1); // à laisser comme ça pour envoi BLE et à diviser par 10 à réception dans l'app android pour etre en yy,y°C
POTLESS_2 5:e1d0dc7940a6 118 //serialMonit.printf(" T COZIR par methode request = %5d\r\n" ,request('T')-1000); // à laisser comme ça pour envoi BLE et à diviser par 10 à réception dans l'app android pour etre en yy,y°C
POTLESS_2 4:d84250f67dec 119 //P / T sur MS5803
POTLESS_2 5:e1d0dc7940a6 120 serialMonit.printf(" Pression MS5803 = %f\r\n", pression);
POTLESS_2 5:e1d0dc7940a6 121 serialMonit.printf(" Temperature MS5803 = %f\r\n", Temp2);
POTLESS_2 4:d84250f67dec 122 //PPO2 sur ADS1015
POTLESS_2 5:e1d0dc7940a6 123 serialMonit.printf(" PPO2 sur ADS1015 = %d\r\n", ppO2);
POTLESS_2 5:e1d0dc7940a6 124 serialMonit.printf("\r\n", "");
POTLESS_2 5:e1d0dc7940a6 125
POTLESS_2 5:e1d0dc7940a6 126 if (mybutton == 0) { // Button is pressed
POTLESS_2 5:e1d0dc7940a6 127 myled = !myled; // Toggle the LED state
POTLESS_2 5:e1d0dc7940a6 128 FLAG_SIMPLE_TIME = !FLAG_SIMPLE_TIME;
POTLESS_2 5:e1d0dc7940a6 129 wait(0.2); // 200 ms
POTLESS_2 5:e1d0dc7940a6 130 }
POTLESS_2 4:d84250f67dec 131 }
POTLESS_2 4:d84250f67dec 132 }