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

Dependencies:   ESP8266 HCSR04 mbed

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