Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: GPSLibrary GSM mbed-modifed Storage_Library Temp_Library Wakeup pH_Sensor
Revision 13:52fba498c00d, committed 2015-12-02
- Comitter:
- ptcrews
- Date:
- Wed Dec 02 06:29:20 2015 +0000
- Parent:
- 12:973566676eba
- Child:
- 14:196ed16cd62b
- Commit message:
- Test bed for class demo.
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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