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:
Thu May 04 06:04:15 2017 +0000
Revision:
9:d945fa4be3a5
Parent:
8:e864edfe656e
Child:
11:278bdb497ba3
retour en arri?re, ca marche plus....

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 //Quelque FLAG...
POTLESS_2 5:e1d0dc7940a6 26 bool FLAG_SIMPLE_TIME = false;
potless 1:bef7856b5c0a 27
POTLESS_2 9:d945fa4be3a5 28 //COM Série vers l'ordi, Serial 2 par défaut
POTLESS_2 9:d945fa4be3a5 29 Serial serialMonit (USBTX,USBRX);
potless 2:4a8bf1d53439 30
POTLESS_2 5:e1d0dc7940a6 31 //Variable des capteurs
POTLESS_2 5:e1d0dc7940a6 32 int co2, ppO2;
POTLESS_2 5:e1d0dc7940a6 33 float pression, Temp1, Temp2, Humi;
POTLESS_2 5:e1d0dc7940a6 34 string DateHeure;
potless 2:4a8bf1d53439 35
POTLESS_2 6:1c2212891714 36 //SD card
POTLESS_2 6:1c2212891714 37 SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS
POTLESS_2 6:1c2212891714 38 FILE *fp;
POTLESS_2 7:c5a5d8f678ff 39 char fileName[32];
POTLESS_2 7:c5a5d8f678ff 40 int points = 1;
POTLESS_2 4:d84250f67dec 41
POTLESS_2 7:c5a5d8f678ff 42 //Fonction qui change le nom du fichier ouvert pour le LOG
POTLESS_2 7:c5a5d8f678ff 43 FILE *nextLogFile(void)
POTLESS_2 7:c5a5d8f678ff 44 {
POTLESS_2 7:c5a5d8f678ff 45 static unsigned int fileNumber = 0;
POTLESS_2 7:c5a5d8f678ff 46 FILE *filePtr = NULL;
POTLESS_2 7:c5a5d8f678ff 47 do {
POTLESS_2 7:c5a5d8f678ff 48 if (filePtr != NULL)
POTLESS_2 7:c5a5d8f678ff 49 fclose(filePtr);
POTLESS_2 7:c5a5d8f678ff 50 sprintf(fileName,"/sd/LOG_Capteurs_%04u.txt",fileNumber++);
POTLESS_2 7:c5a5d8f678ff 51 filePtr = fopen(fileName,"r");
POTLESS_2 7:c5a5d8f678ff 52 } while (filePtr != NULL);
POTLESS_2 7:c5a5d8f678ff 53 return fopen( fileName,"w");
POTLESS_2 7:c5a5d8f678ff 54 }
POTLESS_2 7:c5a5d8f678ff 55 void SetTime() {
POTLESS_2 7:c5a5d8f678ff 56 //Reglage date / heure depuis le terminal
POTLESS_2 7:c5a5d8f678ff 57 struct tm t;
POTLESS_2 7:c5a5d8f678ff 58 printf("Entrer la date et l'heure :\n");
POTLESS_2 7:c5a5d8f678ff 59 printf("YYYY MM DD HH MM SS [enter]\n");
POTLESS_2 7:c5a5d8f678ff 60 scanf("%d %d %d %d %d %d", &t.tm_year, &t.tm_mon, &t.tm_mday
POTLESS_2 7:c5a5d8f678ff 61 , &t.tm_hour, &t.tm_min, &t.tm_sec);
POTLESS_2 7:c5a5d8f678ff 62 t.tm_year = t.tm_year - 1900;
POTLESS_2 7:c5a5d8f678ff 63 t.tm_mon = t.tm_mon - 1;
POTLESS_2 7:c5a5d8f678ff 64
POTLESS_2 7:c5a5d8f678ff 65 // set the time
POTLESS_2 7:c5a5d8f678ff 66 set_time(mktime(&t));
POTLESS_2 7:c5a5d8f678ff 67 }
potless 2:4a8bf1d53439 68 ///////////////////////////////////
potless 2:4a8bf1d53439 69 // fonction initialisation /////
potless 2:4a8bf1d53439 70 ///////////////////////////////////
POTLESS_2 4:d84250f67dec 71 void setup()
POTLESS_2 4:d84250f67dec 72 {
POTLESS_2 7:c5a5d8f678ff 73 //Réglage de l'heure
POTLESS_2 9:d945fa4be3a5 74 //SetTime();
POTLESS_2 7:c5a5d8f678ff 75
POTLESS_2 7:c5a5d8f678ff 76 wait(2);
POTLESS_2 7:c5a5d8f678ff 77
POTLESS_2 7:c5a5d8f678ff 78 //Initialisation DATA LOG
POTLESS_2 7:c5a5d8f678ff 79 serialMonit.printf("Initialisation SD card\r\n");
POTLESS_2 7:c5a5d8f678ff 80 fp = nextLogFile();
POTLESS_2 7:c5a5d8f678ff 81
POTLESS_2 7:c5a5d8f678ff 82 if (!fp) {
POTLESS_2 7:c5a5d8f678ff 83 serialMonit.printf("Probleme SD card...Fin du programme...\r\n");
POTLESS_2 7:c5a5d8f678ff 84 exit(0);
POTLESS_2 7:c5a5d8f678ff 85 }else{
POTLESS_2 7:c5a5d8f678ff 86 serialMonit.printf("Nouveau fichier LOG cree = %s\r\n", fileName);
POTLESS_2 7:c5a5d8f678ff 87 serialMonit.printf("\r\n", "");
POTLESS_2 7:c5a5d8f678ff 88 }
POTLESS_2 7:c5a5d8f678ff 89
POTLESS_2 7:c5a5d8f678ff 90 //Initialisation capteurs
POTLESS_2 8:e864edfe656e 91 arnsrs.Sensors_INIT(false, 5, SPOOLING, DIGI_FILTER32, CALIB_AIR);
potless 0:69d4b21d58e0 92 }
potless 0:69d4b21d58e0 93
potless 1:bef7856b5c0a 94 /////////////////////////////////////
potless 1:bef7856b5c0a 95 /// procédure principale /////////
potless 1:bef7856b5c0a 96 /////////////////////////////////////
potless 0:69d4b21d58e0 97
POTLESS_2 4:d84250f67dec 98 int main()
POTLESS_2 4:d84250f67dec 99 {
POTLESS_2 7:c5a5d8f678ff 100 setup();
potless 2:4a8bf1d53439 101
POTLESS_2 4:d84250f67dec 102 while (1) {
POTLESS_2 5:e1d0dc7940a6 103
POTLESS_2 6:1c2212891714 104 wait(2);
POTLESS_2 6:1c2212891714 105
POTLESS_2 5:e1d0dc7940a6 106 //RTC
POTLESS_2 7:c5a5d8f678ff 107 time_t seconds = time(NULL);
POTLESS_2 5:e1d0dc7940a6 108
POTLESS_2 5:e1d0dc7940a6 109 if (!FLAG_SIMPLE_TIME){
POTLESS_2 7:c5a5d8f678ff 110 printf(" Date / Heure = %s\r\n", ctime(&seconds));
POTLESS_2 5:e1d0dc7940a6 111 }else{
POTLESS_2 5:e1d0dc7940a6 112 char buffer[32];
POTLESS_2 5:e1d0dc7940a6 113 strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
POTLESS_2 5:e1d0dc7940a6 114 printf(" Heure = %s", buffer);
POTLESS_2 5:e1d0dc7940a6 115 }
POTLESS_2 5:e1d0dc7940a6 116
POTLESS_2 4:d84250f67dec 117 //CO2 / H / T sur Cozir
POTLESS_2 6:1c2212891714 118 co2 = arnsrs.requestCO2();
POTLESS_2 6:1c2212891714 119 Humi = arnsrs.requestHUMI();
POTLESS_2 6:1c2212891714 120 Temp1 = arnsrs.requestTEMP();
POTLESS_2 5:e1d0dc7940a6 121
POTLESS_2 6:1c2212891714 122 //P / T sur MS5803_14BA
POTLESS_2 5:e1d0dc7940a6 123 pression = arnsrs.requestPress();
POTLESS_2 5:e1d0dc7940a6 124 Temp2 = arnsrs.requestTemp();
POTLESS_2 5:e1d0dc7940a6 125
POTLESS_2 5:e1d0dc7940a6 126 //PPO2 sur ADS1015
POTLESS_2 8:e864edfe656e 127 ppO2 = arnsrs.requestPpO2(false);
POTLESS_2 5:e1d0dc7940a6 128
POTLESS_2 5:e1d0dc7940a6 129 //Affichage sur moniteur série
POTLESS_2 7:c5a5d8f678ff 130 serialMonit.printf(" CO2 = %d\r\n" , co2);
POTLESS_2 6:1c2212891714 131 serialMonit.printf(" Humidité = %f\r\n" , Humi);
POTLESS_2 7:c5a5d8f678ff 132 serialMonit.printf(" Température = %f\r\n" ,Temp1);
POTLESS_2 4:d84250f67dec 133 //P / T sur MS5803
POTLESS_2 6:1c2212891714 134 serialMonit.printf(" Pression = %f\r\n", pression);
POTLESS_2 7:c5a5d8f678ff 135 serialMonit.printf(" Température = %f\r\n", Temp2);
POTLESS_2 4:d84250f67dec 136 //PPO2 sur ADS1015
POTLESS_2 6:1c2212891714 137 serialMonit.printf(" PPO2 = %d\r\n", ppO2);
POTLESS_2 5:e1d0dc7940a6 138 serialMonit.printf("\r\n", "");
POTLESS_2 5:e1d0dc7940a6 139
POTLESS_2 7:c5a5d8f678ff 140 //Data LOG
POTLESS_2 7:c5a5d8f678ff 141 if (fp) {
POTLESS_2 7:c5a5d8f678ff 142 fprintf(fp, "%s,%d,%d,%f,%f,%f,%f\r\n", ctime(&seconds), co2 , ppO2, pression, Temp1, Temp2, Humi);
POTLESS_2 7:c5a5d8f678ff 143 serialMonit.printf(" Enregistrement d'un point sur la carte SD\r\n");
POTLESS_2 7:c5a5d8f678ff 144 serialMonit.printf(" Nombre de points = %d\r\n", points);
POTLESS_2 7:c5a5d8f678ff 145 serialMonit.printf("\r\n", "");
POTLESS_2 7:c5a5d8f678ff 146 myled = !myled;
POTLESS_2 7:c5a5d8f678ff 147 points++;
POTLESS_2 7:c5a5d8f678ff 148 }else{
POTLESS_2 7:c5a5d8f678ff 149 serialMonit.printf(" Probleme carte SD\r\n");
POTLESS_2 7:c5a5d8f678ff 150 }
POTLESS_2 7:c5a5d8f678ff 151
POTLESS_2 5:e1d0dc7940a6 152 if (mybutton == 0) { // Button is pressed
POTLESS_2 5:e1d0dc7940a6 153 FLAG_SIMPLE_TIME = !FLAG_SIMPLE_TIME;
POTLESS_2 5:e1d0dc7940a6 154 wait(0.2); // 200 ms
POTLESS_2 5:e1d0dc7940a6 155 }
POTLESS_2 4:d84250f67dec 156 }
POTLESS_2 4:d84250f67dec 157 }