IMU-pressure-tempreture sensors

Dependencies:   CMSIS_DSP_401 DHT22 MPU9150_DMP QuaternionMath MODSERIAL mbed-src FATFileSystem111 SDFileSystem11 Camera_LS_Y201_CANSAT

Dependents:   combined_F

Committer:
Hagrass
Date:
Fri Aug 07 14:26:52 2015 +0000
Revision:
0:5f608863559a
Child:
1:339ebc8786ca
CANSAT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Hagrass 0:5f608863559a 1 #include "MPU9150.h"
Hagrass 0:5f608863559a 2 #include "Quaternion.h"
Hagrass 0:5f608863559a 3 #include "BMP085.h"
Hagrass 0:5f608863559a 4 #include "DHT22.h"
Hagrass 0:5f608863559a 5 DHT22 dht22(p23);
Hagrass 0:5f608863559a 6 BMP085 bmp085(p28, p27,BMP085_oss8);
Hagrass 0:5f608863559a 7
Hagrass 0:5f608863559a 8 DigitalOut myled(LED1);
Hagrass 0:5f608863559a 9
Hagrass 0:5f608863559a 10 Serial debug(USBTX, USBRX);
Hagrass 0:5f608863559a 11 MPU9150 imu(p27, p28, p15);
Hagrass 0:5f608863559a 12
Hagrass 0:5f608863559a 13 DigitalOut led(LED1);
Hagrass 0:5f608863559a 14
Hagrass 0:5f608863559a 15 char buffer[200];
Hagrass 0:5f608863559a 16
Hagrass 0:5f608863559a 17 int main(){
Hagrass 0:5f608863559a 18
Hagrass 0:5f608863559a 19
Hagrass 0:5f608863559a 20 debug.baud(115200);
Hagrass 0:5f608863559a 21
Hagrass 0:5f608863559a 22 if(imu.isReady()){
Hagrass 0:5f608863559a 23 debug.printf("MPU9150 is ready\r\n");
Hagrass 0:5f608863559a 24 } else {
Hagrass 0:5f608863559a 25 debug.printf("MPU9150 initialisation failure\r\n");
Hagrass 0:5f608863559a 26 }
Hagrass 0:5f608863559a 27
Hagrass 0:5f608863559a 28 imu.initialiseDMP();
Hagrass 0:5f608863559a 29
Hagrass 0:5f608863559a 30 Timer timer;
Hagrass 0:5f608863559a 31 timer.start();
Hagrass 0:5f608863559a 32
Hagrass 0:5f608863559a 33 imu.setFifoReset(true);
Hagrass 0:5f608863559a 34 imu.setDMPEnabled(true);
Hagrass 0:5f608863559a 35
Hagrass 0:5f608863559a 36 Quaternion q1;
Hagrass 0:5f608863559a 37 float hum,temp;
Hagrass 0:5f608863559a 38
Hagrass 0:5f608863559a 39 while(true){
Hagrass 0:5f608863559a 40 wait(0.5);
Hagrass 0:5f608863559a 41 bmp085.update();
Hagrass 0:5f608863559a 42 float altitude=bmp085.calcAltitude(bmp085.get_pressure()*100);
Hagrass 0:5f608863559a 43 //wait(0.2);
Hagrass 0:5f608863559a 44 dht22.sample() ;
Hagrass 0:5f608863559a 45 hum=dht22.getHumidity()/10.0;
Hagrass 0:5f608863559a 46 temp=dht22.getTemperature()/10.0;
Hagrass 0:5f608863559a 47
Hagrass 0:5f608863559a 48
Hagrass 0:5f608863559a 49 if(imu.getFifoCount() >= 48){
Hagrass 0:5f608863559a 50 imu.getFifoBuffer(buffer, 48);
Hagrass 0:5f608863559a 51 led = !led;
Hagrass 0:5f608863559a 52 }
Hagrass 0:5f608863559a 53 // debug.printf("vcvssgsgf");
Hagrass 0:5f608863559a 54 if(timer.read_ms() >50){
Hagrass 0:5f608863559a 55 timer.reset();
Hagrass 0:5f608863559a 56
Hagrass 0:5f608863559a 57 //This is the format of the data in the fifo,
Hagrass 0:5f608863559a 58 /* ================================================================================================ *
Hagrass 0:5f608863559a 59 | Default MotionApps v4.1 48-byte FIFO packet structure: |
Hagrass 0:5f608863559a 60 | |
Hagrass 0:5f608863559a 61 | [QUAT W][ ][QUAT X][ ][QUAT Y][ ][QUAT Z][ ][GYRO X][ ][GYRO Y][ ] |
Hagrass 0:5f608863559a 62 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Hagrass 0:5f608863559a 63 | |
Hagrass 0:5f608863559a 64 | [GYRO Z][ ][MAG X ][MAG Y ][MAG Z ][ACC X ][ ][ACC Y ][ ][ACC Z ][ ][ ] |
Hagrass 0:5f608863559a 65 | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
Hagrass 0:5f608863559a 66 * ================================================================================================ */
Hagrass 0:5f608863559a 67
Hagrass 0:5f608863559a 68 /*
Hagrass 0:5f608863559a 69 debug.printf("%d, %d, %d\r\n", (int32_t)(((int32_t)buffer[34] << 24) + ((int32_t)buffer[35] << 16) + ((int32_t)buffer[36] << 8) + (int32_t)buffer[37]),
Hagrass 0:5f608863559a 70 (int32_t)(((int32_t)buffer[38] << 24) + ((int32_t)buffer[39] << 16) + ((int32_t)buffer[40] << 8) + (int32_t)buffer[41]),
Hagrass 0:5f608863559a 71 (int32_t)(((int32_t)buffer[42] << 24) + ((int32_t)buffer[43] << 16) + ((int32_t)buffer[44] << 8) + (int32_t)buffer[45]));
Hagrass 0:5f608863559a 72
Hagrass 0:5f608863559a 73 debug.printf("%d, %d, %d\r\n", (int32_t)(((int32_t)buffer[16] << 24) + ((int32_t)buffer[17] << 16) + ((int32_t)buffer[18] << 8) + (int32_t)buffer[19]),
Hagrass 0:5f608863559a 74 (int32_t)(((int32_t)buffer[20] << 24) + ((int32_t)buffer[21] << 16) + ((int32_t)buffer[22] << 8) + (int32_t)buffer[23]),
Hagrass 0:5f608863559a 75 (int32_t)(((int32_t)buffer[24] << 24) + ((int32_t)buffer[25] << 16) + ((int32_t)buffer[26] << 8) + (int32_t)buffer[27]));
Hagrass 0:5f608863559a 76
Hagrass 0:5f608863559a 77 debug.printf("%d, %d, %d\r\n", (int16_t)(buffer[29] << 8) + buffer[28],
Hagrass 0:5f608863559a 78 (int16_t)(buffer[31] << 8) + buffer[30],
Hagrass 0:5f608863559a 79 (int16_t)(buffer[33] << 8) + buffer[32]);
Hagrass 0:5f608863559a 80
Hagrass 0:5f608863559a 81 debug.printf("%f, %f, %f, %f\r\n",
Hagrass 0:5f608863559a 82 (float)((((int32_t)buffer[0] << 24) + ((int32_t)buffer[1] << 16) + ((int32_t)buffer[2] << 8) + buffer[3]))* (1.0 / (1<<30)),
Hagrass 0:5f608863559a 83 (float)((((int32_t)buffer[4] << 24) + ((int32_t)buffer[5] << 16) + ((int32_t)buffer[6] << 8) + buffer[7]))* (1.0 / (1<<30)),
Hagrass 0:5f608863559a 84 (float)((((int32_t)buffer[8] << 24) + ((int32_t)buffer[9] << 16) + ((int32_t)buffer[10] << 8) + buffer[11]))* (1.0 / (1<<30)),
Hagrass 0:5f608863559a 85 (float)((((int32_t)buffer[12] << 24) + ((int32_t)buffer[13] << 16) + ((int32_t)buffer[14] << 8) + buffer[15]))* (1.0 / (1<<30)));
Hagrass 0:5f608863559a 86 */
Hagrass 0:5f608863559a 87
Hagrass 0:5f608863559a 88 q1.decode(buffer);
Hagrass 0:5f608863559a 89 debug.printf("w:%f, v.x:%f, v.y:%f, v.z:%f\r\n", q1.w, q1.v.x, q1.v.y, q1.v.z);
Hagrass 0:5f608863559a 90
Hagrass 0:5f608863559a 91 debug.printf("p:%f hPa / t:%f / altitude=%f \n\r",bmp085.get_pressure() , bmp085.get_temperature(),altitude);
Hagrass 0:5f608863559a 92
Hagrass 0:5f608863559a 93
Hagrass 0:5f608863559a 94 debug.printf("temp: %f , hum:%f \n\r\n\n",temp,hum);
Hagrass 0:5f608863559a 95 imu.setFifoReset(true);
Hagrass 0:5f608863559a 96 imu.setDMPEnabled(true);
Hagrass 0:5f608863559a 97
Hagrass 0:5f608863559a 98 //TeaPot Demo Packet for MotionFit SDK
Hagrass 0:5f608863559a 99 /*
Hagrass 0:5f608863559a 100 debug.putc('$'); //packet start
Hagrass 0:5f608863559a 101 debug.putc((char)2); //assume packet type constant
Hagrass 0:5f608863559a 102 debug.putc((char)0); //count seems unused
Hagrass 0:5f608863559a 103 for(int i = 0; i < 16; i++){ //16 bytes for 4 32bit floats
Hagrass 0:5f608863559a 104 debug.putc((char)(buffer[i]));
Hagrass 0:5f608863559a 105 }
Hagrass 0:5f608863559a 106 for(int i = 0; i < 5; i++){ //no idea, padded with 0
Hagrass 0:5f608863559a 107 debug.putc((char)0);
Hagrass 0:5f608863559a 108 }
Hagrass 0:5f608863559a 109 */
Hagrass 0:5f608863559a 110 }
Hagrass 0:5f608863559a 111 //wait(1);
Hagrass 0:5f608863559a 112 //e++;
Hagrass 0:5f608863559a 113 }
Hagrass 0:5f608863559a 114 }