Nucleo based high altitude balloon computer

Dependencies:   SDFileSystem Venus838 mbed MS5611 TinyGPS

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