Nucleo based high altitude balloon computer
Dependencies: SDFileSystem Venus838 mbed MS5611 TinyGPS
Diff: Atlas.cpp
- Revision:
- 7:308ab9062b76
- Parent:
- 6:f91db4a7acf1
--- 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