Projet tutore IUT ORSAY 1219

Dependencies:   mbed SDFileSystem

Committer:
Gigi913
Date:
Wed Dec 11 08:48:47 2019 +0000
Revision:
7:6355a3c4da53
Parent:
2:b60cb847489c
Projet tutore IUT ORSAY S3 2019

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:005629fe3609 1 #include "mbed.h"
Gigi913 7:6355a3c4da53 2 #include "SDFileSystem.h"
Gigi913 7:6355a3c4da53 3 #include "FATFileSystem.h"
Gigi913 7:6355a3c4da53 4
Gigi913 7:6355a3c4da53 5 Serial pc(USBTX, USBRX,9600);
Gigi913 7:6355a3c4da53 6 Serial pms(PA_9, PA_10,9600); // le capteur est en fait un port série, on configure le port
Gigi913 7:6355a3c4da53 7 SDFileSystem sd (PA_12, PA_11, PA_1, PB_0,"sd"); // creation du port de la carte sd
Gigi913 7:6355a3c4da53 8 DigitalOut led (LED1); // led pouvant être pilotée en cas de besoin pour vérifier le bon déroulement du code
Gigi913 7:6355a3c4da53 9
Gigi913 7:6355a3c4da53 10
Gigi913 7:6355a3c4da53 11 int b1 = 0; // variables dans lesquelles vontt être stockées les données
Gigi913 7:6355a3c4da53 12 int b2 = 0;
Gigi913 7:6355a3c4da53 13 int b3 = 0;
Gigi913 7:6355a3c4da53 14 int b4 = 0;
Gigi913 7:6355a3c4da53 15 int b5 = 0;
Gigi913 7:6355a3c4da53 16 int b6 = 0;
Gigi913 7:6355a3c4da53 17 int b7 = 0;
Gigi913 7:6355a3c4da53 18 int b8 = 0;
Gigi913 7:6355a3c4da53 19 int b9 = 0;
Gigi913 7:6355a3c4da53 20 int b10 = 0;
Gigi913 7:6355a3c4da53 21 int b11 = 0;
Gigi913 7:6355a3c4da53 22 int b12 = 0;
screamer 0:005629fe3609 23
Gigi913 7:6355a3c4da53 24 unsigned long b13; // variables utilisées dans la conversion du texte
Gigi913 7:6355a3c4da53 25 char b14[1000]= {0};
Gigi913 7:6355a3c4da53 26
Gigi913 7:6355a3c4da53 27 FILE *fp = NULL; // pointeur permettant d'ouvrir, de créer et d'écrire dans des fichiers
Gigi913 7:6355a3c4da53 28
Gigi913 7:6355a3c4da53 29 int g = 0; // variables qui sont utilisées pour l'incrémentation de certaines boucles
Gigi913 7:6355a3c4da53 30 int a = 0;
Gigi913 7:6355a3c4da53 31 int gg = 0;
Gigi913 7:6355a3c4da53 32 int buff[32] = {0};
Gigi913 7:6355a3c4da53 33 char buffer[32];
Gigi913 7:6355a3c4da53 34 int b = 0;
Gigi913 7:6355a3c4da53 35 char check[4] = {0};
Gigi913 7:6355a3c4da53 36 char h;
Gigi913 7:6355a3c4da53 37 int ggg = 0;
Gigi913 7:6355a3c4da53 38
Gigi913 7:6355a3c4da53 39 int main()
Gigi913 7:6355a3c4da53 40 {
Gigi913 7:6355a3c4da53 41
Gigi913 7:6355a3c4da53 42 b13 = 0;
Gigi913 7:6355a3c4da53 43 set_time(1559752200);// réglage de l'horloge interne, il s'agit du temps écoulé en secondes depuis le 1er Janvier 1970 à 00:00:00
Gigi913 7:6355a3c4da53 44 sprintf(b14,"/sd/test_%d.csv",b13); // on écrit le texte qui va nous permettre de changer le nom du fichier et on le stocke dans le buffer b14
Gigi913 7:6355a3c4da53 45
Gigi913 7:6355a3c4da53 46 fp = fopen(b14,"r"); // on lit le fichier qui s'appelle test0, si et on stocke la 1ère lettre lue dans la variable ggg, si le fichier n'existe pas alors il sera créer
Gigi913 7:6355a3c4da53 47 ggg = fgetc(fp); // si le fichier est vide alors ggg = 0
Gigi913 7:6355a3c4da53 48 fclose(fp); // on ferme le fichier
Gigi913 7:6355a3c4da53 49
Gigi913 7:6355a3c4da53 50 while (ggg == 104) { // si il y a des données dans le fichier alors le 1er caractère est un h, ce qui équivaut à 104
screamer 0:005629fe3609 51
Gigi913 7:6355a3c4da53 52 b13++; // on incrémente la valeur de b13 pour changer le numéro du fichier
Gigi913 7:6355a3c4da53 53 sprintf(b14,"/sd/test_%d.csv",b13);
Gigi913 7:6355a3c4da53 54 fp = fopen(b14,"r");
Gigi913 7:6355a3c4da53 55 ggg = fgetc(fp);
Gigi913 7:6355a3c4da53 56 fclose(fp);
Gigi913 7:6355a3c4da53 57 }
Gigi913 7:6355a3c4da53 58
Gigi913 7:6355a3c4da53 59 if(ggg != 104) { // si on le lit pas le h alors on écrit dans ce fichier et on enregistre nos données
Gigi913 7:6355a3c4da53 60 sprintf(b14,"/sd/test_%d.csv",b13);
Gigi913 7:6355a3c4da53 61 fp = fopen(b14,"w");
Gigi913 7:6355a3c4da53 62 fprintf(fp,"heure;PM1.0(microg/m3);PM2.5(microg/m3);PM10(microg/m3);PM1.0 EA(microg/m3);PM2.5 EA(microg/m3);PM10 EA(microg/m3);nb part >0.3microm;nb part >0.5microm;nb part >1.0microm;nb part >2.5microm;nb part >5.0microm;nb part >10microm");
Gigi913 7:6355a3c4da53 63 fclose(fp);
Gigi913 7:6355a3c4da53 64 } else {}
Gigi913 7:6355a3c4da53 65
screamer 0:005629fe3609 66 while(1) {
Gigi913 7:6355a3c4da53 67
Gigi913 7:6355a3c4da53 68 time_t seconds = time(NULL);
Gigi913 7:6355a3c4da53 69 strftime(buffer, 32, "%I:%M:%S %p", localtime(&seconds));
Gigi913 7:6355a3c4da53 70 gg = 0;
Gigi913 7:6355a3c4da53 71 led = 0;
Gigi913 7:6355a3c4da53 72 Serial pc(USBTX, USBRX,9600);
Gigi913 7:6355a3c4da53 73 Serial pms(PA_9, PA_10,9600);
Gigi913 7:6355a3c4da53 74
Gigi913 7:6355a3c4da53 75 while(gg <= 31) { // on range les octets dans les variables du tableau
Gigi913 7:6355a3c4da53 76 if (pms.readable() == 1) {
Gigi913 7:6355a3c4da53 77 buff[gg] = pms.getc(); // on lit des trames de données de 32 octets
Gigi913 7:6355a3c4da53 78 gg++;
Gigi913 7:6355a3c4da53 79 b1 = buff[4]<<8|buff[5]; // seuls les octets allant de 4 à 27 possèdes les données dont nous avons besoin
Gigi913 7:6355a3c4da53 80 b2 = buff[6]<<8|buff[7];
Gigi913 7:6355a3c4da53 81 b3 = buff[8]<<8|buff[9];
Gigi913 7:6355a3c4da53 82 b4 = buff[10]<<8|buff[11];
Gigi913 7:6355a3c4da53 83 b5 = buff[12]<<8|buff[13];
Gigi913 7:6355a3c4da53 84 b6 = buff[14]<<8|buff[15];
Gigi913 7:6355a3c4da53 85 b7 = buff[16]<<8|buff[17];
Gigi913 7:6355a3c4da53 86 b8 = buff[18]<<8|buff[19];
Gigi913 7:6355a3c4da53 87 b9 = buff[20]<<8|buff[21];
Gigi913 7:6355a3c4da53 88 b10 = buff[22]<<8|buff[23];
Gigi913 7:6355a3c4da53 89 b11 = buff[24]<<8|buff[25];
Gigi913 7:6355a3c4da53 90 b12 = buff[26]<<8|buff[27];
Gigi913 7:6355a3c4da53 91 } else {}
Gigi913 7:6355a3c4da53 92 }
Gigi913 7:6355a3c4da53 93
Gigi913 7:6355a3c4da53 94 if (buff[0] == 0x42 and buff[1] == 0x4D and buff[2] == 0x00 and buff[3] == 0x1C) { // les 1er octets nous permettent de vérifier la conformité des données car il nous donne des informations sur la longueur de la trame en plus de des caratères de début de trame
Gigi913 7:6355a3c4da53 95
Gigi913 7:6355a3c4da53 96 pc.printf("\n\rTime as a custom formatted string = %s", buffer);
Gigi913 7:6355a3c4da53 97 fp = fopen(b14, "a"); // après vérification on écrit les données dans le fichier.csv et on utilise les points virgules en tant que séparateurs
Gigi913 7:6355a3c4da53 98 fprintf(fp,"\r%s;%i;%i;%i;%i;%i;%i;%i;%i;%i;%i;%i;%i",buffer,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12);
Gigi913 7:6355a3c4da53 99 fclose(fp);
Gigi913 7:6355a3c4da53 100 pc.printf("\n\r,success !");
Gigi913 7:6355a3c4da53 101 led = 1; // on allume quand l'enregistrement a été effectué avec succès
Gigi913 7:6355a3c4da53 102 } else {}
screamer 0:005629fe3609 103 }
screamer 0:005629fe3609 104 }