uses pushing box to write to google spreadsheets

Dependencies:   GSM_PUSHING_BOX_STATE_MACHINE MBed_Adafruit-GPS-Library SDFileSystem mbed

Fork of DCS by DCS_TEAM

Committer:
DeWayneDennis
Date:
Wed Oct 21 19:46:32 2015 +0000
Revision:
20:84661ac75715
Parent:
19:404594768414
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bjcrofts 0:d7b2716c5a4f 1 #pragma once
bjcrofts 0:d7b2716c5a4f 2 #include "mbed.h"
bjcrofts 0:d7b2716c5a4f 3 #include "math.h"
bjcrofts 0:d7b2716c5a4f 4 #include "MBed_Adafruit_GPS.h"
bjcrofts 0:d7b2716c5a4f 5 #include "SDFileSystem.h"
bjcrofts 0:d7b2716c5a4f 6 #include "QAM.h"
bjcrofts 0:d7b2716c5a4f 7 #include "param.h"
bjcrofts 8:6b4a6bcd7694 8 #include "GSMLibrary.h"
bjcrofts 8:6b4a6bcd7694 9 #include "stdlib.h"
DeWayneDennis 19:404594768414 10 #include "GPRSInterface.h"
bjcrofts 0:d7b2716c5a4f 11
bjcrofts 0:d7b2716c5a4f 12 DigitalOut led_red(LED_RED);
bjcrofts 0:d7b2716c5a4f 13 Serial pc(USBTX, USBRX);
bjcrofts 0:d7b2716c5a4f 14 Timer t;
bjcrofts 8:6b4a6bcd7694 15 bool run = 0;
bjcrofts 14:97611177509b 16 bool fil = 0;
bjcrofts 0:d7b2716c5a4f 17
bjcrofts 0:d7b2716c5a4f 18 /**************************************************
bjcrofts 0:d7b2716c5a4f 19 ** SD FILE SYSTEM **
bjcrofts 0:d7b2716c5a4f 20 **************************************************/
bjcrofts 0:d7b2716c5a4f 21 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
DeWayneDennis 19:404594768414 22 FILE *fpLog;
DeWayneDennis 19:404594768414 23 FILE *fpData;
bjcrofts 0:d7b2716c5a4f 24 /**************************************************
bjcrofts 0:d7b2716c5a4f 25 ** GPS **
bjcrofts 0:d7b2716c5a4f 26 **************************************************/
bjcrofts 0:d7b2716c5a4f 27 Serial * gps_Serial;
bjcrofts 0:d7b2716c5a4f 28
bjcrofts 0:d7b2716c5a4f 29 /**************************************************
bjcrofts 0:d7b2716c5a4f 30 ** SENSOR INPUTS **
bjcrofts 0:d7b2716c5a4f 31 **************************************************/
bjcrofts 0:d7b2716c5a4f 32 AnalogIn AnLong(A0);
bjcrofts 0:d7b2716c5a4f 33 AnalogIn AnRefLong(A2);
bjcrofts 0:d7b2716c5a4f 34 Ticker sample_tick;
bjcrofts 0:d7b2716c5a4f 35 bool takeSample = false;
DeWayneDennis 19:404594768414 36 void tick()
DeWayneDennis 19:404594768414 37 {
DeWayneDennis 19:404594768414 38 takeSample = true;
DeWayneDennis 19:404594768414 39 }
bjcrofts 0:d7b2716c5a4f 40
bjcrofts 0:d7b2716c5a4f 41 /**************************************************
bjcrofts 0:d7b2716c5a4f 42 ** SIN OUTPUT **
bjcrofts 0:d7b2716c5a4f 43 **************************************************/
bjcrofts 0:d7b2716c5a4f 44 AnalogOut dac0(DAC0_OUT);
bjcrofts 0:d7b2716c5a4f 45 int sinRes = (int)1/(CARRIER_FREQ*TIME_CONST);
bjcrofts 0:d7b2716c5a4f 46 float sinWave[SIN_LENGTH] = {};
bjcrofts 0:d7b2716c5a4f 47 int sinIndex = 0;
bjcrofts 0:d7b2716c5a4f 48
bjcrofts 0:d7b2716c5a4f 49
bjcrofts 0:d7b2716c5a4f 50 /**************************************************
bjcrofts 0:d7b2716c5a4f 51 ** QAM **
bjcrofts 0:d7b2716c5a4f 52 **************************************************/
bjcrofts 0:d7b2716c5a4f 53 float sLQ[SAMPLE_LENGTH] = {};
bjcrofts 0:d7b2716c5a4f 54 float sLI[SAMPLE_LENGTH] = {};
bjcrofts 0:d7b2716c5a4f 55 float sRefLQ[SAMPLE_LENGTH] = {};
bjcrofts 0:d7b2716c5a4f 56 float sRefLI[SAMPLE_LENGTH] = {};
bjcrofts 0:d7b2716c5a4f 57
bjcrofts 0:d7b2716c5a4f 58 float Iarray[SAMPLE_LENGTH] = {};
bjcrofts 0:d7b2716c5a4f 59 float Qarray[SAMPLE_LENGTH] = {};
bjcrofts 0:d7b2716c5a4f 60 int sampleIndex = 0;
bjcrofts 0:d7b2716c5a4f 61 float I = 0;
bjcrofts 0:d7b2716c5a4f 62 float Q = 0;
bjcrofts 0:d7b2716c5a4f 63 float lon = 0;
bjcrofts 0:d7b2716c5a4f 64 float lonRef = 0;
DeWayneDennis 19:404594768414 65
DeWayneDennis 19:404594768414 66 /*Global Variables*/
DeWayneDennis 19:404594768414 67 extern GPRSInterface eth;
bjcrofts 0:d7b2716c5a4f 68
DeWayneDennis 19:404594768414 69 /*End Global Variables*/
DeWayneDennis 19:404594768414 70 void buildIQ()
DeWayneDennis 19:404594768414 71 {
DeWayneDennis 19:404594768414 72 for(int i = 0; i < SAMPLE_LENGTH; i++) {
bjcrofts 0:d7b2716c5a4f 73 Iarray[i] = cos(2*PI*CARRIER_FREQ*i*TIME_CONST);
bjcrofts 0:d7b2716c5a4f 74 Qarray[i] = -sin(2*PI*CARRIER_FREQ*i*TIME_CONST);
bjcrofts 0:d7b2716c5a4f 75 }
bjcrofts 0:d7b2716c5a4f 76 }
bjcrofts 0:d7b2716c5a4f 77
DeWayneDennis 19:404594768414 78 void create_sinWave()
DeWayneDennis 19:404594768414 79 {
bjcrofts 0:d7b2716c5a4f 80 int i = 0;
DeWayneDennis 19:404594768414 81 for(i = 0; i < SIN_LENGTH; i++) {
bjcrofts 0:d7b2716c5a4f 82 sinWave[i] = 0.25 * sin(2.0*PI*i/sinRes) + 0.75;
bjcrofts 0:d7b2716c5a4f 83 }
bjcrofts 0:d7b2716c5a4f 84 }
bjcrofts 0:d7b2716c5a4f 85
DeWayneDennis 19:404594768414 86 int main ()
DeWayneDennis 19:404594768414 87 {
bjcrofts 0:d7b2716c5a4f 88 pc.printf("hello\r\n");
DeWayneDennis 19:404594768414 89 //Initilialize the GSM
DeWayneDennis 19:404594768414 90 //gsm_initialize();
bjcrofts 0:d7b2716c5a4f 91 // GPS INITIALIZATION //////////////////////////////
bjcrofts 8:6b4a6bcd7694 92 gps_Serial = new Serial(PTC4,PTC3); ////Serial gsm(D1,D0);
bjcrofts 0:d7b2716c5a4f 93 Adafruit_GPS myGPS(gps_Serial);
bjcrofts 0:d7b2716c5a4f 94 char c;
bjcrofts 0:d7b2716c5a4f 95 myGPS.begin(9600);
bjcrofts 0:d7b2716c5a4f 96 myGPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
bjcrofts 0:d7b2716c5a4f 97 myGPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);
bjcrofts 0:d7b2716c5a4f 98 myGPS.sendCommand(PGCMD_ANTENNA);
bjcrofts 0:d7b2716c5a4f 99 ////////////////////////////////////////////////////
DeWayneDennis 19:404594768414 100
bjcrofts 0:d7b2716c5a4f 101 buildIQ();
bjcrofts 0:d7b2716c5a4f 102 create_sinWave();
DeWayneDennis 19:404594768414 103
bjcrofts 0:d7b2716c5a4f 104 float filteredLong = 0;
bjcrofts 0:d7b2716c5a4f 105 float filteredLongRef = 0;
DeWayneDennis 19:404594768414 106
DeWayneDennis 19:404594768414 107 fpData = fopen("/sd/data.txt", "a");
DeWayneDennis 19:404594768414 108 if (fpData != NULL) {
DeWayneDennis 19:404594768414 109 fprintf(fpData, "--------------- DCS ------------------");
bjcrofts 14:97611177509b 110 }
DeWayneDennis 19:404594768414 111
DeWayneDennis 19:404594768414 112
bjcrofts 8:6b4a6bcd7694 113 void gsm_initialize();
DeWayneDennis 19:404594768414 114
bjcrofts 0:d7b2716c5a4f 115 sample_tick.attach(&tick, 0.0001);
DeWayneDennis 19:404594768414 116
bjcrofts 0:d7b2716c5a4f 117 t.start();
DeWayneDennis 19:404594768414 118
DeWayneDennis 19:404594768414 119 while(1) {
DeWayneDennis 19:404594768414 120
DeWayneDennis 19:404594768414 121 if(takeSample) {
DeWayneDennis 19:404594768414 122
bjcrofts 0:d7b2716c5a4f 123 dac0 = sinWave[sinIndex];
DeWayneDennis 19:404594768414 124
bjcrofts 0:d7b2716c5a4f 125 lon = AnLong.read();
bjcrofts 0:d7b2716c5a4f 126 lonRef = AnRefLong.read();
DeWayneDennis 19:404594768414 127
bjcrofts 0:d7b2716c5a4f 128 I = Iarray[sampleIndex];
bjcrofts 0:d7b2716c5a4f 129 Q = Qarray[sampleIndex];
bjcrofts 0:d7b2716c5a4f 130 sLI[sampleIndex] = lon*I;
bjcrofts 0:d7b2716c5a4f 131 sLQ[sampleIndex] = lon*Q;
bjcrofts 0:d7b2716c5a4f 132 sRefLI[sampleIndex] = lonRef*I;
bjcrofts 0:d7b2716c5a4f 133 sRefLQ[sampleIndex] = lonRef*Q;
DeWayneDennis 19:404594768414 134
bjcrofts 8:6b4a6bcd7694 135 takeSample = false;
DeWayneDennis 19:404594768414 136
bjcrofts 8:6b4a6bcd7694 137 sinIndex++;
DeWayneDennis 19:404594768414 138 if((sinIndex+1) > SIN_LENGTH) {
bjcrofts 8:6b4a6bcd7694 139 sinIndex = 0;
bjcrofts 8:6b4a6bcd7694 140 }
DeWayneDennis 19:404594768414 141
DeWayneDennis 19:404594768414 142
bjcrofts 0:d7b2716c5a4f 143 sampleIndex++;
DeWayneDennis 19:404594768414 144 if(sampleIndex+1 > SAMPLE_LENGTH) {
bjcrofts 14:97611177509b 145 fil = 1;
bjcrofts 0:d7b2716c5a4f 146 }
DeWayneDennis 19:404594768414 147
DeWayneDennis 19:404594768414 148
bjcrofts 0:d7b2716c5a4f 149 }
bjcrofts 8:6b4a6bcd7694 150
DeWayneDennis 19:404594768414 151 if(fil==1) {
DeWayneDennis 19:404594768414 152
bjcrofts 14:97611177509b 153 fil = 0;
bjcrofts 8:6b4a6bcd7694 154 run = 1;
DeWayneDennis 19:404594768414 155
bjcrofts 0:d7b2716c5a4f 156 sampleIndex = 0;
DeWayneDennis 19:404594768414 157
bjcrofts 8:6b4a6bcd7694 158 gsm_tick();
DeWayneDennis 19:404594768414 159
DeWayneDennis 19:404594768414 160 filteredLong = 15*QAM(sLI, sLQ);
bjcrofts 14:97611177509b 161 filteredLongRef = QAM(sRefLI, sRefLQ);
DeWayneDennis 19:404594768414 162
bjcrofts 14:97611177509b 163 gsm_tick();
DeWayneDennis 19:404594768414 164
DeWayneDennis 19:404594768414 165 }
bjcrofts 0:d7b2716c5a4f 166 c = myGPS.read();
bjcrofts 0:d7b2716c5a4f 167 if ( myGPS.newNMEAreceived() ) {
bjcrofts 0:d7b2716c5a4f 168 if ( !myGPS.parse(myGPS.lastNMEA()) ) {
DeWayneDennis 19:404594768414 169 //continue;
bjcrofts 0:d7b2716c5a4f 170 }
bjcrofts 0:d7b2716c5a4f 171 }
bjcrofts 0:d7b2716c5a4f 172
DeWayneDennis 19:404594768414 173 if(run) {
bjcrofts 0:d7b2716c5a4f 174 led_red = !led_red;
bjcrofts 8:6b4a6bcd7694 175 run = 0;
DeWayneDennis 19:404594768414 176
bjcrofts 8:6b4a6bcd7694 177 pc.printf("%f, ", filteredLong);
bjcrofts 8:6b4a6bcd7694 178 pc.printf("%f, ", filteredLongRef);
DeWayneDennis 19:404594768414 179 pc.printf("%f\r\n", filteredLong/filteredLongRef);
DeWayneDennis 19:404594768414 180 pc.printf("%02d:%02d:%02d \r\n", myGPS.hour-6, myGPS.minute, myGPS.seconds);
DeWayneDennis 19:404594768414 181
bjcrofts 8:6b4a6bcd7694 182 if (myGPS.fix) pc.printf("%5.2f%c, %5.2f%c\r\n", myGPS.latitude, myGPS.lat, myGPS.longitude, myGPS.lon);
bjcrofts 0:d7b2716c5a4f 183 else pc.printf("No GPS fix\r\n");
bjcrofts 0:d7b2716c5a4f 184 pc.printf("--------------------------------\r\n");
DeWayneDennis 19:404594768414 185
DeWayneDennis 19:404594768414 186 fpData = fopen("/sd/data.txt", "a");
DeWayneDennis 19:404594768414 187 if (fpData != NULL) {
DeWayneDennis 19:404594768414 188 fprintf(fpData, "%f, ", filteredLong);
DeWayneDennis 19:404594768414 189 fprintf(fpData, "%f\r\n", filteredLongRef);
DeWayneDennis 19:404594768414 190 fprintf(fpData, "%02d:%02d:%02d\r\n", myGPS.hour-6, myGPS.minute, myGPS.seconds);
DeWayneDennis 19:404594768414 191 if (myGPS.fix) fprintf(fpData, "%5.2f%c, %5.2f%c\r\n", myGPS.latitude, myGPS.lat, myGPS.longitude, myGPS.lon);
DeWayneDennis 19:404594768414 192 fclose(fpData);
DeWayneDennis 19:404594768414 193 }
DeWayneDennis 19:404594768414 194 if(myGPS.fix)
DeWayneDennis 19:404594768414 195 gsm_send_data(filteredLong, filteredLongRef, myGPS.hour-6, myGPS.minute, myGPS.seconds, myGPS.latitude, myGPS.lat, myGPS.longitude, myGPS.lon);
DeWayneDennis 19:404594768414 196 else
DeWayneDennis 19:404594768414 197 gsm_send_data(filteredLong, filteredLongRef,myGPS.hour-6, myGPS.minute, myGPS.seconds, 0, 0, 0, 0);
bjcrofts 0:d7b2716c5a4f 198
DeWayneDennis 19:404594768414 199 }
bjcrofts 14:97611177509b 200
bjcrofts 0:d7b2716c5a4f 201 }
bjcrofts 0:d7b2716c5a4f 202 }