Nucleo based high altitude balloon computer
Dependencies: SDFileSystem Venus838 mbed MS5611 TinyGPS
Diff: Atlas.cpp
- Revision:
- 7:308ab9062b76
- Parent:
- 6:f91db4a7acf1
diff -r f91db4a7acf1 -r 308ab9062b76 Atlas.cpp --- a/Atlas.cpp Thu Jun 26 14:43:31 2014 +0000 +++ b/Atlas.cpp Mon Jun 30 04:02:08 2014 +0000 @@ -3,7 +3,6 @@ #include "SDFileSystem.h" #include "Venus838.h" #include "TinyGPS.h" -//#include "nmea_parser.h" #include "MS5611I2C.h" DigitalOut grn(LED_GRN); @@ -14,7 +13,36 @@ TinyGPS gps; MS5611I2C pres(I2C_SDA, I2C_SCL, false); SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); -Timer tick; +Ticker tick; + +unsigned int logCount = 0; + +//Function to log data +void datalog(void) { + unsigned long date, time, ttf; + double latitude, longitude, altitude; + float pressure, temperature, battery; + //unsigned int writeCount = 0; + //unsigned int logCount = 0; + + grn = !grn; + gps.get_datetime(&date, &time, &ttf); + gps.f_get_position(&latitude, &longitude, &ttf); + altitude = gps.f_altitude(); + pressure = pres.getPressure(); + temperature = pres.getTemperature(); + battery = (batt.read()*3.3f) * 4.0f; + //wait_ms(1); + pc.printf("%u, %u, %u, %f, %f, %f, %f, %f, %f\r\n", + logCount, date, time, longitude, latitude, altitude, + pressure, temperature, battery); + FILE *fp = fopen("/sd/atlas.txt", "a"); + fprintf(fp, "%u, %u, %u, %f, %f, %f, %f, %f %f\r\n", + logCount, date, time, longitude, latitude, altitude, + pressure, temperature, battery); + logCount++; + fclose(fp); +} void init() { pc.baud(115200); @@ -34,28 +62,29 @@ error("Could not open file for write\r\n"); ylw = LED_ON; } - fprintf(fp, "Hooray, we can write to the SD Card. Go get a cookie."); - + fprintf(fp, "Atlas Debug File\r\n"); + fprintf(fp, "====================\r\n"); + fprintf(fp, "Atlas Firmware: 0.1\r\n"); + //TODO Add calls to query GPS for fimrware and other info + fprintf(fp, "GPS Firmware: Update rate: Mode: \r\n"); + //fprintf(fp, pres.printCoefficients()); printf("Closing file...\r\n"); fclose(fp); pres.printCoefficients(); - tick.start(); + //tick.start(); pc.printf("Atlas Ready!\r\n"); } int main() { - unsigned long date, time, ttf; - double latitude, longitude, altitude; - float pressure, temperature, battery; - unsigned int writeCount = 0; init(); + tick.attach(&datalog,1.0); FILE *fp = fopen("/sd/atlas.txt", "a"); fprintf(fp, "Atlas Logger\r\n"); - fprintf(fp, "Date Time Lon Lat Alt Pressure Temp Battery\r\n"); - fprintf(fp, "------------------------------------------------------------------\r\n"); + fprintf(fp, "Count Date Time Lon Lat Alt Pressure Temp Battery\r\n"); + fprintf(fp, "-------------------------------------------------------------------------\r\n"); fclose(fp); while(true) { if(venus.readable()) { @@ -63,10 +92,11 @@ //pc.putc(c); gps.encode(c); } + +/* if(tick.read_ms() >= 500) { tick.reset(); grn = !grn; - gps.get_datetime(&date, &time, &ttf); gps.f_get_position(&latitude, &longitude, &ttf); altitude = gps.f_altitude(); @@ -74,22 +104,24 @@ temperature = pres.getTemperature(); battery = (batt.read()*3.3f) * 4.0f; wait_ms(1); - pc.printf("%u, %u, %f, %f, %f, %f, %f, %f\r\n", - date, time, longitude, latitude, altitude, + pc.printf("%u %u, %u, %f, %f, %f, %f, %f, %f\r\n", + logCount, date, time, longitude, latitude, altitude, pressure, temperature, battery ); FILE *fp = fopen("/sd/atlas.txt", "a"); - fprintf(fp, "%u, %u, %f, %f, %f, %f, %f %f\r\n", - date, time, longitude, latitude, altitude, + fprintf(fp, "%u %u, %u, %f, %f, %f, %f, %f %f\r\n", + logCount, date, time, longitude, latitude, altitude, pressure, temperature, battery ); + logCount++; fclose(fp); writeCount++; - if(writeCount > 100) { - writeCount = 0; - fclose(fp); - FILE *fp = fopen("/sd/atlas.txt", "a"); - } + if(writeCount > 100) { + writeCount = 0; + fclose(fp); + FILE *fp = fopen("/sd/atlas.txt", "a"); + } } +*/ } } \ No newline at end of file