This code operates the backup robot for the Multi-Robot Security System designed for IUPUI's ECE 59500 Embedded Systems Design course.

Dependencies:   ESP8266 HCSR04_0 mbed

Committer:
Jakschwa
Date:
Mon May 02 17:25:19 2016 +0000
Revision:
0:72c099aedf8e
This code operates the backup robot for the Multi-Robot Security System designed for IUPUI's ECE 59500 Embedded Systems Design course.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jakschwa 0:72c099aedf8e 1 /* Robot 2
Jakschwa 0:72c099aedf8e 2 Project 3: Autonomous Multi-Robot Security Alert System
Jakschwa 0:72c099aedf8e 3 Notes:
Jakschwa 0:72c099aedf8e 4 1. Code checks entry id from the PostToSever results
Jakschwa 0:72c099aedf8e 5 2. Sends two xvalue and yvalue to server
Jakschwa 0:72c099aedf8e 6 3. Wall-following routine
Jakschwa 0:72c099aedf8e 7 */
Jakschwa 0:72c099aedf8e 8
Jakschwa 0:72c099aedf8e 9 #include "mbed.h"
Jakschwa 0:72c099aedf8e 10 #include "ESP8266.h"
Jakschwa 0:72c099aedf8e 11 #define IP "184.106.153.149" // IP Address of "api.thingspeak.com\"
Jakschwa 0:72c099aedf8e 12 #include <iostream> // std::cout
Jakschwa 0:72c099aedf8e 13 #include <string> // std::string, std::stoi
Jakschwa 0:72c099aedf8e 14 #include <sstream>
Jakschwa 0:72c099aedf8e 15 #include "HCSR04.h" //Ultrasonic distance sensor lib
Jakschwa 0:72c099aedf8e 16 #include <math.h>
Jakschwa 0:72c099aedf8e 17
Jakschwa 0:72c099aedf8e 18 //Subfunctions
Jakschwa 0:72c099aedf8e 19 void EncoderCount(void);
Jakschwa 0:72c099aedf8e 20 void Forward(void);
Jakschwa 0:72c099aedf8e 21 void Stop(void);
Jakschwa 0:72c099aedf8e 22 void Right90(void);
Jakschwa 0:72c099aedf8e 23 void Left90(void);
Jakschwa 0:72c099aedf8e 24 int GetFrontDistance(void);
Jakschwa 0:72c099aedf8e 25 int GetRightDistance(void);
Jakschwa 0:72c099aedf8e 26 void ConnectToServer(void);
Jakschwa 0:72c099aedf8e 27 void GetCurrentEntryID(void);
Jakschwa 0:72c099aedf8e 28 void CloseConnection(void);
Jakschwa 0:72c099aedf8e 29 unsigned int Wifi(void);
Jakschwa 0:72c099aedf8e 30
Jakschwa 0:72c099aedf8e 31 //Pin Setup
Jakschwa 0:72c099aedf8e 32 DigitalOut right_cont1(A2), right_cont2(A3), left_cont1(A0), left_cont2(A1);
Jakschwa 0:72c099aedf8e 33 DigitalOut red(LED_RED), blue(LED_BLUE), green(LED_GREEN);
Jakschwa 0:72c099aedf8e 34 DigitalIn sw2(SW2);
Jakschwa 0:72c099aedf8e 35 //Interrupt Setup
Jakschwa 0:72c099aedf8e 36 InterruptIn EncoderIn(D7); //External Interrupt
Jakschwa 0:72c099aedf8e 37
Jakschwa 0:72c099aedf8e 38 //PWM Setup
Jakschwa 0:72c099aedf8e 39 PwmOut right_pwm(A5);
Jakschwa 0:72c099aedf8e 40 PwmOut left_pwm(A4);
Jakschwa 0:72c099aedf8e 41
Jakschwa 0:72c099aedf8e 42 Serial pc(USBTX,USBRX); //Uart connection for TeraTerm
Jakschwa 0:72c099aedf8e 43 ESP8266 wifi(PTC17, PTC16, 115200); // tx, rx, baud rate for wifi
Jakschwa 0:72c099aedf8e 44
Jakschwa 0:72c099aedf8e 45 //Public variables
Jakschwa 0:72c099aedf8e 46 int frontDistance = 0, rightDistance = 0, setDistance = 0, lastRightDistance = 0;
Jakschwa 0:72c099aedf8e 47 int xvalue = 0, yvalue = 0;
Jakschwa 0:72c099aedf8e 48 unsigned int entryID = 0;
Jakschwa 0:72c099aedf8e 49 float leftSpeed = 0, rightSpeed = 0;
Jakschwa 0:72c099aedf8e 50 float ileftSpeed = 0, irightSpeed = 0;
Jakschwa 0:72c099aedf8e 51 float bleftSpeed = 0, brightSpeed = 0;
Jakschwa 0:72c099aedf8e 52 float inc = 0;
Jakschwa 0:72c099aedf8e 53
Jakschwa 0:72c099aedf8e 54 int main()
Jakschwa 0:72c099aedf8e 55 {
Jakschwa 0:72c099aedf8e 56 red = 1; //off
Jakschwa 0:72c099aedf8e 57 blue = 1; //off
Jakschwa 0:72c099aedf8e 58 green = 1; //off
Jakschwa 0:72c099aedf8e 59 while(sw2);
Jakschwa 0:72c099aedf8e 60 unsigned int go = 0;
Jakschwa 0:72c099aedf8e 61 pc.baud(9600);
Jakschwa 0:72c099aedf8e 62 pc.printf("starting\r\n");
Jakschwa 0:72c099aedf8e 63 //go = 1;
Jakschwa 0:72c099aedf8e 64 while(go != 1)
Jakschwa 0:72c099aedf8e 65 {
Jakschwa 0:72c099aedf8e 66 blue = 0;
Jakschwa 0:72c099aedf8e 67 wait(1); //wait 1 sec
Jakschwa 0:72c099aedf8e 68 blue = 1;
Jakschwa 0:72c099aedf8e 69 go = Wifi();
Jakschwa 0:72c099aedf8e 70 pc.printf("go = %d\r\n", go);
Jakschwa 0:72c099aedf8e 71 }
Jakschwa 0:72c099aedf8e 72 red = 0; //on
Jakschwa 0:72c099aedf8e 73 pc.printf("\r\n\r\nRecieved Threat Alert\r\n Proceeding to Coordinate: %d", xvalue);
Jakschwa 0:72c099aedf8e 74 wait(10);
Jakschwa 0:72c099aedf8e 75 //set motor period
Jakschwa 0:72c099aedf8e 76 right_pwm.period(0.007f);
Jakschwa 0:72c099aedf8e 77 left_pwm.period(0.007f);
Jakschwa 0:72c099aedf8e 78
Jakschwa 0:72c099aedf8e 79 //motor speed
Jakschwa 0:72c099aedf8e 80 leftSpeed = 0.50f;
Jakschwa 0:72c099aedf8e 81 rightSpeed = 0.70f;
Jakschwa 0:72c099aedf8e 82 ileftSpeed = 0.50f;
Jakschwa 0:72c099aedf8e 83 irightSpeed = 0.70f;
Jakschwa 0:72c099aedf8e 84 left_pwm.write(ileftSpeed);
Jakschwa 0:72c099aedf8e 85 right_pwm.write(irightSpeed);
Jakschwa 0:72c099aedf8e 86 Forward();
Jakschwa 0:72c099aedf8e 87 setDistance = GetRightDistance(); //check right distance distance
Jakschwa 0:72c099aedf8e 88 lastRightDistance = setDistance;
Jakschwa 0:72c099aedf8e 89 pc.printf("setDistance:%d\r\n", setDistance);
Jakschwa 0:72c099aedf8e 90 while(1)
Jakschwa 0:72c099aedf8e 91 {
Jakschwa 0:72c099aedf8e 92 EncoderIn.rise(NULL); //disable EncoderIn inturrpt
Jakschwa 0:72c099aedf8e 93
Jakschwa 0:72c099aedf8e 94 rightDistance = GetRightDistance(); //check distance
Jakschwa 0:72c099aedf8e 95 if( rightDistance > (lastRightDistance + 20) || rightDistance < (lastRightDistance - 20))
Jakschwa 0:72c099aedf8e 96 {
Jakschwa 0:72c099aedf8e 97 pc.printf("Old righDistance:%d, lastRightDistance: %d\r\n", rightDistance, lastRightDistance);
Jakschwa 0:72c099aedf8e 98 rightDistance = lastRightDistance -10;
Jakschwa 0:72c099aedf8e 99 pc.printf("New righDistance:%d\r\n", rightDistance);
Jakschwa 0:72c099aedf8e 100 }
Jakschwa 0:72c099aedf8e 101 else
Jakschwa 0:72c099aedf8e 102 lastRightDistance = rightDistance;
Jakschwa 0:72c099aedf8e 103
Jakschwa 0:72c099aedf8e 104 frontDistance = GetFrontDistance(); //check distance
Jakschwa 0:72c099aedf8e 105 //pc.printf("Right:%d , Front: %d\r\n", rightDistance, frontDistance);
Jakschwa 0:72c099aedf8e 106
Jakschwa 0:72c099aedf8e 107 if(rightDistance >=1000)
Jakschwa 0:72c099aedf8e 108 {
Jakschwa 0:72c099aedf8e 109 rightDistance = 1;
Jakschwa 0:72c099aedf8e 110 }
Jakschwa 0:72c099aedf8e 111 else
Jakschwa 0:72c099aedf8e 112 rightDistance = rightDistance;
Jakschwa 0:72c099aedf8e 113 //***turn right
Jakschwa 0:72c099aedf8e 114 if( rightDistance > setDistance + 1 )
Jakschwa 0:72c099aedf8e 115 {
Jakschwa 0:72c099aedf8e 116 inc = 0.2f;
Jakschwa 0:72c099aedf8e 117 leftSpeed = leftSpeed + inc;
Jakschwa 0:72c099aedf8e 118 if(leftSpeed > .55f)
Jakschwa 0:72c099aedf8e 119 leftSpeed = .55f;
Jakschwa 0:72c099aedf8e 120 left_pwm.write(leftSpeed);
Jakschwa 0:72c099aedf8e 121
Jakschwa 0:72c099aedf8e 122 rightSpeed = rightSpeed - inc;
Jakschwa 0:72c099aedf8e 123 if(rightSpeed < 0.30f)
Jakschwa 0:72c099aedf8e 124 rightSpeed = 0.30f;
Jakschwa 0:72c099aedf8e 125 right_pwm.write(rightSpeed);
Jakschwa 0:72c099aedf8e 126 pc.printf("Turn Right,right distance:%d, %d\r\n", rightDistance, setDistance);
Jakschwa 0:72c099aedf8e 127 pc.printf("leftSpeed:%f, rightSpeed:%f\r\n\r\n", leftSpeed, rightSpeed);
Jakschwa 0:72c099aedf8e 128 //Stop();
Jakschwa 0:72c099aedf8e 129 //while(sw2);
Jakschwa 0:72c099aedf8e 130 //wait(1);
Jakschwa 0:72c099aedf8e 131 //Forward();
Jakschwa 0:72c099aedf8e 132 }
Jakschwa 0:72c099aedf8e 133 //****turn left
Jakschwa 0:72c099aedf8e 134 //else ( rightDistance < (setDistance - 1))
Jakschwa 0:72c099aedf8e 135 else
Jakschwa 0:72c099aedf8e 136 {
Jakschwa 0:72c099aedf8e 137 inc = 0.2f;
Jakschwa 0:72c099aedf8e 138 leftSpeed = leftSpeed - inc;
Jakschwa 0:72c099aedf8e 139 if(leftSpeed < 0.25f)
Jakschwa 0:72c099aedf8e 140 leftSpeed = 0.25f;
Jakschwa 0:72c099aedf8e 141 left_pwm.write(leftSpeed);
Jakschwa 0:72c099aedf8e 142
Jakschwa 0:72c099aedf8e 143 rightSpeed = rightSpeed + inc;
Jakschwa 0:72c099aedf8e 144 if(rightSpeed > 0.65f)
Jakschwa 0:72c099aedf8e 145 rightSpeed = 0.65f;
Jakschwa 0:72c099aedf8e 146 right_pwm.write(rightSpeed);
Jakschwa 0:72c099aedf8e 147 pc.printf("Turn Left,right distance:%d, %d\r\n", rightDistance, setDistance);
Jakschwa 0:72c099aedf8e 148 pc.printf("leftSpeed:%f, rightSpeed:%f\r\n\r\n", leftSpeed, rightSpeed);
Jakschwa 0:72c099aedf8e 149 //Stop();
Jakschwa 0:72c099aedf8e 150 //while(sw2);
Jakschwa 0:72c099aedf8e 151 //wait(1);
Jakschwa 0:72c099aedf8e 152 //Forward();
Jakschwa 0:72c099aedf8e 153 }
Jakschwa 0:72c099aedf8e 154 /*else
Jakschwa 0:72c099aedf8e 155 {
Jakschwa 0:72c099aedf8e 156 left_pwm.write(ileftSpeed);
Jakschwa 0:72c099aedf8e 157 right_pwm.write(irightSpeed);
Jakschwa 0:72c099aedf8e 158 pc.printf("Go Straight,right distance:%d, %d\r\n", rightDistance, setDistance);
Jakschwa 0:72c099aedf8e 159 pc.printf("leftSpeed:%f, rightSpeed:%f\r\n\r\n", ileftSpeed, irightSpeed);
Jakschwa 0:72c099aedf8e 160 //Stop();
Jakschwa 0:72c099aedf8e 161 //while(sw2);
Jakschwa 0:72c099aedf8e 162 //wait(1);
Jakschwa 0:72c099aedf8e 163 //Forward();
Jakschwa 0:72c099aedf8e 164 } */
Jakschwa 0:72c099aedf8e 165 EncoderIn.rise(&EncoderCount); /*Interrupt: On rising edge of encoder tick*/
Jakschwa 0:72c099aedf8e 166 wait(.05);
Jakschwa 0:72c099aedf8e 167 }//end of while(1)
Jakschwa 0:72c099aedf8e 168 }//end of main()
Jakschwa 0:72c099aedf8e 169
Jakschwa 0:72c099aedf8e 170
Jakschwa 0:72c099aedf8e 171 unsigned int Wifi(void)
Jakschwa 0:72c099aedf8e 172 {
Jakschwa 0:72c099aedf8e 173 unsigned int go = 0;
Jakschwa 0:72c099aedf8e 174 pc.printf("\r\n******************Wifi Begin*********************************\r\n");
Jakschwa 0:72c099aedf8e 175 entryID = 0;
Jakschwa 0:72c099aedf8e 176 while(entryID == 0)
Jakschwa 0:72c099aedf8e 177 {
Jakschwa 0:72c099aedf8e 178 ConnectToServer();
Jakschwa 0:72c099aedf8e 179 GetCurrentEntryID();
Jakschwa 0:72c099aedf8e 180 CloseConnection();
Jakschwa 0:72c099aedf8e 181 }
Jakschwa 0:72c099aedf8e 182 if(xvalue != 0 || yvalue != 0)
Jakschwa 0:72c099aedf8e 183 go = 1;
Jakschwa 0:72c099aedf8e 184 else
Jakschwa 0:72c099aedf8e 185 go = 0;
Jakschwa 0:72c099aedf8e 186 pc.printf("\r\n******************Wifi Completed*********************************\r\n");
Jakschwa 0:72c099aedf8e 187 return go;
Jakschwa 0:72c099aedf8e 188 }//end of Wifi()
Jakschwa 0:72c099aedf8e 189
Jakschwa 0:72c099aedf8e 190
Jakschwa 0:72c099aedf8e 191
Jakschwa 0:72c099aedf8e 192 void GetCurrentEntryID(void)
Jakschwa 0:72c099aedf8e 193 {
Jakschwa 0:72c099aedf8e 194 unsigned int i = 0, len = 0, lastEntryID = 0,diff = 0, xvalue1 = 0, yvalue1 = 0, dash = 0, end =0, k = 0;
Jakschwa 0:72c099aedf8e 195 char snd[255],rcv1[1000];
Jakschwa 0:72c099aedf8e 196 const int size = sizeof(rcv1);
Jakschwa 0:72c099aedf8e 197 //Get values from ThinkSpeak
Jakschwa 0:72c099aedf8e 198 pc.printf("\r\nGet Values from ThingSpeak\r\n");
Jakschwa 0:72c099aedf8e 199 strcpy(snd,"GET http://api.thingspeak.com/channels/104257/fields/1.json?key=1YAN0O31ADCV9MEP HTTP/1.0\r\n\r\n");//97
Jakschwa 0:72c099aedf8e 200 //strcpy(snd,"GET http://api.thingspeak.com/channels/104257/status.json?key=1YAN0O31ADCV9MEP HTTP/1.0\r\n\r\n");//97
Jakschwa 0:72c099aedf8e 201 //send
Jakschwa 0:72c099aedf8e 202 //pc.printf("\r\nSending: %s",snd);
Jakschwa 0:72c099aedf8e 203 wifi.SendCMD(snd);
Jakschwa 0:72c099aedf8e 204 wifi.RcvReply(rcv1, 750);
Jakschwa 0:72c099aedf8e 205 pc.printf("\r\nSent Status: %s", rcv1);
Jakschwa 0:72c099aedf8e 206 //send again
Jakschwa 0:72c099aedf8e 207 //pc.printf("\r\nSending: %s",snd);
Jakschwa 0:72c099aedf8e 208 wifi.SendCMD(snd);
Jakschwa 0:72c099aedf8e 209 wifi.RcvReply(rcv1, 750);
Jakschwa 0:72c099aedf8e 210 pc.printf("\r\nSent Status: %s", rcv1);
Jakschwa 0:72c099aedf8e 211 for(i = 0; i <= size - 1; i++)
Jakschwa 0:72c099aedf8e 212 {
Jakschwa 0:72c099aedf8e 213 if(rcv1[i-1]==121 && rcv1[i]==95 && rcv1[i+1]==105 && rcv1[i+2]==100 && rcv1[i+6]<=57 && rcv1[i+6]>=44) //check for "_id" entry_id
Jakschwa 0:72c099aedf8e 214 {
Jakschwa 0:72c099aedf8e 215 if(rcv1[i+6] ==44)
Jakschwa 0:72c099aedf8e 216 {
Jakschwa 0:72c099aedf8e 217 len = 0;
Jakschwa 0:72c099aedf8e 218 entryID = rcv1[i+5]-48;
Jakschwa 0:72c099aedf8e 219 }
Jakschwa 0:72c099aedf8e 220 else
Jakschwa 0:72c099aedf8e 221 {
Jakschwa 0:72c099aedf8e 222 len = 1;
Jakschwa 0:72c099aedf8e 223 entryID = (rcv1[i+5]-48)*10+(rcv1[i+6]-48);
Jakschwa 0:72c099aedf8e 224 }
Jakschwa 0:72c099aedf8e 225 dash = 0;
Jakschwa 0:72c099aedf8e 226 end = 0;
Jakschwa 0:72c099aedf8e 227 for(k = 1;k<=20;k++)
Jakschwa 0:72c099aedf8e 228 {
Jakschwa 0:72c099aedf8e 229 if(rcv1[i+17+len+k] == 45) //look for "-"
Jakschwa 0:72c099aedf8e 230 {
Jakschwa 0:72c099aedf8e 231 dash = k;
Jakschwa 0:72c099aedf8e 232 k = 21;
Jakschwa 0:72c099aedf8e 233 }
Jakschwa 0:72c099aedf8e 234 }
Jakschwa 0:72c099aedf8e 235 for(k = 1;k<=20;k++)
Jakschwa 0:72c099aedf8e 236 {
Jakschwa 0:72c099aedf8e 237 if(rcv1[i+17+len+k] == 34)
Jakschwa 0:72c099aedf8e 238 {
Jakschwa 0:72c099aedf8e 239 end = k - 1;
Jakschwa 0:72c099aedf8e 240 diff = end - dash;
Jakschwa 0:72c099aedf8e 241 k = 21;
Jakschwa 0:72c099aedf8e 242 }
Jakschwa 0:72c099aedf8e 243 }
Jakschwa 0:72c099aedf8e 244 xvalue1 = 0;
Jakschwa 0:72c099aedf8e 245 yvalue1 = 0;
Jakschwa 0:72c099aedf8e 246
Jakschwa 0:72c099aedf8e 247 for(k=1;k<=dash;k++)
Jakschwa 0:72c099aedf8e 248 {
Jakschwa 0:72c099aedf8e 249 xvalue1 = xvalue1 + (rcv1[i+16+len+k]-48)*pow(10,float(dash - k));
Jakschwa 0:72c099aedf8e 250 }
Jakschwa 0:72c099aedf8e 251 for(k=1;k<=diff;k++)
Jakschwa 0:72c099aedf8e 252 {
Jakschwa 0:72c099aedf8e 253 yvalue1 = yvalue1 + (rcv1[i+17+len+dash+k]-48)*pow(10,float(diff-k));
Jakschwa 0:72c099aedf8e 254 }
Jakschwa 0:72c099aedf8e 255 }//if(entry_id)
Jakschwa 0:72c099aedf8e 256 else
Jakschwa 0:72c099aedf8e 257 i=i;
Jakschwa 0:72c099aedf8e 258
Jakschwa 0:72c099aedf8e 259 if(entryID <=99 && entryID > lastEntryID)
Jakschwa 0:72c099aedf8e 260 {
Jakschwa 0:72c099aedf8e 261 lastEntryID = entryID;
Jakschwa 0:72c099aedf8e 262 xvalue = xvalue1;
Jakschwa 0:72c099aedf8e 263 yvalue = yvalue1;
Jakschwa 0:72c099aedf8e 264 }
Jakschwa 0:72c099aedf8e 265 else
Jakschwa 0:72c099aedf8e 266 {
Jakschwa 0:72c099aedf8e 267 lastEntryID = lastEntryID;
Jakschwa 0:72c099aedf8e 268 xvalue = xvalue;
Jakschwa 0:72c099aedf8e 269 yvalue = yvalue;
Jakschwa 0:72c099aedf8e 270 }
Jakschwa 0:72c099aedf8e 271 } //end of For loop
Jakschwa 0:72c099aedf8e 272 pc.printf("\r\nfinal:: lastEntry_id= %d, xvalue = %d, yvalue = %d",lastEntryID, xvalue, yvalue);
Jakschwa 0:72c099aedf8e 273 } //end of GetCurrentEntryID
Jakschwa 0:72c099aedf8e 274
Jakschwa 0:72c099aedf8e 275
Jakschwa 0:72c099aedf8e 276
Jakschwa 0:72c099aedf8e 277
Jakschwa 0:72c099aedf8e 278
Jakschwa 0:72c099aedf8e 279
Jakschwa 0:72c099aedf8e 280
Jakschwa 0:72c099aedf8e 281
Jakschwa 0:72c099aedf8e 282
Jakschwa 0:72c099aedf8e 283
Jakschwa 0:72c099aedf8e 284
Jakschwa 0:72c099aedf8e 285
Jakschwa 0:72c099aedf8e 286
Jakschwa 0:72c099aedf8e 287
Jakschwa 0:72c099aedf8e 288
Jakschwa 0:72c099aedf8e 289
Jakschwa 0:72c099aedf8e 290
Jakschwa 0:72c099aedf8e 291
Jakschwa 0:72c099aedf8e 292
Jakschwa 0:72c099aedf8e 293
Jakschwa 0:72c099aedf8e 294
Jakschwa 0:72c099aedf8e 295 void ConnectToServer(void)
Jakschwa 0:72c099aedf8e 296 {
Jakschwa 0:72c099aedf8e 297 char snd[255],rcv[500];
Jakschwa 0:72c099aedf8e 298 pc.printf("\r\n\r\n*************Sending WiFi information*************\r\n");
Jakschwa 0:72c099aedf8e 299
Jakschwa 0:72c099aedf8e 300 //Set Wifi to Single Channel Mode
Jakschwa 0:72c099aedf8e 301 pc.printf("\r\nSet WiFi into Single Channel mode\r\n");
Jakschwa 0:72c099aedf8e 302 strcpy(snd,"AT+CIPMUX=0");//Setting WiFi into single Channel mode
Jakschwa 0:72c099aedf8e 303 wifi.SendCMD(snd);
Jakschwa 0:72c099aedf8e 304 //pc.printf(snd);
Jakschwa 0:72c099aedf8e 305 wifi.RcvReply(rcv, 750);
Jakschwa 0:72c099aedf8e 306 pc.printf("\r\nSingle Channel Mode Status: %s", rcv);
Jakschwa 0:72c099aedf8e 307 //wait(1);
Jakschwa 0:72c099aedf8e 308
Jakschwa 0:72c099aedf8e 309 //Initiate connection with THINGSPEAK server
Jakschwa 0:72c099aedf8e 310 pc.printf("\r\nInitiating connection with ThinkSpeak sever\r\n");
Jakschwa 0:72c099aedf8e 311 strcpy(snd,"AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80");
Jakschwa 0:72c099aedf8e 312 //pc.printf("\r\nsending: %s", snd);
Jakschwa 0:72c099aedf8e 313 wifi.SendCMD(snd);
Jakschwa 0:72c099aedf8e 314 wifi.RcvReply(rcv, 750);
Jakschwa 0:72c099aedf8e 315 pc.printf("\r\nConnection Status: %s", rcv);
Jakschwa 0:72c099aedf8e 316
Jakschwa 0:72c099aedf8e 317 //Send Number of Characters to be sent
Jakschwa 0:72c099aedf8e 318 pc.printf("\r\nSending Number of Characters to be sent");
Jakschwa 0:72c099aedf8e 319 strcpy(snd,"AT+CIPSEND=110"); //Send Number of open connections,Characters to send
Jakschwa 0:72c099aedf8e 320 wifi.SendCMD(snd);
Jakschwa 0:72c099aedf8e 321 //pc.printf(snd);
Jakschwa 0:72c099aedf8e 322 wifi.RcvReply(rcv, 750);
Jakschwa 0:72c099aedf8e 323 pc.printf("\r\nSent Status: %s", rcv);
Jakschwa 0:72c099aedf8e 324 } //end of ConnectToServer()
Jakschwa 0:72c099aedf8e 325
Jakschwa 0:72c099aedf8e 326
Jakschwa 0:72c099aedf8e 327
Jakschwa 0:72c099aedf8e 328 void CloseConnection(void)
Jakschwa 0:72c099aedf8e 329 {
Jakschwa 0:72c099aedf8e 330 char snd[255],rcv[500];
Jakschwa 0:72c099aedf8e 331 //close connection
Jakschwa 0:72c099aedf8e 332 pc.printf("\r\nClose the Connection\r\n");
Jakschwa 0:72c099aedf8e 333 strcpy(snd,"AT+CIPCLOSE"); //closing the connection with thingspeak server
Jakschwa 0:72c099aedf8e 334 wifi.SendCMD(snd);
Jakschwa 0:72c099aedf8e 335 //pc.printf("\r\nSending: %s",snd);
Jakschwa 0:72c099aedf8e 336 wifi.RcvReply(rcv, 750);
Jakschwa 0:72c099aedf8e 337 pc.printf("\r\nClose Connection Status: %s", rcv);
Jakschwa 0:72c099aedf8e 338
Jakschwa 0:72c099aedf8e 339 pc.printf("\r\nEnd of Closed Connection Response\r\n\r\n");
Jakschwa 0:72c099aedf8e 340 }//void connection
Jakschwa 0:72c099aedf8e 341
Jakschwa 0:72c099aedf8e 342 void EncoderCount()
Jakschwa 0:72c099aedf8e 343 {
Jakschwa 0:72c099aedf8e 344 static int xval = 0, yval = 0;
Jakschwa 0:72c099aedf8e 345 xval++;
Jakschwa 0:72c099aedf8e 346 //yval++;
Jakschwa 0:72c099aedf8e 347 pc.printf("\r\nX: %d, Y: %d\r\n\r\n", xval, yval);
Jakschwa 0:72c099aedf8e 348 if(xval >= xvalue)
Jakschwa 0:72c099aedf8e 349 {
Jakschwa 0:72c099aedf8e 350 EncoderIn.rise(NULL);
Jakschwa 0:72c099aedf8e 351 Stop();
Jakschwa 0:72c099aedf8e 352 green = 0; //on
Jakschwa 0:72c099aedf8e 353 while(1);
Jakschwa 0:72c099aedf8e 354 }
Jakschwa 0:72c099aedf8e 355 }
Jakschwa 0:72c099aedf8e 356
Jakschwa 0:72c099aedf8e 357 int GetFrontDistance(void)
Jakschwa 0:72c099aedf8e 358 {
Jakschwa 0:72c099aedf8e 359 int distance = 0;
Jakschwa 0:72c099aedf8e 360 HCSR04 sensor(D4, D5);
Jakschwa 0:72c099aedf8e 361 distance = sensor.distance();
Jakschwa 0:72c099aedf8e 362 return distance;
Jakschwa 0:72c099aedf8e 363 }
Jakschwa 0:72c099aedf8e 364
Jakschwa 0:72c099aedf8e 365 int GetRightDistance(void)
Jakschwa 0:72c099aedf8e 366 {
Jakschwa 0:72c099aedf8e 367 int distance = 0;
Jakschwa 0:72c099aedf8e 368 HCSR04 sensor(D2, D3);
Jakschwa 0:72c099aedf8e 369 distance = sensor.distance();
Jakschwa 0:72c099aedf8e 370 return distance;
Jakschwa 0:72c099aedf8e 371 }
Jakschwa 0:72c099aedf8e 372
Jakschwa 0:72c099aedf8e 373 void Forward(void)
Jakschwa 0:72c099aedf8e 374 {
Jakschwa 0:72c099aedf8e 375 right_cont1=0;
Jakschwa 0:72c099aedf8e 376 right_cont2=1;
Jakschwa 0:72c099aedf8e 377 left_cont1=0;
Jakschwa 0:72c099aedf8e 378 left_cont2=1;
Jakschwa 0:72c099aedf8e 379 }
Jakschwa 0:72c099aedf8e 380
Jakschwa 0:72c099aedf8e 381 void Stop(void)
Jakschwa 0:72c099aedf8e 382 {
Jakschwa 0:72c099aedf8e 383 right_cont1=0;
Jakschwa 0:72c099aedf8e 384 right_cont2=0;
Jakschwa 0:72c099aedf8e 385 left_cont1=0;
Jakschwa 0:72c099aedf8e 386 left_cont2=0;
Jakschwa 0:72c099aedf8e 387 }
Jakschwa 0:72c099aedf8e 388
Jakschwa 0:72c099aedf8e 389 void Right90(void)
Jakschwa 0:72c099aedf8e 390 {
Jakschwa 0:72c099aedf8e 391 right_cont1=0;
Jakschwa 0:72c099aedf8e 392 right_cont2=0;
Jakschwa 0:72c099aedf8e 393 left_cont1=0;
Jakschwa 0:72c099aedf8e 394 left_cont2=1;
Jakschwa 0:72c099aedf8e 395 }
Jakschwa 0:72c099aedf8e 396
Jakschwa 0:72c099aedf8e 397 void Left90(void)
Jakschwa 0:72c099aedf8e 398 {
Jakschwa 0:72c099aedf8e 399 right_cont1=0;
Jakschwa 0:72c099aedf8e 400 right_cont2=1;
Jakschwa 0:72c099aedf8e 401 left_cont1=0;
Jakschwa 0:72c099aedf8e 402 left_cont2=0;
Jakschwa 0:72c099aedf8e 403 }
Jakschwa 0:72c099aedf8e 404
Jakschwa 0:72c099aedf8e 405
Jakschwa 0:72c099aedf8e 406