Final project for ECE 4180.

Dependencies:   GPS SDFileSystem mbed-rtos mbed MPL3115A2

Fork of GPS_HelloWorld by kris gjika

Committer:
cmiller86
Date:
Tue Nov 17 06:59:00 2015 +0000
Revision:
2:21e4b9092bb2
Parent:
1:2c4f640a8104
Child:
3:b490294520d5
Refactored and added SD logging

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:6b7345059afe 1 #include "mbed.h"
cmiller86 2:21e4b9092bb2 2 #include "rtos.h"
cmiller86 2:21e4b9092bb2 3
simon 0:6b7345059afe 4 #include "GPS.h"
cmiller86 2:21e4b9092bb2 5 #include "SDFileSystem.h"
simon 0:6b7345059afe 6
simon 0:6b7345059afe 7 Serial pc(USBTX, USBRX);
cmiller86 2:21e4b9092bb2 8 SDFileSystem sd(p5, p6, p7, p8, "sd");
simon 0:6b7345059afe 9 GPS gps(p9, p10);
cmiller86 2:21e4b9092bb2 10
cmiller86 2:21e4b9092bb2 11 AnalogIn temp1(p18);
cmiller86 2:21e4b9092bb2 12 AnalogIn temp2(p19);
cmiller86 2:21e4b9092bb2 13 AnalogIn temp3(p20);
cmiller86 2:21e4b9092bb2 14
cmiller86 2:21e4b9092bb2 15 DigitalIn dtmf(p11);
cmiller86 2:21e4b9092bb2 16
Gjika 1:2c4f640a8104 17 DigitalOut led1(LED1);
Gjika 1:2c4f640a8104 18 DigitalOut relay(p8);
cmiller86 2:21e4b9092bb2 19
cmiller86 2:21e4b9092bb2 20 Timer t;
cmiller86 2:21e4b9092bb2 21
cmiller86 2:21e4b9092bb2 22 bool attempted = false;
cmiller86 2:21e4b9092bb2 23 bool cutdown = false;
cmiller86 2:21e4b9092bb2 24
cmiller86 2:21e4b9092bb2 25 FILE *sdout;
simon 0:6b7345059afe 26
cmiller86 2:21e4b9092bb2 27 void init()
cmiller86 2:21e4b9092bb2 28 {
cmiller86 2:21e4b9092bb2 29 t.start();
cmiller86 2:21e4b9092bb2 30 relay = 0;
cmiller86 2:21e4b9092bb2 31
cmiller86 2:21e4b9092bb2 32 mkdir("/sd/weather_balloon", 0777);
cmiller86 2:21e4b9092bb2 33 sdout = fopen("/sd/weather_balloon/log.txt", "w");
cmiller86 2:21e4b9092bb2 34 }
cmiller86 2:21e4b9092bb2 35
cmiller86 2:21e4b9092bb2 36 int main()
cmiller86 2:21e4b9092bb2 37 {
Gjika 1:2c4f640a8104 38 float tempC1, tempF1, tempC2, tempF2, tempC3, tempF3;
cmiller86 2:21e4b9092bb2 39
cmiller86 2:21e4b9092bb2 40 while(1)
cmiller86 2:21e4b9092bb2 41 {
cmiller86 2:21e4b9092bb2 42 pc.printf("----- %f -----\n\r", t.read());
cmiller86 2:21e4b9092bb2 43 fprintf(sdout, "----- %f -----\n\r", t.read());
Gjika 1:2c4f640a8104 44
cmiller86 2:21e4b9092bb2 45 if(t.read() >= 20)
cmiller86 2:21e4b9092bb2 46 cutdown = true;
Gjika 1:2c4f640a8104 47
Gjika 1:2c4f640a8104 48 gps.sample();
cmiller86 2:21e4b9092bb2 49
Gjika 1:2c4f640a8104 50 pc.printf("Long = %f\n\rLati = %f\n\r", gps.longitude, gps.latitude);
cmiller86 2:21e4b9092bb2 51 fprintf(sdout, "Long = %f\n\rLati = %f\n\r", gps.longitude, gps.latitude);
cmiller86 2:21e4b9092bb2 52
cmiller86 2:21e4b9092bb2 53 if(!gps.longitude)
cmiller86 2:21e4b9092bb2 54 led1 = 1;
Gjika 1:2c4f640a8104 55
cmiller86 2:21e4b9092bb2 56 tempC1 = ((temp1 * 3.3) - 0.600) * 100.0;
cmiller86 2:21e4b9092bb2 57 tempC2 = ((temp2 * 3.3) - 0.600) * 100.0;
cmiller86 2:21e4b9092bb2 58 tempC3 = ((temp3 * 3.3) - 0.600) * 100.0;
cmiller86 2:21e4b9092bb2 59 tempF1 = (9.0 * tempC1) / 5.0 + 32;
cmiller86 2:21e4b9092bb2 60 tempF2 = (9.0 * tempC2) / 5.0 + 32;
cmiller86 2:21e4b9092bb2 61 tempF3 = (9.0 * tempC3) / 5.0 + 32;
Gjika 1:2c4f640a8104 62
cmiller86 2:21e4b9092bb2 63 pc.printf("Temp1 = %f\n\rTemp2 = %f\n\rTemp3 = %f\n\r", tempF1, tempF2, tempF3);
cmiller86 2:21e4b9092bb2 64 fprintf(sdout, "Temp1 = %f\n\rTemp2 = %f\n\rTemp3 = %f\n\r", tempF1, tempF2, tempF3);
cmiller86 2:21e4b9092bb2 65
cmiller86 2:21e4b9092bb2 66 if(dtmf)
cmiller86 2:21e4b9092bb2 67 {
Gjika 1:2c4f640a8104 68 pc.printf("DTMF = True\n\r");
cmiller86 2:21e4b9092bb2 69 fprintf(sdout, "DTMF = True\n\r");
cmiller86 2:21e4b9092bb2 70
cmiller86 2:21e4b9092bb2 71 cutdown = true;
cmiller86 2:21e4b9092bb2 72 }
cmiller86 2:21e4b9092bb2 73 else
cmiller86 2:21e4b9092bb2 74 {
cmiller86 2:21e4b9092bb2 75 pc.printf("DTMF = False\n\r");
cmiller86 2:21e4b9092bb2 76 fprintf(sdout, "DTMF = False\n\r");
cmiller86 2:21e4b9092bb2 77 }
Gjika 1:2c4f640a8104 78
cmiller86 2:21e4b9092bb2 79 if(cutdown && !attempted)
cmiller86 2:21e4b9092bb2 80 {
cmiller86 2:21e4b9092bb2 81 pc.printf("Cutdown Started = %f\n\r", t.read());
cmiller86 2:21e4b9092bb2 82 fprintf(sdout, "Cutdown Started = %f\n\r", t.read());
cmiller86 2:21e4b9092bb2 83
cmiller86 2:21e4b9092bb2 84 relay = 1;
cmiller86 2:21e4b9092bb2 85 wait(20);
cmiller86 2:21e4b9092bb2 86 relay = 0;
cmiller86 2:21e4b9092bb2 87
cmiller86 2:21e4b9092bb2 88 pc.printf("Cutdown Ended = %f\n\r", t.read());
cmiller86 2:21e4b9092bb2 89 fprintf(sdout, "Cutdown Ended = %f\n\r", t.read());
cmiller86 2:21e4b9092bb2 90
cmiller86 2:21e4b9092bb2 91 attempted = true;
simon 0:6b7345059afe 92 }
simon 0:6b7345059afe 93 }
cmiller86 2:21e4b9092bb2 94 }