kaems
Dependencies: TextLCD WakeUp mbed
Fork of Final by
main.cpp@1:afb1111bab40, 2015-01-29 (annotated)
- Committer:
- Lakshmikumar
- Date:
- Thu Jan 29 12:28:06 2015 +0000
- Revision:
- 1:afb1111bab40
- Parent:
- 0:e876ef14b820
KAEMS
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Lakshmikumar | 0:e876ef14b820 | 1 | #include"mbed.h" |
Lakshmikumar | 0:e876ef14b820 | 2 | #include"TextLCD.h" |
Lakshmikumar | 1:afb1111bab40 | 3 | #include"WakeUp.h" |
Lakshmikumar | 1:afb1111bab40 | 4 | #include"mBuinoSleep.h" |
Lakshmikumar | 0:e876ef14b820 | 5 | //AnalogIn sm1(p16); |
Lakshmikumar | 0:e876ef14b820 | 6 | //AnalogIn sm2(p17); |
Lakshmikumar | 0:e876ef14b820 | 7 | //AnalogIn sm3(p18); |
Lakshmikumar | 0:e876ef14b820 | 8 | //AnalogIn sm4(p19); |
Lakshmikumar | 1:afb1111bab40 | 9 | |
Lakshmikumar | 1:afb1111bab40 | 10 | DigitalOut myled(LED1); |
Lakshmikumar | 1:afb1111bab40 | 11 | DigitalOut ac(p20); |
Lakshmikumar | 0:e876ef14b820 | 12 | Serial GPRS(p9,p10); |
Lakshmikumar | 0:e876ef14b820 | 13 | Serial pc(USBTX,USBRX); |
Lakshmikumar | 0:e876ef14b820 | 14 | TextLCD lcd(p26, p25, p24, p23, p22, p21); //rs,e,d0-d3 |
Lakshmikumar | 0:e876ef14b820 | 15 | LocalFileSystem local("local"); |
Lakshmikumar | 1:afb1111bab40 | 16 | |
Lakshmikumar | 0:e876ef14b820 | 17 | char a=0x1A,c=0x0D; |
Lakshmikumar | 0:e876ef14b820 | 18 | char num[]="7411755981"; |
Lakshmikumar | 0:e876ef14b820 | 19 | float s[5],m[5]; |
Lakshmikumar | 0:e876ef14b820 | 20 | float ma; |
Lakshmikumar | 0:e876ef14b820 | 21 | |
Lakshmikumar | 1:afb1111bab40 | 22 | int b=100,count,fb; |
Lakshmikumar | 1:afb1111bab40 | 23 | char col1[]="ITERATION",col2[]="SM1",col3[]="SM2",col4[]="SM3",col5[]="SM4",col6[]="Mean",col7[]="Configuring for data services",col8[]="Uploading Sensor values to the Internet ",col9[]="Feedback from Internet",col10[]="Required action",col11[]="Sending SMS",col12[]="Excel Shet File Updated"; |
Lakshmikumar | 1:afb1111bab40 | 24 | char *char1; |
Lakshmikumar | 1:afb1111bab40 | 25 | float d; |
Lakshmikumar | 1:afb1111bab40 | 26 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 1:afb1111bab40 | 27 | void sleepwait(int q) |
Lakshmikumar | 1:afb1111bab40 | 28 | { int x; |
Lakshmikumar | 1:afb1111bab40 | 29 | x=q*1000; |
Lakshmikumar | 1:afb1111bab40 | 30 | myled=1; |
Lakshmikumar | 1:afb1111bab40 | 31 | WakeUp::calibrate(); |
Lakshmikumar | 1:afb1111bab40 | 32 | WakeUp::set_ms(x); |
Lakshmikumar | 1:afb1111bab40 | 33 | mBuinoSleep(Sleep); |
Lakshmikumar | 1:afb1111bab40 | 34 | } |
Lakshmikumar | 1:afb1111bab40 | 35 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 0:e876ef14b820 | 36 | void SensorRead() |
Lakshmikumar | 1:afb1111bab40 | 37 | { lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 38 | lcd.locate(0,0); |
Lakshmikumar | 0:e876ef14b820 | 39 | lcd.printf("Sensor Readings\r"); |
Lakshmikumar | 1:afb1111bab40 | 40 | s[1]=0.31; |
Lakshmikumar | 0:e876ef14b820 | 41 | m[1]=(0.057*(s[1]*1024))+25.072; |
Lakshmikumar | 0:e876ef14b820 | 42 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 43 | lcd.printf("Raw SM1=%0.3f",s[1]); |
Lakshmikumar | 1:afb1111bab40 | 44 | sleepwait(1); |
Lakshmikumar | 1:afb1111bab40 | 45 | s[2]=0.25; |
Lakshmikumar | 0:e876ef14b820 | 46 | m[2]=(0.057*(s[2]*1024))+25.072; |
Lakshmikumar | 0:e876ef14b820 | 47 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 48 | lcd.printf("Raw SM2=%0.3f",s[2]); |
Lakshmikumar | 1:afb1111bab40 | 49 | sleepwait(1); |
Lakshmikumar | 1:afb1111bab40 | 50 | s[3]=0.33; |
Lakshmikumar | 0:e876ef14b820 | 51 | m[3]=(0.057*(s[3]*1024))+25.072; |
Lakshmikumar | 0:e876ef14b820 | 52 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 53 | lcd.printf("Raw SM3=%0.3f",s[3]); |
Lakshmikumar | 1:afb1111bab40 | 54 | sleepwait(1); |
Lakshmikumar | 1:afb1111bab40 | 55 | s[4]=0.25; |
Lakshmikumar | 0:e876ef14b820 | 56 | m[4]=(0.057*(s[4]*1024))+25.072; |
Lakshmikumar | 0:e876ef14b820 | 57 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 58 | lcd.printf("Raw SM4=%0.3f",s[4]); |
Lakshmikumar | 1:afb1111bab40 | 59 | sleepwait(1); |
Lakshmikumar | 0:e876ef14b820 | 60 | ma=(m[1]+m[2]+m[3]+m[4])/4; |
Lakshmikumar | 0:e876ef14b820 | 61 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 62 | lcd.locate(0,0); |
Lakshmikumar | 1:afb1111bab40 | 63 | lcd.printf("Mean =%0.3f",ma); |
Lakshmikumar | 1:afb1111bab40 | 64 | sleepwait(2); |
Lakshmikumar | 0:e876ef14b820 | 65 | } |
Lakshmikumar | 0:e876ef14b820 | 66 | |
Lakshmikumar | 1:afb1111bab40 | 67 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 1:afb1111bab40 | 68 | void ac_control() |
Lakshmikumar | 1:afb1111bab40 | 69 | { |
Lakshmikumar | 1:afb1111bab40 | 70 | if(char1[0]=='0' ||char1[0]=='2'||char1[0]=='4'||char1[0]=='6'||char1[0]=='8') |
Lakshmikumar | 1:afb1111bab40 | 71 | { lcd.cls(); |
Lakshmikumar | 1:afb1111bab40 | 72 | lcd.printf("Bulb ON"); |
Lakshmikumar | 1:afb1111bab40 | 73 | ac=1; |
Lakshmikumar | 1:afb1111bab40 | 74 | } |
Lakshmikumar | 1:afb1111bab40 | 75 | else |
Lakshmikumar | 1:afb1111bab40 | 76 | { lcd.cls(); |
Lakshmikumar | 1:afb1111bab40 | 77 | lcd.printf("Bulb OFF"); |
Lakshmikumar | 1:afb1111bab40 | 78 | ac=0; |
Lakshmikumar | 1:afb1111bab40 | 79 | } |
Lakshmikumar | 1:afb1111bab40 | 80 | } |
Lakshmikumar | 1:afb1111bab40 | 81 | |
Lakshmikumar | 1:afb1111bab40 | 82 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 0:e876ef14b820 | 83 | void xlfile() |
Lakshmikumar | 1:afb1111bab40 | 84 | { |
Lakshmikumar | 1:afb1111bab40 | 85 | //Local storage (On board flash memory of 2MB) |
Lakshmikumar | 0:e876ef14b820 | 86 | count++; |
Lakshmikumar | 0:e876ef14b820 | 87 | FILE *fp=fopen("/local/KAEMS.csv","a"); |
Lakshmikumar | 1:afb1111bab40 | 88 | fprintf(fp,"%d,%0.3f,%0.3f,%0.3f,%0.3f,%0.3f,%s,%s,%c,%s,%s,%s\n",count,m[1],m[2],m[3],m[4],ma,col7,col8,char1[0],col10,col11,col12); |
Lakshmikumar | 0:e876ef14b820 | 89 | fclose(fp); |
Lakshmikumar | 0:e876ef14b820 | 90 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 91 | lcd.printf("File updated"); |
Lakshmikumar | 1:afb1111bab40 | 92 | sleepwait(1); |
Lakshmikumar | 0:e876ef14b820 | 93 | } |
Lakshmikumar | 1:afb1111bab40 | 94 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 1:afb1111bab40 | 95 | |
Lakshmikumar | 0:e876ef14b820 | 96 | void flushSerialBuffer(void) |
Lakshmikumar | 1:afb1111bab40 | 97 | { char char2=0; |
Lakshmikumar | 0:e876ef14b820 | 98 | while (GPRS.readable()) |
Lakshmikumar | 1:afb1111bab40 | 99 | { char2=GPRS.getc(); |
Lakshmikumar | 0:e876ef14b820 | 100 | } return; |
Lakshmikumar | 0:e876ef14b820 | 101 | } |
Lakshmikumar | 1:afb1111bab40 | 102 | |
Lakshmikumar | 1:afb1111bab40 | 103 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 1:afb1111bab40 | 104 | void data_tx_rx() |
Lakshmikumar | 0:e876ef14b820 | 105 | { |
Lakshmikumar | 0:e876ef14b820 | 106 | //GPRS commands |
Lakshmikumar | 1:afb1111bab40 | 107 | WakeUp::calibrate(); |
Lakshmikumar | 0:e876ef14b820 | 108 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 109 | lcd.locate(0,0); |
Lakshmikumar | 0:e876ef14b820 | 110 | lcd.printf(" Updating\n www.kaems.org"); |
Lakshmikumar | 1:afb1111bab40 | 111 | sleepwait(3); |
Lakshmikumar | 1:afb1111bab40 | 112 | |
Lakshmikumar | 0:e876ef14b820 | 113 | GPRS.printf("AT+SAPBR=0,1\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 114 | sleepwait(3); |
Lakshmikumar | 1:afb1111bab40 | 115 | |
Lakshmikumar | 0:e876ef14b820 | 116 | GPRS.printf("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 117 | sleepwait(3); |
Lakshmikumar | 1:afb1111bab40 | 118 | |
Lakshmikumar | 0:e876ef14b820 | 119 | GPRS.printf("AT+SAPBR=3,1,\"APN\",\"AIRCELGPRS.COM\"\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 120 | sleepwait(3); |
Lakshmikumar | 1:afb1111bab40 | 121 | |
Lakshmikumar | 0:e876ef14b820 | 122 | GPRS.printf("AT+SAPBR=1,1\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 123 | sleepwait(3); |
Lakshmikumar | 1:afb1111bab40 | 124 | |
Lakshmikumar | 0:e876ef14b820 | 125 | GPRS.printf("AT+HTTPINIT\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 126 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 127 | |
Lakshmikumar | 0:e876ef14b820 | 128 | GPRS.printf("AT+HTTPPARA=\"CID\",1\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 129 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 130 | |
Lakshmikumar | 0:e876ef14b820 | 131 | GPRS.printf("AT+HTTPPARA=\"URL\",\"http://kaems.org/update.php?u=3&t=23&h=34&s1=%f&s2=%f&s3=%f&s4=%f&ph=5&b=%d\"\r\n",m[1],m[2],m[3],m[4],b--); |
Lakshmikumar | 1:afb1111bab40 | 132 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 133 | |
Lakshmikumar | 0:e876ef14b820 | 134 | GPRS.printf("AT+HTTPDATA=1000,5000\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 135 | sleepwait(8); |
Lakshmikumar | 1:afb1111bab40 | 136 | |
Lakshmikumar | 0:e876ef14b820 | 137 | GPRS.printf("AT+HTTPACTION=1\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 138 | sleepwait(5); |
Lakshmikumar | 1:afb1111bab40 | 139 | |
Lakshmikumar | 1:afb1111bab40 | 140 | GPRS.printf("AT+HTTPPARA=\"CID\",1\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 141 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 142 | |
Lakshmikumar | 1:afb1111bab40 | 143 | GPRS.printf("AT+HTTPPARA=\"URL\",\"http://kaems.org/feedback.php\"\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 144 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 145 | |
Lakshmikumar | 1:afb1111bab40 | 146 | GPRS.printf("AT+HTTPACTION=0\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 147 | sleepwait(5); |
Lakshmikumar | 1:afb1111bab40 | 148 | |
Lakshmikumar | 1:afb1111bab40 | 149 | flushSerialBuffer(); |
Lakshmikumar | 1:afb1111bab40 | 150 | GPRS.printf("AT+HTTPREAD\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 151 | while(!GPRS.readable()) |
Lakshmikumar | 1:afb1111bab40 | 152 | { } |
Lakshmikumar | 1:afb1111bab40 | 153 | GPRS.scanf("%s",char1); |
Lakshmikumar | 1:afb1111bab40 | 154 | GPRS.scanf("%s",char1); |
Lakshmikumar | 1:afb1111bab40 | 155 | GPRS.scanf("%s",char1); |
Lakshmikumar | 1:afb1111bab40 | 156 | |
Lakshmikumar | 1:afb1111bab40 | 157 | pc.printf("Str=%c\r\n",char1[0]); |
Lakshmikumar | 0:e876ef14b820 | 158 | GPRS.printf("AT+HTTPTERM\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 159 | |
Lakshmikumar | 1:afb1111bab40 | 160 | |
Lakshmikumar | 0:e876ef14b820 | 161 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 162 | lcd.printf("KAEMS UPDATED"); |
Lakshmikumar | 1:afb1111bab40 | 163 | |
Lakshmikumar | 1:afb1111bab40 | 164 | lcd.cls(); |
Lakshmikumar | 1:afb1111bab40 | 165 | lcd.printf("Fbk=%c",char1[0]); |
Lakshmikumar | 1:afb1111bab40 | 166 | sleepwait(2); |
Lakshmikumar | 0:e876ef14b820 | 167 | } |
Lakshmikumar | 1:afb1111bab40 | 168 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 1:afb1111bab40 | 169 | |
Lakshmikumar | 1:afb1111bab40 | 170 | /*void feedback() |
Lakshmikumar | 0:e876ef14b820 | 171 | { lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 172 | lcd.locate(0,0); |
Lakshmikumar | 0:e876ef14b820 | 173 | lcd.printf("Waiting for feedback"); |
Lakshmikumar | 0:e876ef14b820 | 174 | wait(3); |
Lakshmikumar | 0:e876ef14b820 | 175 | GPRS.printf("AT+SAPBR=0,1\r\n"); |
Lakshmikumar | 0:e876ef14b820 | 176 | wait(3); |
Lakshmikumar | 0:e876ef14b820 | 177 | GPRS.printf("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n"); |
Lakshmikumar | 0:e876ef14b820 | 178 | wait(3); |
Lakshmikumar | 0:e876ef14b820 | 179 | GPRS.printf("AT+SAPBR=3,1,\"APN\",\"AIRCELGPRS.COM\"\r\n"); |
Lakshmikumar | 0:e876ef14b820 | 180 | wait(3); |
Lakshmikumar | 0:e876ef14b820 | 181 | GPRS.printf("AT+SAPBR=1,1\r\n"); |
Lakshmikumar | 0:e876ef14b820 | 182 | wait(3); |
Lakshmikumar | 0:e876ef14b820 | 183 | GPRS.printf("AT+HTTPINIT\r\n"); |
Lakshmikumar | 0:e876ef14b820 | 184 | wait(2); |
Lakshmikumar | 0:e876ef14b820 | 185 | GPRS.printf("AT+HTTPPARA=\"CID\",1\r\n"); |
Lakshmikumar | 0:e876ef14b820 | 186 | wait(2); |
Lakshmikumar | 1:afb1111bab40 | 187 | |
Lakshmikumar | 0:e876ef14b820 | 188 | // switch(str2[0]){ |
Lakshmikumar | 0:e876ef14b820 | 189 | // case '1': break; |
Lakshmikumar | 0:e876ef14b820 | 190 | // |
Lakshmikumar | 0:e876ef14b820 | 191 | // } |
Lakshmikumar | 0:e876ef14b820 | 192 | wait(5); |
Lakshmikumar | 0:e876ef14b820 | 193 | GPRS.printf("AT+HTTPTERM\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 194 | } */ |
Lakshmikumar | 1:afb1111bab40 | 195 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 0:e876ef14b820 | 196 | void sms() |
Lakshmikumar | 1:afb1111bab40 | 197 | { |
Lakshmikumar | 0:e876ef14b820 | 198 | GPRS.printf("AT\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 199 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 200 | |
Lakshmikumar | 0:e876ef14b820 | 201 | GPRS.printf("AT+CMGF=1\r\n"); |
Lakshmikumar | 1:afb1111bab40 | 202 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 203 | |
Lakshmikumar | 0:e876ef14b820 | 204 | GPRS.printf("AT+CMGS=\"%s\"\r\n",num); |
Lakshmikumar | 1:afb1111bab40 | 205 | sleepwait(3); |
Lakshmikumar | 0:e876ef14b820 | 206 | |
Lakshmikumar | 0:e876ef14b820 | 207 | if(ma<40) |
Lakshmikumar | 0:e876ef14b820 | 208 | { |
Lakshmikumar | 1:afb1111bab40 | 209 | GPRS.printf(" Water level is low \nMoisture level = %f \r\n",ma); |
Lakshmikumar | 1:afb1111bab40 | 210 | sleepwait(1); |
Lakshmikumar | 1:afb1111bab40 | 211 | |
Lakshmikumar | 0:e876ef14b820 | 212 | GPRS.printf("%c",a); |
Lakshmikumar | 1:afb1111bab40 | 213 | sleepwait(2); |
Lakshmikumar | 0:e876ef14b820 | 214 | } |
Lakshmikumar | 0:e876ef14b820 | 215 | |
Lakshmikumar | 0:e876ef14b820 | 216 | if(ma>40) |
Lakshmikumar | 0:e876ef14b820 | 217 | { |
Lakshmikumar | 1:afb1111bab40 | 218 | GPRS.printf(" Land has sufficient amount of water \n Moisture level = %f \r\n",ma); |
Lakshmikumar | 1:afb1111bab40 | 219 | sleepwait(1); |
Lakshmikumar | 1:afb1111bab40 | 220 | |
Lakshmikumar | 0:e876ef14b820 | 221 | GPRS.printf("%c",a); |
Lakshmikumar | 1:afb1111bab40 | 222 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 223 | } |
Lakshmikumar | 1:afb1111bab40 | 224 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 225 | lcd.printf("SMS Sent"); |
Lakshmikumar | 1:afb1111bab40 | 226 | sleepwait(2); |
Lakshmikumar | 1:afb1111bab40 | 227 | } |
Lakshmikumar | 1:afb1111bab40 | 228 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
Lakshmikumar | 0:e876ef14b820 | 229 | int main() |
Lakshmikumar | 1:afb1111bab40 | 230 | { |
Lakshmikumar | 0:e876ef14b820 | 231 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 232 | lcd.printf(" PRECISION\n AGRICULTURE"); |
Lakshmikumar | 1:afb1111bab40 | 233 | GPRS.baud(9600); |
Lakshmikumar | 1:afb1111bab40 | 234 | GPRS.printf("AT\n"); |
Lakshmikumar | 1:afb1111bab40 | 235 | sleepwait(3); |
Lakshmikumar | 1:afb1111bab40 | 236 | FILE *fp=fopen("/local/KAEMS.csv","a"); |
Lakshmikumar | 1:afb1111bab40 | 237 | fprintf(fp,"%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12); |
Lakshmikumar | 1:afb1111bab40 | 238 | fclose(fp); |
Lakshmikumar | 1:afb1111bab40 | 239 | |
Lakshmikumar | 0:e876ef14b820 | 240 | while(1) |
Lakshmikumar | 0:e876ef14b820 | 241 | { |
Lakshmikumar | 0:e876ef14b820 | 242 | SensorRead(); |
Lakshmikumar | 1:afb1111bab40 | 243 | //sms(); |
Lakshmikumar | 1:afb1111bab40 | 244 | data_tx_rx(); |
Lakshmikumar | 1:afb1111bab40 | 245 | ac_control(); |
Lakshmikumar | 0:e876ef14b820 | 246 | xlfile(); |
Lakshmikumar | 0:e876ef14b820 | 247 | lcd.cls(); |
Lakshmikumar | 0:e876ef14b820 | 248 | lcd.printf(" PRECISION\n AGRICULTURE"); |
Lakshmikumar | 1:afb1111bab40 | 249 | sleepwait(2); |
Lakshmikumar | 0:e876ef14b820 | 250 | } |
Lakshmikumar | 0:e876ef14b820 | 251 | } |