Nucleo based high altitude balloon computer
Dependencies: SDFileSystem Venus838 mbed MS5611 TinyGPS
Revision 3:552319ab5341, committed 2014-06-24
- 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