Nucleo based high altitude balloon computer

Dependencies:   SDFileSystem Venus838 mbed MS5611 TinyGPS

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