FFT à reprogrammer Gestion des trames réseaux à améliorer (certaines trames ne se transmettent pas)

Dependencies:   mbed SHT21_ncleee HX711 mbed-dsp DS1820

Committer:
Lambdys
Date:
Mon Jan 25 10:10:24 2021 +0000
Revision:
0:4311d41c5fbc
Prototype B-Smart. Cible: Nucleo L432KC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Lambdys 0:4311d41c5fbc 1 /*-------------------------------------*/
Lambdys 0:4311d41c5fbc 2 /* Ruche connectée B-Smart V15 */
Lambdys 0:4311d41c5fbc 3 /* Contrôle baremetal */
Lambdys 0:4311d41c5fbc 4 /* */
Lambdys 0:4311d41c5fbc 5 /* BIROLINI Nikolaï */
Lambdys 0:4311d41c5fbc 6 /* GOURDET Hadrien */
Lambdys 0:4311d41c5fbc 7 /* HULOT Alexandra */
Lambdys 0:4311d41c5fbc 8 /* LEBRETON Maxime */
Lambdys 0:4311d41c5fbc 9 /* */
Lambdys 0:4311d41c5fbc 10 /* Janvier 2021 */
Lambdys 0:4311d41c5fbc 11 /* Polytech Sorbonne */
Lambdys 0:4311d41c5fbc 12 /*-------------------------------------*/
Lambdys 0:4311d41c5fbc 13
Lambdys 0:4311d41c5fbc 14 #include "SHT21_ncleee.h"
Lambdys 0:4311d41c5fbc 15 #include "arm_math.h"
Lambdys 0:4311d41c5fbc 16 #include "arm_const_structs.h"
Lambdys 0:4311d41c5fbc 17 #include "DS1820.h"
Lambdys 0:4311d41c5fbc 18 #include "HX711.h"
Lambdys 0:4311d41c5fbc 19
Lambdys 0:4311d41c5fbc 20 #define DEBUG 1
Lambdys 0:4311d41c5fbc 21
Lambdys 0:4311d41c5fbc 22
Lambdys 0:4311d41c5fbc 23 HX711 Balance(D11,D10);
Lambdys 0:4311d41c5fbc 24 Serial pc(USBTX,USBRX);
Lambdys 0:4311d41c5fbc 25 AnalogOut MEAS_ENABLE(A3);
Lambdys 0:4311d41c5fbc 26
Lambdys 0:4311d41c5fbc 27 //=1 VMEAS
Lambdys 0:4311d41c5fbc 28 //=0 SIGFOX
Lambdys 0:4311d41c5fbc 29
Lambdys 0:4311d41c5fbc 30 Serial sigfox(D1,D0);//TX:PA_2:A7 RX:PA_3:A2
Lambdys 0:4311d41c5fbc 31
Lambdys 0:4311d41c5fbc 32
Lambdys 0:4311d41c5fbc 33 #define min(a, b) ((a) < (b) ? (a) : (b))
Lambdys 0:4311d41c5fbc 34 #define max(a, b) ((a) > (b) ? (a) : (b))
Lambdys 0:4311d41c5fbc 35 #define SIZE 7
Lambdys 0:4311d41c5fbc 36 #define TEMPPRESENCE 35
Lambdys 0:4311d41c5fbc 37 #define FFT_SIZE 1024
Lambdys 0:4311d41c5fbc 38
Lambdys 0:4311d41c5fbc 39 DigitalOut TPL5110_DONE(D5);
Lambdys 0:4311d41c5fbc 40
Lambdys 0:4311d41c5fbc 41 typedef struct _frame //champ de bits
Lambdys 0:4311d41c5fbc 42 {
Lambdys 0:4311d41c5fbc 43 unsigned char *field; //tableau de char
Lambdys 0:4311d41c5fbc 44 int offset; //index
Lambdys 0:4311d41c5fbc 45 int size; //taille de la trame en bits
Lambdys 0:4311d41c5fbc 46 } Frame;
Lambdys 0:4311d41c5fbc 47
Lambdys 0:4311d41c5fbc 48 void new_frame(Frame* frame,unsigned char* field)
Lambdys 0:4311d41c5fbc 49 {
Lambdys 0:4311d41c5fbc 50 frame->field = field;
Lambdys 0:4311d41c5fbc 51 frame->offset = 0; //on part du premier char
Lambdys 0:4311d41c5fbc 52 frame->size = SIZE*8;
Lambdys 0:4311d41c5fbc 53 }
Lambdys 0:4311d41c5fbc 54
Lambdys 0:4311d41c5fbc 55
Lambdys 0:4311d41c5fbc 56
Lambdys 0:4311d41c5fbc 57 int get_bit(Frame *frame) //fonction de debuggage
Lambdys 0:4311d41c5fbc 58 {
Lambdys 0:4311d41c5fbc 59 int char_index = frame->offset / 8;
Lambdys 0:4311d41c5fbc 60 int bit_index = 7-(frame->offset % 8);
Lambdys 0:4311d41c5fbc 61 frame->offset++;
Lambdys 0:4311d41c5fbc 62
Lambdys 0:4311d41c5fbc 63 return ((frame->field[char_index] & (1 << bit_index)) > 0) ? 1 : 0;
Lambdys 0:4311d41c5fbc 64 }
Lambdys 0:4311d41c5fbc 65 void print_frame(Frame *frame) //fonction de debuggage
Lambdys 0:4311d41c5fbc 66 {
Lambdys 0:4311d41c5fbc 67 int cur_offset = frame->offset;
Lambdys 0:4311d41c5fbc 68 frame->offset = 0;
Lambdys 0:4311d41c5fbc 69 pc.printf("Frame {\r\n\ttaille : %d / %d\r\n\tbitfield : ", cur_offset, frame->size);
Lambdys 0:4311d41c5fbc 70 while (frame->offset < cur_offset)
Lambdys 0:4311d41c5fbc 71 {
Lambdys 0:4311d41c5fbc 72 printf(get_bit(frame) == 1 ? "1" : "0");
Lambdys 0:4311d41c5fbc 73 if (frame->offset % 8 == 0)
Lambdys 0:4311d41c5fbc 74 printf(" ");
Lambdys 0:4311d41c5fbc 75 }
Lambdys 0:4311d41c5fbc 76 pc.printf("\r\n}\r\n");
Lambdys 0:4311d41c5fbc 77 }
Lambdys 0:4311d41c5fbc 78 void stock_bit(unsigned char bit, Frame *frame) //set le bit n°offset à 1 si bit>0, sinon à 0
Lambdys 0:4311d41c5fbc 79 {
Lambdys 0:4311d41c5fbc 80 if (frame->offset < frame->size)
Lambdys 0:4311d41c5fbc 81 {
Lambdys 0:4311d41c5fbc 82 int char_index = frame->offset / 8; //n° du char
Lambdys 0:4311d41c5fbc 83 int bit_index = 7 -(frame->offset % 8); //n° du bit
Lambdys 0:4311d41c5fbc 84 unsigned char char_mask = ~(1 << bit_index); //mask pour garder tous les bits existants sauf celui qui nous intéresse
Lambdys 0:4311d41c5fbc 85
Lambdys 0:4311d41c5fbc 86 frame->field[char_index] = (frame->field[char_index] & char_mask) + ((bit > 0 ? 1 : 0) << bit_index); //place le bit à sa place
Lambdys 0:4311d41c5fbc 87 frame->offset++; //bit modifié, on se déplace
Lambdys 0:4311d41c5fbc 88 }
Lambdys 0:4311d41c5fbc 89 }
Lambdys 0:4311d41c5fbc 90 void stock_int(unsigned int value, int taille_en_bits, Frame *frame) //stocke les bits d'un int
Lambdys 0:4311d41c5fbc 91 {
Lambdys 0:4311d41c5fbc 92 if(DEBUG)
Lambdys 0:4311d41c5fbc 93 {
Lambdys 0:4311d41c5fbc 94 pc.printf(" Mesure %d ,taille = %d\r\n",value,taille_en_bits);
Lambdys 0:4311d41c5fbc 95 }
Lambdys 0:4311d41c5fbc 96
Lambdys 0:4311d41c5fbc 97 for (int i = 0; i < taille_en_bits; i++){
Lambdys 0:4311d41c5fbc 98 stock_bit(value & (1 << (taille_en_bits - i - 1)), frame);
Lambdys 0:4311d41c5fbc 99 //print_frame(frame);
Lambdys 0:4311d41c5fbc 100 }
Lambdys 0:4311d41c5fbc 101 }
Lambdys 0:4311d41c5fbc 102 void validate_frame(Frame *frame) //on met toute la fin à zéro si pas déjà utilisée
Lambdys 0:4311d41c5fbc 103 {
Lambdys 0:4311d41c5fbc 104 while (frame->offset < frame->size)
Lambdys 0:4311d41c5fbc 105 stock_bit(0, frame);
Lambdys 0:4311d41c5fbc 106 }
Lambdys 0:4311d41c5fbc 107
Lambdys 0:4311d41c5fbc 108
Lambdys 0:4311d41c5fbc 109
Lambdys 0:4311d41c5fbc 110 void send_frame(Frame *frame) //fonction de debuggage
Lambdys 0:4311d41c5fbc 111 {
Lambdys 0:4311d41c5fbc 112 sigfox.printf("AT$SF=");
Lambdys 0:4311d41c5fbc 113 if(DEBUG) pc.printf("AT$SF=");
Lambdys 0:4311d41c5fbc 114 for ( int i = 0 ; i < frame->size / 8 ; i++) {
Lambdys 0:4311d41c5fbc 115 sigfox.printf("%0X", frame->field[i]);
Lambdys 0:4311d41c5fbc 116
Lambdys 0:4311d41c5fbc 117 if(DEBUG) pc.printf("%0X", frame->field[i]);
Lambdys 0:4311d41c5fbc 118 }
Lambdys 0:4311d41c5fbc 119 sigfox.printf("\r\n");
Lambdys 0:4311d41c5fbc 120 if(DEBUG) pc.printf("\r\n");
Lambdys 0:4311d41c5fbc 121 }
Lambdys 0:4311d41c5fbc 122
Lambdys 0:4311d41c5fbc 123 void stock_temp(Frame *frame, float temp)
Lambdys 0:4311d41c5fbc 124 {
Lambdys 0:4311d41c5fbc 125 temp = min(temp, 45.5f);
Lambdys 0:4311d41c5fbc 126 temp = max(temp, -18);
Lambdys 0:4311d41c5fbc 127 //temp = max(temp, -10);
Lambdys 0:4311d41c5fbc 128 int bits = (int)((temp/2. + 36) * 2 + 0.5f); //round(temp+18)*2
Lambdys 0:4311d41c5fbc 129 stock_int(bits, 7, frame);
Lambdys 0:4311d41c5fbc 130 }
Lambdys 0:4311d41c5fbc 131
Lambdys 0:4311d41c5fbc 132 /* Masse test enhanced */
Lambdys 0:4311d41c5fbc 133 void stock_masse(Frame *frame, float masse)
Lambdys 0:4311d41c5fbc 134 {
Lambdys 0:4311d41c5fbc 135 /*bib = https://apiarobotics.com/fr/connaissances/poids-dune-ruche */
Lambdys 0:4311d41c5fbc 136 /*encadrer la masse entre 15kg et 50 kg*/
Lambdys 0:4311d41c5fbc 137 masse = max(masse, 15.f);//masse mini = 15kg
Lambdys 0:4311d41c5fbc 138 masse = min(masse, 50.f);//masse max = 50kg
Lambdys 0:4311d41c5fbc 139
Lambdys 0:4311d41c5fbc 140 if(debug) pc.printf("[MASSE]masse retenue (kg)= %f\n", masse);
Lambdys 0:4311d41c5fbc 141
Lambdys 0:4311d41c5fbc 142 /*ajout d'offset */
Lambdys 0:4311d41c5fbc 143 masse-=15; //masse mini
Lambdys 0:4311d41c5fbc 144
Lambdys 0:4311d41c5fbc 145 /*produit en croix */
Lambdys 0:4311d41c5fbc 146 /*10kg = 0x00 */
Lambdys 0:4311d41c5fbc 147 /*50kg = 0xff */
Lambdys 0:4311d41c5fbc 148 /*précision = 35kg/190 = 184g */
Lambdys 0:4311d41c5fbc 149 masse = masse*(255.0-65)/35.0; //produit en croix (35 = masse max - masse mini)
Lambdys 0:4311d41c5fbc 150 masse += 65; //offset binaire. Si on veux transmettre une valeur <65 = bug !! (valeur obtenue par tatonnement)
Lambdys 0:4311d41c5fbc 151
Lambdys 0:4311d41c5fbc 152
Lambdys 0:4311d41c5fbc 153 int bits = (int)masse;
Lambdys 0:4311d41c5fbc 154
Lambdys 0:4311d41c5fbc 155 if(debug) pc.printf("[MASSE]valeur binaire retenue = %d\n", bits);
Lambdys 0:4311d41c5fbc 156
Lambdys 0:4311d41c5fbc 157 stock_int(bits,8,frame);
Lambdys 0:4311d41c5fbc 158 }
Lambdys 0:4311d41c5fbc 159
Lambdys 0:4311d41c5fbc 160 void stock_vent(Frame *frame, float vent)
Lambdys 0:4311d41c5fbc 161 {
Lambdys 0:4311d41c5fbc 162 vent = min(vent, 70);
Lambdys 0:4311d41c5fbc 163 vent = max(vent, 0);
Lambdys 0:4311d41c5fbc 164 int bits = (int)(vent*0.1f + 0.5f);
Lambdys 0:4311d41c5fbc 165 stock_int(bits, 3, frame);
Lambdys 0:4311d41c5fbc 166 }
Lambdys 0:4311d41c5fbc 167 void stock_humidity(Frame *frame,float humidity)
Lambdys 0:4311d41c5fbc 168 {
Lambdys 0:4311d41c5fbc 169 humidity = min(humidity,100);
Lambdys 0:4311d41c5fbc 170 humidity = max(humidity,20);
Lambdys 0:4311d41c5fbc 171 int bits = (int)(humidity*31/100+0.5f);
Lambdys 0:4311d41c5fbc 172 stock_int(bits,5,frame);
Lambdys 0:4311d41c5fbc 173 }
Lambdys 0:4311d41c5fbc 174 void stock_battery(Frame *frame,float battery)
Lambdys 0:4311d41c5fbc 175 {
Lambdys 0:4311d41c5fbc 176 battery = min(battery,100);
Lambdys 0:4311d41c5fbc 177 battery = max(battery,0);
Lambdys 0:4311d41c5fbc 178 int bits = (int)(battery*63/100+0.5f);
Lambdys 0:4311d41c5fbc 179 stock_int(bits,6,frame);
Lambdys 0:4311d41c5fbc 180 }
Lambdys 0:4311d41c5fbc 181
Lambdys 0:4311d41c5fbc 182 InterruptIn anemo(D13);//D13
Lambdys 0:4311d41c5fbc 183 //ATTENTION: ne pas oublier de ratacher l'interupt à une fonction (dans le main)!
Lambdys 0:4311d41c5fbc 184
Lambdys 0:4311d41c5fbc 185 AnalogIn analog_battery(A0);
Lambdys 0:4311d41c5fbc 186 AnalogIn analog_luminosity(A1);
Lambdys 0:4311d41c5fbc 187 AnalogIn analog_TMP36(A4);
Lambdys 0:4311d41c5fbc 188 //AnalogIn analog_FFT(A5);
Lambdys 0:4311d41c5fbc 189
Lambdys 0:4311d41c5fbc 190 //I2C i2c(PB_4, PA_7);//SDA:A12, SCL:A6
Lambdys 0:4311d41c5fbc 191 I2C i2c(PB_4, PA_7);//SDA:A12, SCL:A6
Lambdys 0:4311d41c5fbc 192 SHT21 sht(&i2c);
Lambdys 0:4311d41c5fbc 193
Lambdys 0:4311d41c5fbc 194 Timer t_anemo;
Lambdys 0:4311d41c5fbc 195 int cpt_anemo;
Lambdys 0:4311d41c5fbc 196
Lambdys 0:4311d41c5fbc 197 void anemo_counter() //IRQ Anémomètre
Lambdys 0:4311d41c5fbc 198 {
Lambdys 0:4311d41c5fbc 199 cpt_anemo++;
Lambdys 0:4311d41c5fbc 200 if(debug)pc.printf("WIND ! cpt_anemo = %d \n",cpt_anemo);
Lambdys 0:4311d41c5fbc 201 }
Lambdys 0:4311d41c5fbc 202
Lambdys 0:4311d41c5fbc 203 //FFT
Lambdys 0:4311d41c5fbc 204
Lambdys 0:4311d41c5fbc 205 int FFT_compt;
Lambdys 0:4311d41c5fbc 206 float fmax;
Lambdys 0:4311d41c5fbc 207 /* Pour simplifier l'interprétation des mesures, un instant est relié à chaque mesure */
Lambdys 0:4311d41c5fbc 208 float FFT_DUREE[FFT_SIZE];
Lambdys 0:4311d41c5fbc 209
Lambdys 0:4311d41c5fbc 210 /* Signal en entrée analogique */
Lambdys 0:4311d41c5fbc 211 float signal_reel[FFT_SIZE+1];
Lambdys 0:4311d41c5fbc 212
Lambdys 0:4311d41c5fbc 213 /* Signal après dérivation */
Lambdys 0:4311d41c5fbc 214 float signal_reelDiff[FFT_SIZE];
Lambdys 0:4311d41c5fbc 215
Lambdys 0:4311d41c5fbc 216 /* Signal avant la FFT (il contient les composantes réeles et complexes (composante complexe nulle)) */
Lambdys 0:4311d41c5fbc 217 float FFT_in[FFT_SIZE*2];
Lambdys 0:4311d41c5fbc 218
Lambdys 0:4311d41c5fbc 219 /* Spectre à la sortie de FFT */
Lambdys 0:4311d41c5fbc 220 float FFT_out[FFT_SIZE*2];
Lambdys 0:4311d41c5fbc 221
Lambdys 0:4311d41c5fbc 222 /* Reference index at which max energy of bin ocuurs */
Lambdys 0:4311d41c5fbc 223 uint32_t testIndex = 0;
Lambdys 0:4311d41c5fbc 224
Lambdys 0:4311d41c5fbc 225 /* Flag FFT complexe. La FFT sera effectuée uniquement sur la composante réele. Donc flag à '0' */
Lambdys 0:4311d41c5fbc 226 int ifftFlag = 0;
Lambdys 0:4311d41c5fbc 227
Lambdys 0:4311d41c5fbc 228 int doBitReverse = 1;
Lambdys 0:4311d41c5fbc 229
Lambdys 0:4311d41c5fbc 230 /* Energie maximale */
Lambdys 0:4311d41c5fbc 231 float maxValue;
Lambdys 0:4311d41c5fbc 232 AnalogIn analog_FFT(A5);
Lambdys 0:4311d41c5fbc 233 float Fe= 4000;//Fréquence echantillonage
Lambdys 0:4311d41c5fbc 234 float Te = 1/Fe;
Lambdys 0:4311d41c5fbc 235 int MortReine = 0;//Mort de la reine 0 = vivant, 1=mort
Lambdys 0:4311d41c5fbc 236 int ToutVaBien = 0;//Si tout va bien= 0 sinon = 1
Lambdys 0:4311d41c5fbc 237 int Stress = 0;//Abeille en stress = 1 sinon 0
Lambdys 0:4311d41c5fbc 238 int bebe = 0;//Essaimage = 1 sinon 0
Lambdys 0:4311d41c5fbc 239 int moyenneAmp=0;
Lambdys 0:4311d41c5fbc 240 int moyenneNorm=0;//Moyenne amplitude sur tout le spectre
Lambdys 0:4311d41c5fbc 241 int moyEss=0; //Moyenne amplitude entre 200Hz et 500 Hz
Lambdys 0:4311d41c5fbc 242
Lambdys 0:4311d41c5fbc 243
Lambdys 0:4311d41c5fbc 244
Lambdys 0:4311d41c5fbc 245 int main(void)
Lambdys 0:4311d41c5fbc 246 {
Lambdys 0:4311d41c5fbc 247 TPL5110_DONE=0;
Lambdys 0:4311d41c5fbc 248 MEAS_ENABLE = 1;
Lambdys 0:4311d41c5fbc 249 anemo.disable_irq();
Lambdys 0:4311d41c5fbc 250 anemo.rise(&anemo_counter);//attacher une fonction à l'interrupt
Lambdys 0:4311d41c5fbc 251 //--------------------------------------------- données brutes------------------------------------------
Lambdys 0:4311d41c5fbc 252 float temp_ext = 10.; // variable pour la température extérieure
Lambdys 0:4311d41c5fbc 253
Lambdys 0:4311d41c5fbc 254 float temp_int_1 = 20.5; // mesures des 8 sondes de température à l'intérieur de la ruche
Lambdys 0:4311d41c5fbc 255 float temp_int_2 = 20.5;
Lambdys 0:4311d41c5fbc 256 float temp_int_3 = 20.5;
Lambdys 0:4311d41c5fbc 257 float temp_int_4 = 20.5;
Lambdys 0:4311d41c5fbc 258 float temp_int_5 = 20.5;
Lambdys 0:4311d41c5fbc 259 //float temp_int_6 = 20.5;
Lambdys 0:4311d41c5fbc 260 //float temp_int_7 = 20.5;
Lambdys 0:4311d41c5fbc 261 //float temp_int_8 = 20.5;
Lambdys 0:4311d41c5fbc 262 float temp_int; //température intérieure moyenne
Lambdys 0:4311d41c5fbc 263 int luminosity = 2;
Lambdys 0:4311d41c5fbc 264 float masse = 0;
Lambdys 0:4311d41c5fbc 265 float force_vent = 50.0;
Lambdys 0:4311d41c5fbc 266 float battery = 2.0;
Lambdys 0:4311d41c5fbc 267 float humidity = 56.6;
Lambdys 0:4311d41c5fbc 268 int cadre_1_2 = 1;//non utilisé mais crash si 0!
Lambdys 0:4311d41c5fbc 269 int cadre_3 = 0;
Lambdys 0:4311d41c5fbc 270 int cadre_4 = 0;
Lambdys 0:4311d41c5fbc 271 int cadre_5 = 0;
Lambdys 0:4311d41c5fbc 272 int cadre_6 = 0;
Lambdys 0:4311d41c5fbc 273 int cadre_7 = 0;
Lambdys 0:4311d41c5fbc 274 int cadre_8 = 1;//remplacer par reine;
Lambdys 0:4311d41c5fbc 275 int cadre_9_10 = 0;//remplacer par presence_ruche;
Lambdys 0:4311d41c5fbc 276 int stress = 0;
Lambdys 0:4311d41c5fbc 277 int essaimage = 0;
Lambdys 0:4311d41c5fbc 278 int reine = 1;
Lambdys 0:4311d41c5fbc 279 int abeilles = 0;
Lambdys 0:4311d41c5fbc 280 //------------ pour la tx
Lambdys 0:4311d41c5fbc 281
Lambdys 0:4311d41c5fbc 282 long masse_valeur_moyenne;
Lambdys 0:4311d41c5fbc 283 long masse_valeur;
Lambdys 0:4311d41c5fbc 284 float battery_read;
Lambdys 0:4311d41c5fbc 285 float luminosity_read;
Lambdys 0:4311d41c5fbc 286
Lambdys 0:4311d41c5fbc 287 if(debug)pc.printf("1.Initialisation DS1820\n");
Lambdys 0:4311d41c5fbc 288 DS1820 sensor_DS1820_1(D2);
Lambdys 0:4311d41c5fbc 289 DS1820 sensor_DS1820_2(D3);
Lambdys 0:4311d41c5fbc 290 DS1820 sensor_DS1820_3(D6);
Lambdys 0:4311d41c5fbc 291 DS1820 sensor_DS1820_4(D9);
Lambdys 0:4311d41c5fbc 292
Lambdys 0:4311d41c5fbc 293 if(debug)pc.printf("1a.Lecture DS1820: 1/4\n");
Lambdys 0:4311d41c5fbc 294 sensor_DS1820_1.convertTemperature(true, DS1820::all_devices); // start temperature conversion
Lambdys 0:4311d41c5fbc 295 wait(1); // let DS1820 complete the temperature conversion
Lambdys 0:4311d41c5fbc 296 temp_int_1 = sensor_DS1820_1.temperature();
Lambdys 0:4311d41c5fbc 297
Lambdys 0:4311d41c5fbc 298 if(debug)pc.printf("1a.Lecture DS1820: 2/4\n");
Lambdys 0:4311d41c5fbc 299 sensor_DS1820_2.convertTemperature(true, DS1820::all_devices); // start temperature conversion
Lambdys 0:4311d41c5fbc 300 wait(1); // let DS1820 complete the temperature conversion
Lambdys 0:4311d41c5fbc 301 temp_int_2 = sensor_DS1820_2.temperature();
Lambdys 0:4311d41c5fbc 302
Lambdys 0:4311d41c5fbc 303 if(debug)pc.printf("1a.Lecture DS1820: 3/4\n");
Lambdys 0:4311d41c5fbc 304 sensor_DS1820_3.convertTemperature(true, DS1820::all_devices); // start temperature conversion
Lambdys 0:4311d41c5fbc 305 wait(1); // let DS1820 complete the temperature conversion
Lambdys 0:4311d41c5fbc 306 temp_int_3 = sensor_DS1820_3.temperature();
Lambdys 0:4311d41c5fbc 307
Lambdys 0:4311d41c5fbc 308 if(debug)pc.printf("1a.Lecture DS1820: 4/4\n");
Lambdys 0:4311d41c5fbc 309 sensor_DS1820_4.convertTemperature(true, DS1820::all_devices); // start temperature conversion
Lambdys 0:4311d41c5fbc 310 wait(1); // let DS1820 complete the temperature conversion
Lambdys 0:4311d41c5fbc 311 temp_int_4 = sensor_DS1820_4.temperature();
Lambdys 0:4311d41c5fbc 312
Lambdys 0:4311d41c5fbc 313 if(debug)pc.printf("1b.Initialisation et lecture SHT20\n");
Lambdys 0:4311d41c5fbc 314 temp_int_5 = sht.readTemp();
Lambdys 0:4311d41c5fbc 315
Lambdys 0:4311d41c5fbc 316 temp_int = (temp_int_1 + temp_int_5 + temp_int_5 + temp_int_5 + temp_int_5)/5.0;
Lambdys 0:4311d41c5fbc 317
Lambdys 0:4311d41c5fbc 318 if(debug)pc.printf("[TEMP]: temperature interieure moyenne = %f oC\n",temp_int);
Lambdys 0:4311d41c5fbc 319
Lambdys 0:4311d41c5fbc 320 if(debug)pc.printf("1c.Lecture TMP36\n");
Lambdys 0:4311d41c5fbc 321 /* https://learn.adafruit.com/tmp36-temperature-sensor */
Lambdys 0:4311d41c5fbc 322 temp_ext = analog_TMP36.read();
Lambdys 0:4311d41c5fbc 323 temp_ext*=3.3;//mise à l'échelle val analogique 0 à 1 en tension 0 à 3.3V
Lambdys 0:4311d41c5fbc 324 temp_ext-=0.500; //-500 mV
Lambdys 0:4311d41c5fbc 325 temp_ext/=0.010; //cf datasheet, div par 10 mV
Lambdys 0:4311d41c5fbc 326
Lambdys 0:4311d41c5fbc 327
Lambdys 0:4311d41c5fbc 328 if(debug) pc.printf("[TEMP]: temperature exterieure = %f oC\n",temp_ext);
Lambdys 0:4311d41c5fbc 329
Lambdys 0:4311d41c5fbc 330 if(debug)pc.printf("1.d.Occupation des cadres\n");
Lambdys 0:4311d41c5fbc 331
Lambdys 0:4311d41c5fbc 332 if(temp_int_1 >= TEMPPRESENCE) cadre_3 = 1;
Lambdys 0:4311d41c5fbc 333 if(temp_int_2 >= TEMPPRESENCE) cadre_4 = 1;
Lambdys 0:4311d41c5fbc 334 if(temp_int_3 >= TEMPPRESENCE) cadre_5 = 1;
Lambdys 0:4311d41c5fbc 335 if(temp_int_4 >= TEMPPRESENCE) cadre_6 = 1;
Lambdys 0:4311d41c5fbc 336 if(temp_int_5 >= TEMPPRESENCE) cadre_7 = 1;
Lambdys 0:4311d41c5fbc 337
Lambdys 0:4311d41c5fbc 338
Lambdys 0:4311d41c5fbc 339
Lambdys 0:4311d41c5fbc 340
Lambdys 0:4311d41c5fbc 341 if(debug)pc.printf("[Temp] cadre_3 actif = %d \n",cadre_3);
Lambdys 0:4311d41c5fbc 342 if(debug)pc.printf("[Temp] cadre_4 actif = %d \n",cadre_4);
Lambdys 0:4311d41c5fbc 343 if(debug)pc.printf("[Temp] cadre_5 actif = %d \n",cadre_5);
Lambdys 0:4311d41c5fbc 344 if(debug)pc.printf("[Temp] cadre_6 actif = %d \n",cadre_6);
Lambdys 0:4311d41c5fbc 345 if(debug)pc.printf("[Temp] cadre_7 actif = %d \n",cadre_7);
Lambdys 0:4311d41c5fbc 346
Lambdys 0:4311d41c5fbc 347 if((cadre_3)||(cadre_4)||(cadre_5)||(cadre_6)||(cadre_7)) abeilles = 1;
Lambdys 0:4311d41c5fbc 348 if(debug)pc.printf("[Temp] abeilles = %d \n", abeilles);
Lambdys 0:4311d41c5fbc 349
Lambdys 0:4311d41c5fbc 350 if(!abeilles) reine=0;
Lambdys 0:4311d41c5fbc 351
Lambdys 0:4311d41c5fbc 352 if(DEBUG)pc.printf("2a.Mesure masse en cours...\n", masse);
Lambdys 0:4311d41c5fbc 353
Lambdys 0:4311d41c5fbc 354 masse_valeur_moyenne = Balance.averageValue(100);
Lambdys 0:4311d41c5fbc 355 //tare = 8441392
Lambdys 0:4311d41c5fbc 356 // printf("value: %ld\r\n",a - 8441392);
Lambdys 0:4311d41c5fbc 357 //avec tare: 0 = 0kg, 42381 = 2kg
Lambdys 0:4311d41c5fbc 358 masse_valeur = ( masse_valeur_moyenne - 8441392.0);//Tare
Lambdys 0:4311d41c5fbc 359 // printf("value: %ld\r\n",valeur);
Lambdys 0:4311d41c5fbc 360
Lambdys 0:4311d41c5fbc 361 masse =(float) masse_valeur*2.113/42381.0;
Lambdys 0:4311d41c5fbc 362
Lambdys 0:4311d41c5fbc 363 if(masse>=10.0) cadre_9_10=1;//presence_ruche
Lambdys 0:4311d41c5fbc 364 //masse = ((int) masse * 100) / 100;
Lambdys 0:4311d41c5fbc 365 //2.113 = from balance précise
Lambdys 0:4311d41c5fbc 366
Lambdys 0:4311d41c5fbc 367 if(debug)pc.printf("[Masse] %f kg\n", masse);
Lambdys 0:4311d41c5fbc 368
Lambdys 0:4311d41c5fbc 369 if(DEBUG)pc.printf("3b.Analyse FFT cours...\n");
Lambdys 0:4311d41c5fbc 370
Lambdys 0:4311d41c5fbc 371 /*---- Début FFT*/
Lambdys 0:4311d41c5fbc 372
Lambdys 0:4311d41c5fbc 373 for(FFT_compt=0;FFT_compt<FFT_SIZE+1;FFT_compt++)
Lambdys 0:4311d41c5fbc 374 {
Lambdys 0:4311d41c5fbc 375 signal_reel[FFT_compt]=analog_FFT.read();
Lambdys 0:4311d41c5fbc 376 }
Lambdys 0:4311d41c5fbc 377
Lambdys 0:4311d41c5fbc 378
Lambdys 0:4311d41c5fbc 379 //printf("Fréquence échantillonage : %f\n", Fe);
Lambdys 0:4311d41c5fbc 380
Lambdys 0:4311d41c5fbc 381 /*Dérivée du signal d'entrée (dérivée avant) */
Lambdys 0:4311d41c5fbc 382 for(FFT_compt=0;FFT_compt<FFT_SIZE;FFT_compt++)
Lambdys 0:4311d41c5fbc 383 {
Lambdys 0:4311d41c5fbc 384 signal_reelDiff[FFT_compt]=(signal_reel[FFT_compt+1]-signal_reel[FFT_compt])/Te;
Lambdys 0:4311d41c5fbc 385 //printf("derivee = %f\n",signal_reelDiff[FFT_compt]);
Lambdys 0:4311d41c5fbc 386 }
Lambdys 0:4311d41c5fbc 387
Lambdys 0:4311d41c5fbc 388 /*remplissage paire (reel), partie imaginaire nulle*/
Lambdys 0:4311d41c5fbc 389 for(FFT_compt=0;FFT_compt<FFT_SIZE;FFT_compt++)
Lambdys 0:4311d41c5fbc 390 {
Lambdys 0:4311d41c5fbc 391 FFT_in[FFT_compt*2]=signal_reelDiff[FFT_compt];
Lambdys 0:4311d41c5fbc 392 FFT_in[FFT_compt*2+1]=0;
Lambdys 0:4311d41c5fbc 393 }
Lambdys 0:4311d41c5fbc 394
Lambdys 0:4311d41c5fbc 395 /* Process the data through the CFFT/CIFFT module */
Lambdys 0:4311d41c5fbc 396 arm_cfft_f32(&arm_cfft_sR_f32_len1024, FFT_in, ifftFlag, doBitReverse);
Lambdys 0:4311d41c5fbc 397
Lambdys 0:4311d41c5fbc 398 /* Process the data through the Complex Magnitude Module for
Lambdys 0:4311d41c5fbc 399 calculating the magnitude at each bin */
Lambdys 0:4311d41c5fbc 400 arm_cmplx_mag_f32(FFT_in, FFT_out, FFT_SIZE);
Lambdys 0:4311d41c5fbc 401
Lambdys 0:4311d41c5fbc 402 /* Suppression des fréqquences situées entre Fe/2 et Fe */
Lambdys 0:4311d41c5fbc 403 for(FFT_compt=FFT_SIZE/2;FFT_compt<FFT_SIZE;FFT_compt++)
Lambdys 0:4311d41c5fbc 404 {
Lambdys 0:4311d41c5fbc 405 FFT_out[FFT_compt]=0;
Lambdys 0:4311d41c5fbc 406 }
Lambdys 0:4311d41c5fbc 407
Lambdys 0:4311d41c5fbc 408 /* Calcul la valeur max dans la liste FFT_out, index = frequence et le contenu c'est l'amplitude */
Lambdys 0:4311d41c5fbc 409 arm_max_f32(FFT_out, FFT_SIZE, &maxValue, &testIndex);
Lambdys 0:4311d41c5fbc 410
Lambdys 0:4311d41c5fbc 411 fmax=testIndex*Fe/FFT_SIZE;
Lambdys 0:4311d41c5fbc 412 //Calcul de la moyenne des amplitude
Lambdys 0:4311d41c5fbc 413
Lambdys 0:4311d41c5fbc 414 for (int z=0; z<1024;z++)
Lambdys 0:4311d41c5fbc 415 {
Lambdys 0:4311d41c5fbc 416 moyenneAmp=moyenneAmp+FFT_out[z];
Lambdys 0:4311d41c5fbc 417 }
Lambdys 0:4311d41c5fbc 418
Lambdys 0:4311d41c5fbc 419 moyenneNorm=moyenneAmp/1024;
Lambdys 0:4311d41c5fbc 420
Lambdys 0:4311d41c5fbc 421 if(DEBUG)
Lambdys 0:4311d41c5fbc 422 {
Lambdys 0:4311d41c5fbc 423 pc.printf("[FFT]moyenne amplitude = %d\n",moyenneNorm);
Lambdys 0:4311d41c5fbc 424 pc.printf("[FFT]premier quartile = %.2e\n",FFT_out[256]);
Lambdys 0:4311d41c5fbc 425 }
Lambdys 0:4311d41c5fbc 426
Lambdys 0:4311d41c5fbc 427 if (FFT_out[256] > 400)
Lambdys 0:4311d41c5fbc 428 {
Lambdys 0:4311d41c5fbc 429 if (moyenneNorm > 600) reine = 0;
Lambdys 0:4311d41c5fbc 430 stress = 1;
Lambdys 0:4311d41c5fbc 431 }
Lambdys 0:4311d41c5fbc 432
Lambdys 0:4311d41c5fbc 433 for (int q= 0; q<77;q++)//Entre 200Hz et 550Hz
Lambdys 0:4311d41c5fbc 434 {
Lambdys 0:4311d41c5fbc 435 moyEss=moyEss+FFT_out[51+q];
Lambdys 0:4311d41c5fbc 436 }
Lambdys 0:4311d41c5fbc 437
Lambdys 0:4311d41c5fbc 438 moyEss=moyEss/77;
Lambdys 0:4311d41c5fbc 439
Lambdys 0:4311d41c5fbc 440 if ((moyEss > 300)&&(moyenneNorm <600)) essaimage=1;
Lambdys 0:4311d41c5fbc 441
Lambdys 0:4311d41c5fbc 442 moyEss=0;
Lambdys 0:4311d41c5fbc 443
Lambdys 0:4311d41c5fbc 444 moyenneAmp=0;
Lambdys 0:4311d41c5fbc 445 moyenneNorm=0;
Lambdys 0:4311d41c5fbc 446
Lambdys 0:4311d41c5fbc 447 cadre_8 = reine;
Lambdys 0:4311d41c5fbc 448 reine = 1;//sinon crash tx
Lambdys 0:4311d41c5fbc 449
Lambdys 0:4311d41c5fbc 450 /*---- Fin FFT*/
Lambdys 0:4311d41c5fbc 451
Lambdys 0:4311d41c5fbc 452 if(DEBUG)pc.printf("[Son] reine = %\n",reine);
Lambdys 0:4311d41c5fbc 453 if(DEBUG)pc.printf("[Son] essaimage = %d\n",essaimage);
Lambdys 0:4311d41c5fbc 454 if(DEBUG)pc.printf("[Son] stress = %d\n",stress);
Lambdys 0:4311d41c5fbc 455
Lambdys 0:4311d41c5fbc 456 if(DEBUG)pc.printf("4a.mesures diverses%\n");
Lambdys 0:4311d41c5fbc 457 humidity = sht.readHumidity();
Lambdys 0:4311d41c5fbc 458 if(DEBUG)pc.printf("[Humidite] %f HR\n",humidity);
Lambdys 0:4311d41c5fbc 459
Lambdys 0:4311d41c5fbc 460 battery_read = analog_battery.read();
Lambdys 0:4311d41c5fbc 461
Lambdys 0:4311d41c5fbc 462 battery = 67.;// défaillance
Lambdys 0:4311d41c5fbc 463
Lambdys 0:4311d41c5fbc 464 if(battery_read >= 0.798) battery = 100.; //4,1 V, 100%
Lambdys 0:4311d41c5fbc 465 else if(battery_read >= 0.773) battery = 97.;//3.97 V, 90%
Lambdys 0:4311d41c5fbc 466 else if(battery_read >= 0.764) battery = 94.;//3.92 V, 80%
Lambdys 0:4311d41c5fbc 467 else if(battery_read >= 0.754) battery = 91.;//3.87 V, 70%
Lambdys 0:4311d41c5fbc 468 else if(battery_read >= 0.747) battery = 88.;//3.83 V, 60%
Lambdys 0:4311d41c5fbc 469 else if(battery_read >= 0.739) battery = 85.;//3.79 V, 50%
Lambdys 0:4311d41c5fbc 470 else if(battery_read >= 0.731) battery = 82.;//3.75 V, 40%
Lambdys 0:4311d41c5fbc 471 else if(battery_read >= 0.722) battery = 79.;//3.70 V, 30%
Lambdys 0:4311d41c5fbc 472 else if(battery_read >= 0.700) battery = 76.;//3.60 V, 20%
Lambdys 0:4311d41c5fbc 473 else if(battery_read >= 0.660) battery = 73.;//3.30 V, 10%
Lambdys 0:4311d41c5fbc 474 else if(battery_read >= 0.550) battery = 70.;//2.80 V, 0%
Lambdys 0:4311d41c5fbc 475
Lambdys 0:4311d41c5fbc 476 if(debug)
Lambdys 0:4311d41c5fbc 477 {
Lambdys 0:4311d41c5fbc 478 if(battery_read >= 0.798) pc.printf("[Batterie] 100 / 100\n"); //4,1 V, 100%
Lambdys 0:4311d41c5fbc 479 else if(battery_read >= 0.773) pc.printf("[Batterie] 90 / 100\n");//3.97 V, 90%
Lambdys 0:4311d41c5fbc 480 else if(battery_read >= 0.764) pc.printf("[Batterie] 80 / 100\n");//3.92 V, 80%
Lambdys 0:4311d41c5fbc 481 else if(battery_read >= 0.754) pc.printf("[Batterie] 70 / 100\n");//3.87 V, 70%
Lambdys 0:4311d41c5fbc 482 else if(battery_read >= 0.747) pc.printf("[Batterie] 60 / 100\n");//3.83 V, 60%
Lambdys 0:4311d41c5fbc 483 else if(battery_read >= 0.739) pc.printf("[Batterie] 50 / 100\n");//3.79 V, 50%
Lambdys 0:4311d41c5fbc 484 else if(battery_read >= 0.731) pc.printf("[Batterie] 40 / 100\n");//3.75 V, 40%
Lambdys 0:4311d41c5fbc 485 else if(battery_read >= 0.722) pc.printf("[Batterie] 30 / 100\n");//3.70 V, 30%
Lambdys 0:4311d41c5fbc 486 else if(battery_read >= 0.700) pc.printf("[Batterie] 20 / 100\n");//3.60 V, 20%
Lambdys 0:4311d41c5fbc 487 else if(battery_read >= 0.660) pc.printf("[Batterie] 10 / 100\n");//3.30 V, 10%
Lambdys 0:4311d41c5fbc 488 else if(battery_read >= 0.550) pc.printf("[Batterie] 0 / 100\n");//2.80 V, 0%
Lambdys 0:4311d41c5fbc 489 else pc.printf("[Batterie] DEFAILLANCE / DEBRANCHEE\n");
Lambdys 0:4311d41c5fbc 490 }
Lambdys 0:4311d41c5fbc 491
Lambdys 0:4311d41c5fbc 492 luminosity_read = analog_luminosity.read();
Lambdys 0:4311d41c5fbc 493 luminosity_read *=10.; //max 10 V
Lambdys 0:4311d41c5fbc 494
Lambdys 0:4311d41c5fbc 495 //attention luminosity peut faire crash TX */
Lambdys 0:4311d41c5fbc 496 luminosity = 2; //nuit
Lambdys 0:4311d41c5fbc 497
Lambdys 0:4311d41c5fbc 498 if(luminosity_read >= 5) luminosity = 7;
Lambdys 0:4311d41c5fbc 499 else if(luminosity_read >= 4) luminosity = 6;
Lambdys 0:4311d41c5fbc 500 else if(luminosity_read >= 3) luminosity = 5;
Lambdys 0:4311d41c5fbc 501 else if(luminosity_read >= 2) luminosity = 4;//tres lumineux
Lambdys 0:4311d41c5fbc 502 else if(luminosity_read >= 1) luminosity = 3;//dangereux pour lipo rider pro si cellule solaire > 5 V
Lambdys 0:4311d41c5fbc 503
Lambdys 0:4311d41c5fbc 504 if(DEBUG)pc.printf("[Luminosite] raw = %f / 10 \n",luminosity_read);
Lambdys 0:4311d41c5fbc 505 if(DEBUG)pc.printf("[Luminosite] %d / 5 \n",luminosity-2);
Lambdys 0:4311d41c5fbc 506
Lambdys 0:4311d41c5fbc 507 if(DEBUG)pc.printf("4b.mesure de la vitesse du vent...\n");
Lambdys 0:4311d41c5fbc 508
Lambdys 0:4311d41c5fbc 509 /* test luminosity */
Lambdys 0:4311d41c5fbc 510 /*
Lambdys 0:4311d41c5fbc 511 while(1)
Lambdys 0:4311d41c5fbc 512 {
Lambdys 0:4311d41c5fbc 513 luminosity_read = analog_luminosity.read();
Lambdys 0:4311d41c5fbc 514 luminosity_read *=10.;
Lambdys 0:4311d41c5fbc 515 if(DEBUG)pc.printf("[Luminosite] raw = %f / 1 \n",luminosity_read);
Lambdys 0:4311d41c5fbc 516
Lambdys 0:4311d41c5fbc 517 luminosity = 2; //nuit
Lambdys 0:4311d41c5fbc 518 if(luminosity_read >= 5) luminosity = 7;
Lambdys 0:4311d41c5fbc 519 else if(luminosity_read >= 4) luminosity = 6;
Lambdys 0:4311d41c5fbc 520 else if(luminosity_read >= 3) luminosity = 5;
Lambdys 0:4311d41c5fbc 521 else if(luminosity_read >= 2) luminosity = 4;//tres lumineux
Lambdys 0:4311d41c5fbc 522 else if(luminosity_read >= 1) luminosity = 3;//dangereux pour lipo rider pro si cellule solaire > 5 V
Lambdys 0:4311d41c5fbc 523
Lambdys 0:4311d41c5fbc 524 if(DEBUG)pc.printf("[Luminosite] %d / 5 \n",luminosity-2);
Lambdys 0:4311d41c5fbc 525 wait(1);
Lambdys 0:4311d41c5fbc 526 }
Lambdys 0:4311d41c5fbc 527 */
Lambdys 0:4311d41c5fbc 528
Lambdys 0:4311d41c5fbc 529 cpt_anemo=0;
Lambdys 0:4311d41c5fbc 530 anemo.enable_irq();
Lambdys 0:4311d41c5fbc 531 wait(2);
Lambdys 0:4311d41c5fbc 532 anemo.disable_irq();
Lambdys 0:4311d41c5fbc 533 //un contact par seconde est égal à une vitesse du vent de 2,4 km/h
Lambdys 0:4311d41c5fbc 534 //un contact par 2 secondes est égal à une vitesse du vent de 1,2 km/h
Lambdys 0:4311d41c5fbc 535
Lambdys 0:4311d41c5fbc 536 force_vent = cpt_anemo*1.2;
Lambdys 0:4311d41c5fbc 537
Lambdys 0:4311d41c5fbc 538 if(DEBUG)pc.printf("[Anemometre] vitesse du vent = %f km/h \n",force_vent);
Lambdys 0:4311d41c5fbc 539
Lambdys 0:4311d41c5fbc 540
Lambdys 0:4311d41c5fbc 541
Lambdys 0:4311d41c5fbc 542
Lambdys 0:4311d41c5fbc 543 unsigned char field[SIZE];
Lambdys 0:4311d41c5fbc 544 Frame frame ;
Lambdys 0:4311d41c5fbc 545 //for(;;){
Lambdys 0:4311d41c5fbc 546
Lambdys 0:4311d41c5fbc 547 //temp_int=-255.;
Lambdys 0:4311d41c5fbc 548
Lambdys 0:4311d41c5fbc 549 //masse=997;
Lambdys 0:4311d41c5fbc 550
Lambdys 0:4311d41c5fbc 551 MEAS_ENABLE = 0;//mode SigFox
Lambdys 0:4311d41c5fbc 552 new_frame(&frame,field);
Lambdys 0:4311d41c5fbc 553 stock_temp(&frame,temp_ext);
Lambdys 0:4311d41c5fbc 554 stock_temp(&frame,temp_int);
Lambdys 0:4311d41c5fbc 555 stock_int(luminosity,4,&frame);
Lambdys 0:4311d41c5fbc 556 stock_masse(&frame, masse);
Lambdys 0:4311d41c5fbc 557 stock_vent(&frame,force_vent);
Lambdys 0:4311d41c5fbc 558 stock_battery(&frame,battery);
Lambdys 0:4311d41c5fbc 559 stock_humidity(&frame,humidity);
Lambdys 0:4311d41c5fbc 560 stock_bit(cadre_1_2,&frame);//non utilisé mais crash si 0!
Lambdys 0:4311d41c5fbc 561 stock_bit(cadre_3, &frame);
Lambdys 0:4311d41c5fbc 562 stock_bit(cadre_4,&frame);
Lambdys 0:4311d41c5fbc 563 stock_bit(cadre_5,&frame);
Lambdys 0:4311d41c5fbc 564 stock_bit(cadre_6,&frame);
Lambdys 0:4311d41c5fbc 565 stock_bit(cadre_7,&frame);
Lambdys 0:4311d41c5fbc 566 stock_bit(cadre_8,&frame);//remplacer par reine
Lambdys 0:4311d41c5fbc 567 stock_bit(cadre_9_10,&frame);//remplacer par presence_ruche;
Lambdys 0:4311d41c5fbc 568 stock_bit(stress,&frame);
Lambdys 0:4311d41c5fbc 569 stock_bit(reine,&frame);
Lambdys 0:4311d41c5fbc 570 stock_bit(essaimage,&frame);
Lambdys 0:4311d41c5fbc 571 stock_bit(abeilles,&frame);
Lambdys 0:4311d41c5fbc 572 validate_frame(&frame);
Lambdys 0:4311d41c5fbc 573 print_frame(&frame);
Lambdys 0:4311d41c5fbc 574 send_frame(&frame);
Lambdys 0:4311d41c5fbc 575 wait(8); //15 * 60 secondes = 15 minutes d'intervalle
Lambdys 0:4311d41c5fbc 576 TPL5110_DONE=1;
Lambdys 0:4311d41c5fbc 577
Lambdys 0:4311d41c5fbc 578 wait(600);
Lambdys 0:4311d41c5fbc 579 //}
Lambdys 0:4311d41c5fbc 580 //return EXIT_SUCCESS;
Lambdys 0:4311d41c5fbc 581 }