Nucleo based high altitude balloon computer
Dependencies: SDFileSystem Venus838 mbed MS5611 TinyGPS
Diff: Atlas.cpp
- Revision:
- 3:552319ab5341
- Parent:
- 2:244d3912b449
- Child:
- 4:96539c6e50c0
diff -r 244d3912b449 -r 552319ab5341 Atlas.cpp --- a/Atlas.cpp Tue Jun 24 14:13:56 2014 +0000 +++ b/Atlas.cpp Tue Jun 24 15:03:09 2014 +0000 @@ -2,23 +2,26 @@ #include "Atlas.h" #include "SDFileSystem.h" #include "Venus838.h" +#include "TinyGPS.h" #include "MS5611I2C.h" DigitalOut grn(LED_GRN); DigitalOut ylw(LED_YLW); Serial pc(USBTX, USBRX); -Venus838 gps(GPS_TX, GPS_RX); +Venus838 venus(GPS_TX, GPS_RX); +TinyGPS gps; MS5611I2C pres(I2C_SDA, I2C_SCL, false); SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); +Timer tick; void init() { pc.baud(115200); - grn = LED_ON; - ylw = LED_ON; + grn = LED_OFF; + ylw = LED_OFF; - gps.setUpdateRate(10); - gps.setNavigationMode(4); - gps.setNmeaMessages(true, false, false, false, true, false); + venus.setUpdateRate(10); + venus.setNavigationMode(4); + venus.setNmeaMessages(true, false, false, false, true, false); printf("Attempting to open SD card...\n"); mkdir("/sd/mydir", 0777); @@ -27,21 +30,57 @@ FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); if(fp == NULL) { error("Could not open file for write\n"); - ylw = LED_OFF; + ylw = LED_ON; } fprintf(fp, "Hello fun SD Card World!"); printf("Closing file...\n"); fclose(fp); + pres.printCoefficients(); + + tick.start(); pc.printf("Atlas Ready!\n"); } int main() { + unsigned long date, time, ttf; + double latitude, longitude, altitude; + float pressure, temperature; + unsigned int writeCount = 0; + init(); + FILE *fp = fopen("/sd/atlas.txt", "a"); + while(true) { - if(gps.readable()) { - pc.putc(gps.getc()); + if(venus.readable()) { + char c = venus.getc(); + //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(); + pressure = pres.getPressure(); + temperature = pres.getTemperature(); + pc.printf("%l, %l, %d, %d, %d, %d, %d\n", + date, time, longitude, latitude, altitude, + pressure, temperature + ); + fprintf(fp, "%l, %l, %d, %d, %d, %d, %d\n", + date, time, longitude, latitude, altitude, + pressure, temperature + ); + writeCount++; + if(writeCount > 100) { + writeCount = 0; + fclose(fp); + FILE *fp = fopen("/sd/atlas.txt", "a"); + } } } } \ No newline at end of file