Nucleo based high altitude balloon computer

Dependencies:   SDFileSystem Venus838 mbed MS5611 TinyGPS

Files at this revision

API Documentation at this revision

Comitter:
ethanharstad
Date:
Tue Jun 24 15:03:09 2014 +0000
Parent:
2:244d3912b449
Child:
4:96539c6e50c0
Commit message:
Integrate pressure and gps

Changed in this revision

Atlas.cpp Show annotated file Show diff for this revision Revisions of this file
TinyGPS.lib Show annotated file Show diff for this revision Revisions of this file
--- 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TinyGPS.lib	Tue Jun 24 15:03:09 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/shimniok/code/TinyGPS/#f522b8bdf987