Full project folder
Dependencies: GPSLibrary GSM mbed-modifed Storage_Library Temp_Library Wakeup pH_Sensor
main.cpp@14:196ed16cd62b, 2015-12-05 (annotated)
- 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?
User | Revision | Line number | New 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 | } |