Program retrieving data from several modules (communicating in uart and I2C), processing the data and sending it to a HMI via a Bluetooth module

Dependencies:   mbed BufferedSerial

Committer:
simon11111
Date:
Tue Jun 21 14:06:44 2022 +0000
Revision:
1:1bd2e5035a22
Parent:
0:2cf3673a2f83

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon11111 0:2cf3673a2f83 1 /*
simon11111 0:2cf3673a2f83 2 Projet du drone instrumenté compportant un GPS et un capteur de température/humidité, un gyroscope et un module Bluetooth
simon11111 0:2cf3673a2f83 3
simon11111 0:2cf3673a2f83 4 */
simon11111 0:2cf3673a2f83 5 #include <iostream>
simon11111 0:2cf3673a2f83 6 #include "mbed.h"
simon11111 0:2cf3673a2f83 7 #include "BufferedSerial.h"
simon11111 0:2cf3673a2f83 8 #include "Dht11.h"
simon11111 0:2cf3673a2f83 9 #include "LSM6DS33.h"
simon11111 0:2cf3673a2f83 10
simon11111 0:2cf3673a2f83 11 Serial BT(PA_9, PA_10, 9600);
simon11111 0:2cf3673a2f83 12 //Serial GPS(PA_2, PA_3, 9600);
simon11111 0:2cf3673a2f83 13 I2C i2c(PB_7,PB_6);
simon11111 0:2cf3673a2f83 14
simon11111 0:2cf3673a2f83 15 Dht11 sensor(PB_1);
simon11111 0:2cf3673a2f83 16 LSM6DS33 acc = LSM6DS33(PB_7, PB_6);
simon11111 0:2cf3673a2f83 17
simon11111 0:2cf3673a2f83 18 int main()
simon11111 0:2cf3673a2f83 19 {
simon11111 0:2cf3673a2f83 20 uint8_t tab[100];
simon11111 0:2cf3673a2f83 21 char latitude[9],longitude[10]; //latitude == l / longitude == L
simon11111 0:2cf3673a2f83 22 int Te, Hu;
simon11111 0:2cf3673a2f83 23 char buff[50], TH[6];
simon11111 0:2cf3673a2f83 24 char tab2[5]; //tableau vérification id trame GPS
simon11111 0:2cf3673a2f83 25 int i=0;
simon11111 0:2cf3673a2f83 26 float axx,ayy,azz,gxx,gyy,gzz; //variables gyroscope
simon11111 0:2cf3673a2f83 27
simon11111 0:2cf3673a2f83 28 acc.begin(LSM6DS33::G_SCALE_245DPS, LSM6DS33::A_SCALE_2G, LSM6DS33::G_ODR_1660, LSM6DS33::A_ODR_6660); //Init gyroscope
simon11111 0:2cf3673a2f83 29
simon11111 0:2cf3673a2f83 30 //BT.printf("Hello World\n\r");
simon11111 0:2cf3673a2f83 31
simon11111 0:2cf3673a2f83 32 while(1) {
simon11111 0:2cf3673a2f83 33
simon11111 0:2cf3673a2f83 34 if( BT.getc() == '$') { //condition attente début de trame
simon11111 0:2cf3673a2f83 35 for(i = 0; (i< 5) ; i++) { //stocke l'ID de la trame reçue
simon11111 0:2cf3673a2f83 36 tab2[i] = BT.getc();
simon11111 0:2cf3673a2f83 37 }
simon11111 0:2cf3673a2f83 38 if( (tab2[0]=='G') && (tab2[1]=='P') && (tab2[2]=='R') && (tab2[3]=='M') && (tab2[4]=='C') ) { //Compare si c'est la trame attendue
simon11111 0:2cf3673a2f83 39 for(i = 1; (i< 40) ; i++) { //stockage de la trame dans un tableau temp
simon11111 0:2cf3673a2f83 40 tab[i] = BT.getc();
simon11111 0:2cf3673a2f83 41 }
simon11111 0:2cf3673a2f83 42 for(i = 0; (i< 9) ; i++) { //Extraction de la latitude latitude dans un tableau
simon11111 0:2cf3673a2f83 43 latitude[i] = tab[i + 15];
simon11111 0:2cf3673a2f83 44 }
simon11111 0:2cf3673a2f83 45 for(i = 0; (i< 10) ; i++) { //Extraction de la latitude longitude dans un tableau
simon11111 0:2cf3673a2f83 46 longitude[i] = tab[i + 27];
simon11111 0:2cf3673a2f83 47 }
simon11111 0:2cf3673a2f83 48 }
simon11111 0:2cf3673a2f83 49 //récupération données température et humidité
simon11111 0:2cf3673a2f83 50 sensor.read();
simon11111 0:2cf3673a2f83 51 Te = sensor.getCelsius();
simon11111 0:2cf3673a2f83 52 Hu = sensor.getHumidity();
simon11111 0:2cf3673a2f83 53
simon11111 0:2cf3673a2f83 54 //récupération données gyroscope et accéléromètre
simon11111 0:2cf3673a2f83 55 acc.readAll();
simon11111 0:2cf3673a2f83 56
simon11111 0:2cf3673a2f83 57 acc.readAccel();
simon11111 0:2cf3673a2f83 58 axx = acc.ax; //gyro en x
simon11111 0:2cf3673a2f83 59 ayy = acc.ay; //gyro en y
simon11111 0:2cf3673a2f83 60 azz = acc.az; //gyro en z
simon11111 0:2cf3673a2f83 61
simon11111 0:2cf3673a2f83 62 acc.readGyro();
simon11111 0:2cf3673a2f83 63 gxx = acc.gx; //acceleration en x
simon11111 0:2cf3673a2f83 64 gyy = acc.gy; //acceleration en y
simon11111 0:2cf3673a2f83 65 gzz = acc.gz; //acceleration en z
simon11111 0:2cf3673a2f83 66
simon11111 0:2cf3673a2f83 67 //Concatenation des données en un string
simon11111 0:2cf3673a2f83 68 sprintf(TH,"T%dH%d\n",Te,Hu);
simon11111 0:2cf3673a2f83 69 strcat(buff,"l");
simon11111 0:2cf3673a2f83 70 strcat(buff,latitude);
simon11111 0:2cf3673a2f83 71 strcat(buff,"L");
simon11111 0:2cf3673a2f83 72 strcat(buff,longitude);
simon11111 0:2cf3673a2f83 73 strcat(buff,TH);
simon11111 0:2cf3673a2f83 74
simon11111 0:2cf3673a2f83 75 BT.puts(buff); //Envoi du string en Bluetooth
simon11111 0:2cf3673a2f83 76
simon11111 0:2cf3673a2f83 77 for(i = 0; i < 50; i++) {
simon11111 0:2cf3673a2f83 78 buff[i] = '\0';
simon11111 0:2cf3673a2f83 79 }
simon11111 0:2cf3673a2f83 80 wait(5);
simon11111 0:2cf3673a2f83 81 }
simon11111 0:2cf3673a2f83 82 }
simon11111 0:2cf3673a2f83 83 }