Cubesat V1.0 2016 Código mbed que envía datos
Dependencies: Adafruit_RTCLib BMP180 JPEGCamera L3GD20 LSM303DLHC SDFileSystem mbed
main.cpp
- Committer:
- NilliM
- Date:
- 2016-05-27
- Revision:
- 0:8e2b7a69ffda
File content as of revision 0:8e2b7a69ffda:
#include "SDFileSystem.h" #include "JPEGCamera.h" #include "L3GD20.h" #include "LSM303DLHC.h" #include "BMP180.h" #include<stdio.h> #include<string.h> #include "mbed.h" #include <math.h> //Puertos serial Serial pc(USBTX,USBRX); Serial mm(p28,p27); //Sensores I2C myI2C(p9,p10); L3GD20 gyro(p9, p10); LSM303DLHC compass(p9, p10); BMP180 bmp180(&myI2C); //IMU AnalogIn uv(p16); //Uv AnalogIn alc(p17); //Alcohol AnalogIn met(p18);//metano AnalogIn lpg(p19);//lpg AnalogIn Vol(p20); //Voltaje //Camara JPEGCamera camera(p13, p14); // TX, RX //SD SDFileSystem sd(p5, p6, p7, p8, "sd"); #define archivof "/sd/fotos/pic%05d.jpg"; #define archivod "/sd/datos/dato%05d.txt"; //Variables float uv_rad=0; //UV float ax, ay, az; float mx, my, mz; float gx, gy, gz; double yaw,pitch,roll; int press; float temp;//IMU float voltaje; //Voltaje float calc;//Alcohol float cmet;//metano float clpg;//Lpg int conta; #define M_PI 3.14159265358979323846 int main() { mm.baud(9600); //Camara LocalFileSystem local("local"); //save images on mbed Timer timer; timer.start(); camera.setPictureSize(JPEGCamera::SIZE320x240); conta=0; mkdir("/sd/fotos", 0777); mkdir("/sd/datos", 0777); while(1) { conta+= 1; //UV uv_rad=((uv.read()*3.3)-1)/0.125; if(uv_rad<0)uv_rad=0; //Voltaje voltaje=(Vol.read()*3.3)/(.2423); //GASES //Alcohol calc=(alc.read()*3.3); //Metano cmet=(met.read()*3.3); //Lpg clpg=(lpg.read()*3.3); //IMU bmp180.init(); compass.read(&ax, &ay, &az, &mx, &my, &mz); gyro.read(&gx, &gy, &gz); roll=atan2(ay, az); pitch=atan((-ax)/(ay*sin(roll)+az*cos(roll))); yaw=atan2(mz*sin(roll)-my*cos(roll),mx*cos(pitch)+my*sin(pitch)*sin(roll)+mz*sin(pitch)*cos(roll)); bmp180.startTemperature(); wait_ms(5); // Wait for conversion to complete if(bmp180.getTemperature(&temp) != 0) {pc.printf("Error getting temperature\n");} bmp180.startPressure(BMP180::ULTRA_LOW_POWER); wait_ms(10); // Wait for conversion to complete if(bmp180.getPressure(&press) != 0) {pc.printf("Error getting pressure\n");} //Camara if (camera.isReady()) { char filename[32]; //sprintf(filename, "/local/pict%03d.jpg", conta); sprintf(filename, "/sd/fotos/pic%05d.jpg", conta); pc.printf("Picture: %s ", filename); mm.printf("Picture taken"); if (camera.takePicture(filename)) { while (camera.isProcessing()) { camera.processPicture(); } wait(2.0); } else { pc.printf("take picture failed\n"); mm.printf("Picture failed\n"); wait(2.0); } } else { pc.printf("camera is not ready\n"); mm.printf("Picture failed\n"); wait(2.0); } char fil[32]; sprintf(fil, "/sd/datos/dato%05d.txt", conta); FILE *fp = fopen(fil, "w"); //Imprimir valores pc.printf("\nSensor UV\nUV=%.3fmW/cm^2\n\r",uv_rad);//UV pc.printf("\nGiroscopo\nr:%.1f p:%.1f y:%.1f\n\r",roll*180/M_PI,pitch*180/M_PI,yaw*180/M_PI); pc.printf("P=%d Pa\n\rT=%.2fC\n\r", press, temp); //IMU pc.printf("Sensor Voltaje\nVoltaje:%f V\n\r",voltaje);//Voltaje pc.printf("Sensor Alcohol\nCantidad:%f mg/l\n\r",calc);//Alcohol pc.printf("Sensor Metano\nCantidad:%f mg/l\n\r",cmet);//Metano pc.printf("Sensor LPG\nCantidad:%f mg/l\n\r",clpg);//LPG pc.printf("Sensor de altitud: %.3f", (44330.77)*(1.0-(pow((float)(press/101326.0),(float)0.1902632))));//altitud //Imprimir en sd fprintf(fp,"\nSensor UV\nUV=%.3fmW/cm^2\n\r",uv_rad);//UV fprintf(fp,"\nGiroscopo\nr:%.1f p:%.1f y:%.1f\n\r",roll*180/M_PI,pitch*180/M_PI,yaw*180/M_PI); fprintf(fp,"P=%d Pa\n\rT=%.2fC\n\r", press, temp); //IMU fprintf(fp,"Sensor Voltaje\nVoltaje:%f V\n\r",voltaje);//Voltaje fprintf(fp,"Sensor Alcohol\nCantidad:%f mg/l\n\r",calc);//Alcohol fprintf(fp,"Sensor Metano\nCantidad:%f mg/l\n\r",cmet);//Metano fprintf(fp,"Sensor LPG\nCantidad:%f mg/l\n\r",clpg);//LPG fprintf(fp, "Sensor de altitud: %.3f", (44330.77)*(1.0-(pow((float)(press/101326.0),(float)0.1902632))));//altitud //Imprimir en cadena mm.printf("@,%1.3f,",uv_rad); mm.printf("%.1f, %.1f, %.1f,",roll*180/M_PI,pitch*180/M_PI,yaw*180/M_PI); mm.printf("%d, %.2f,",press, temp); mm.printf("%2.1f,",voltaje); mm.printf("%.3f,",calc); mm.printf("%.3f,",cmet); pc.printf("%.3f,",clpg);//LPG mm.printf("%.3f,", (44330.77)*(1.0-(pow((float)(press/101326.0),(float)0.1902632))));//altitud mm.printf("%.3f #",clpg); wait( 1 ); timer.reset(); fclose(fp); } }