Full project folder
Dependencies: GPSLibrary GSM mbed-modifed Storage_Library Temp_Library Wakeup pH_Sensor
Diff: main.cpp
- Revision:
- 13:52fba498c00d
- Parent:
- 12:973566676eba
- Child:
- 14:196ed16cd62b
--- a/main.cpp Mon Nov 30 21:07:03 2015 +0000 +++ b/main.cpp Wed Dec 02 06:29:20 2015 +0000 @@ -25,7 +25,7 @@ AnalogIn temperature(TMP_ANALOG); #define READINGSIZE sizeof(struct reading) -#define URL "http://requestb.in/sd2o2gsd" +#define URL "http://requestb.in/1ihfre81" // Cellular communication global variables Adafruit_FONA fona(FONA_TX, FONA_RX, FONA_RST, FONA_RI); @@ -93,10 +93,16 @@ } void setup() { - printf("\n=====\nSetup in Full Project\n"); + wait(2); setupPCSerial(); + wait(2); + printf("\n=====\nSetup in Full Project\n"); + wait(2); setupGPS(); + wait(2); setupPH(); + wait(2); + wait(20); } // Send default message to pH sensor, asking for data. @@ -144,7 +150,7 @@ // n_queries is the number of times we query the GPS. We need something like 23000 characters. void GPSRead(int n_queries) { - for(int i = 0; i < 20; i++){ + for(int i = 0; i < 60; i++){ wait(1); if(myGPS.fix) break; } @@ -197,32 +203,41 @@ pcSerial.printf("\n"); } +void changeGSMPowerState() +{ + key.write(1); + wait(2); + key.write(0); + wait(2); + key.write(1); + wait(2); +} + void setupGSM() { printf("Starting FONA\n"); - while(!fona.begin(9600)) { + if(!fona.begin(9600)){ + changeGSMPowerState(); printf("Cannot find FONA\n"); - wait(1); + wait(2); } - fona.begin(9600); + if(!fona.begin(9600)){ + changeGSMPowerState(); + return; + } printf("After begin\n"); fona.setGPRSNetworkSettings("pwg", "", ""); printf("After set setting\n"); bool enable = false; + int i = 0; while(enable != true) { + if(i > 5) break; + i++; fona.enableGPRS(true); fona.enableGPRS(false); enable = fona.enableGPRS(true); } printf("After enable\n"); - key.write(1); -} - -void changeGSMPowerState() -{ - key.write(0); - wait(2); - key.write(1); } //Found this online and it claims that it resets ADC to work after deepsleep \_O_/ @@ -236,13 +251,15 @@ HAL_RCC_OscConfig(&RCC_OscInitStruct); } -void enterSleep(int msec) +void enterSleep(int sec) { gpsEN.write(0); - if(msec > 0) WakeUp::set_ms(msec); + wait(2); + WakeUp::set(sec); deepsleep(); resetADC(); gpsEN.write(1); + wait(2); } bool sendDataOverHTTP(char* url, uint8_t* data, int dlength) @@ -342,12 +359,11 @@ bool sendDataToURL(uint8_t* data, int size) { - changeGSMPowerState(); setupGSM(); printf("Setup GSM\n"); bool res = sendDataOverHTTP(URL, data, size); - printf("After sent data\n"); - changeGSMPowerState(); + if(!res) res = sendDataOverHTTP(URL, data, size); + printf("After sent data\n"); return res; } @@ -373,6 +389,7 @@ int main() { setup(); + changeGSMPowerState(); int nreadings = 0; bool toSend = false; while (true) { @@ -388,15 +405,17 @@ wait(1); writeEEPROMbytes((uint8_t *) &lastReadingBuffer, READINGSIZE); nreadings++; - if(nreadings == 10) + changeGSMPowerState(); + if(nreadings == 5) toSend = true; if(toSend) { struct reading* data = new struct reading[nreadings]; getEEPROM((uint8_t*) data); - char buffer[((8+8+10+10+5*sizeof(int)+8)*nreadings) + 1]; + int sizeofentry = 8+8+10+10+5*sizeof(int)+8+1; + char buffer[(sizeofentry*nreadings) + 1]; for(int i = 0; i < nreadings; i++) { - int n = sprintf(buffer, "%8f %8f %10f %10f %d %d %d %d %d", data[i].temperature, data[i].pH, data[i].latitude, data[i].longitude, data[i].day, + int n = sprintf(buffer+sizeofentry*i, "%8f %8f %10f %10f %d %d %d %d %d\t", data[i].temperature, data[i].pH, data[i].latitude, data[i].longitude, data[i].day, data[i].month, data[i].year, data[i].hour, data[i].minutes); printf("%s\n", buffer); printf("%d\n", n); @@ -412,23 +431,8 @@ } delete[] data; } - //else changeGSMPowerState(); - /* - printf("Reading Size is %d\n", READINGSIZE); - printf("ROM Latitude: %f\n", verifier.latitude); - printf("ROM Longitude: %f\n", verifier.longitude); - printf("ROM pH: %f\n", verifier.pH); - printf("ROM Temperature: %f\n", verifier.temperature); - printf("ROM Day: %d\n", verifier.day); - printf("ROM Month: %d\n", verifier.month); - printf("ROM Year: %d\n", verifier.year); - printf("ROM Hour: %d\n", verifier.hour); - printf("ROM Minutes: %d\n", verifier.minutes); - */ - wait(1); - key.write(1); - enterSleep(360000); + changeGSMPowerState(); + wait(2); + enterSleep(60); } - - return 0; } \ No newline at end of file