Full project folder

Dependencies:   GPSLibrary GSM mbed-modifed Storage_Library Temp_Library Wakeup pH_Sensor

Committer:
ptcrews
Date:
Sat Dec 05 07:36:48 2015 +0000
Revision:
14:196ed16cd62b
Parent:
13:52fba498c00d
Child:
15:5f366ddcce18
Decomposed Full-Project program.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ptcrews 14:196ed16cd62b 1 #include "GSM_Wrapper.h"
ptcrews 2:8de680cf7a19 2 #include "WakeUp.h"
ptcrews 14:196ed16cd62b 3 #include "main.h"
ptcrews 14:196ed16cd62b 4 #include "pH_Sensor.h"
ptcrews 14:196ed16cd62b 5 #include "storage.h"
ptcrews 14:196ed16cd62b 6 #include "GPS_Wrapper.h"
ptcrews 14:196ed16cd62b 7 #include "Temp_Sensor.h"
tomli 5:e180c73f4f70 8 #include <string>
ptcrews 1:83d3982f32d5 9
ptcrews 14:196ed16cd62b 10 struct reading lastReadingBuffer;
ptcrews 14:196ed16cd62b 11 pH_Sensor pH;
ptcrews 14:196ed16cd62b 12 GPS_Sensor GPS;
ptcrews 14:196ed16cd62b 13 GSM_Sensor GSM;
ptcrews 14:196ed16cd62b 14 Temp_Sensor Temp;
ptcrews 14:196ed16cd62b 15 Storage storage;
ptcrews 1:83d3982f32d5 16 Serial pcSerial(USBTX, USBRX);
tomli 10:01bbf4f1c250 17
tomli 5:e180c73f4f70 18 void setupPCSerial() {
ptcrews 14:196ed16cd62b 19 wait(2);
tomli 5:e180c73f4f70 20 pcSerial.baud(115200);
tomli 8:b607768bfa0a 21 pcSerial.printf("\n\n PC Serial connection established at 115200 baud.\n");
ptcrews 14:196ed16cd62b 22 wait(2);
tomli 5:e180c73f4f70 23 }
tomli 5:e180c73f4f70 24
tomli 5:e180c73f4f70 25 void setup() {
tomli 5:e180c73f4f70 26 setupPCSerial();
ptcrews 14:196ed16cd62b 27 GPS.setup();
ptcrews 14:196ed16cd62b 28 pH.setup();
ptcrews 13:52fba498c00d 29 wait(20);
ptcrews 14:196ed16cd62b 30 GSM.changePowerState();
tomli 5:e180c73f4f70 31 }
tomli 5:e180c73f4f70 32
tomli 5:e180c73f4f70 33
ptcrews 14:196ed16cd62b 34 void enterSleep(int sec)
ptcrews 13:52fba498c00d 35 {
ptcrews 14:196ed16cd62b 36 GPS.turnOff();
ptcrews 13:52fba498c00d 37 wait(2);
ptcrews 14:196ed16cd62b 38 WakeUp::set(sec);
ptcrews 14:196ed16cd62b 39 deepsleep();
ptcrews 14:196ed16cd62b 40 WakeUp::resetADC();
ptcrews 14:196ed16cd62b 41 GPS.turnOn();
ptcrews 13:52fba498c00d 42 wait(2);
ptcrews 13:52fba498c00d 43 }
ptcrews 13:52fba498c00d 44
ptcrews 14:196ed16cd62b 45 void sendData(int& nreadings, bool& toSend)
tomli 10:01bbf4f1c250 46 {
ptcrews 14:196ed16cd62b 47 struct reading* data = new struct reading[nreadings];
ptcrews 14:196ed16cd62b 48 storage.read((uint8_t*) data);
ptcrews 14:196ed16cd62b 49 int sizeofentry = 8+8+10+10+5*sizeof(int)+8+1;
ptcrews 14:196ed16cd62b 50 size_t bufsize = sizeofentry*nreadings+1;
ptcrews 14:196ed16cd62b 51 char buffer[bufsize];
ptcrews 14:196ed16cd62b 52 for(int i = 0; i < nreadings; i++) {
ptcrews 14:196ed16cd62b 53 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,
ptcrews 14:196ed16cd62b 54 data[i].month, data[i].year, data[i].hour, data[i].minutes);
ptcrews 3:6afcf4f3b2aa 55 }
ptcrews 14:196ed16cd62b 56 if(GSM.send((uint8_t*) buffer, bufsize)) {
ptcrews 14:196ed16cd62b 57 toSend = false;
ptcrews 14:196ed16cd62b 58 nreadings = 0;
ptcrews 14:196ed16cd62b 59 storage.reset();
ptcrews 3:6afcf4f3b2aa 60 }
ptcrews 14:196ed16cd62b 61 delete[] data;
ptcrews 3:6afcf4f3b2aa 62 }
ptcrews 2:8de680cf7a19 63
ptcrews 14:196ed16cd62b 64 void read()
tomli 10:01bbf4f1c250 65 {
ptcrews 14:196ed16cd62b 66 printf("~~~~~[pH]~~~~~\n");
ptcrews 14:196ed16cd62b 67 lastReadingBuffer.pH = pH.read();
ptcrews 14:196ed16cd62b 68 printf("~~~~~[Temperature]~~~~~\n");
ptcrews 14:196ed16cd62b 69 lastReadingBuffer.temperature = Temp.read();
ptcrews 14:196ed16cd62b 70 printf("~~~~~[GPS]~~~~~\n");
ptcrews 14:196ed16cd62b 71 GPS.read(lastReadingBuffer);
ptcrews 14:196ed16cd62b 72 storage.write((uint8_t *) &lastReadingBuffer, READINGSIZE);
ptcrews 14:196ed16cd62b 73 GSM.changePowerState();
tomli 10:01bbf4f1c250 74 }
tomli 10:01bbf4f1c250 75
ptcrews 1:83d3982f32d5 76 int main()
ptcrews 1:83d3982f32d5 77 {
tomli 5:e180c73f4f70 78 setup();
tomli 10:01bbf4f1c250 79 int nreadings = 0;
tomli 10:01bbf4f1c250 80 bool toSend = false;
tomli 5:e180c73f4f70 81 while (true) {
ptcrews 14:196ed16cd62b 82 read();
tomli 10:01bbf4f1c250 83 nreadings++;
ptcrews 14:196ed16cd62b 84 if(nreadings == N_READINGS_PER_SEND) toSend = true;
ptcrews 14:196ed16cd62b 85 if(toSend) sendData(nreadings, toSend);
ptcrews 14:196ed16cd62b 86 GSM.changePowerState();
ptcrews 13:52fba498c00d 87 wait(2);
ptcrews 14:196ed16cd62b 88 enterSleep(N_SECONDS_SLEEP);
tomli 5:e180c73f4f70 89 }
ptcrews 1:83d3982f32d5 90 }