Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LidarLitev2 Servo mbed
main.cpp@0:81cd42bce3cb, 2017-12-14 (annotated)
- Committer:
- AbhiBjee
- Date:
- Thu Dec 14 17:46:30 2017 +0000
- Revision:
- 0:81cd42bce3cb
LiDAR based real-time 3D Surveillance system
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AbhiBjee | 0:81cd42bce3cb | 1 | #include "mbed.h" |
AbhiBjee | 0:81cd42bce3cb | 2 | #include <math.h> |
AbhiBjee | 0:81cd42bce3cb | 3 | #include "LidarLitev2.h" |
AbhiBjee | 0:81cd42bce3cb | 4 | #include "Servo.h" |
AbhiBjee | 0:81cd42bce3cb | 5 | Servo myservo(D3); |
AbhiBjee | 0:81cd42bce3cb | 6 | PwmOut ENApwm(D3); |
AbhiBjee | 0:81cd42bce3cb | 7 | float level; |
AbhiBjee | 0:81cd42bce3cb | 8 | int period = 3000; |
AbhiBjee | 0:81cd42bce3cb | 9 | float Neutral_level=1500; |
AbhiBjee | 0:81cd42bce3cb | 10 | float clklevel = 0.9; |
AbhiBjee | 0:81cd42bce3cb | 11 | float ant_clklevel = 0.1; |
AbhiBjee | 0:81cd42bce3cb | 12 | DigitalOut DirPin(D4); |
AbhiBjee | 0:81cd42bce3cb | 13 | DigitalOut StepPin(D5); |
AbhiBjee | 0:81cd42bce3cb | 14 | int cnt = 0, Pulse; |
AbhiBjee | 0:81cd42bce3cb | 15 | |
AbhiBjee | 0:81cd42bce3cb | 16 | Serial esp(PTC17, PTC16); // tx, rx |
AbhiBjee | 0:81cd42bce3cb | 17 | DigitalOut reset(PTE24); |
AbhiBjee | 0:81cd42bce3cb | 18 | Timer t; |
AbhiBjee | 0:81cd42bce3cb | 19 | |
AbhiBjee | 0:81cd42bce3cb | 20 | int count,ended,timeout; |
AbhiBjee | 0:81cd42bce3cb | 21 | char buf[1024]; |
AbhiBjee | 0:81cd42bce3cb | 22 | char snd[1024]; |
AbhiBjee | 0:81cd42bce3cb | 23 | |
AbhiBjee | 0:81cd42bce3cb | 24 | char ssid[32] = "AbhiMotoXPlay"; //"BHNTG1682G25E3"."AbhiMotoXPlay" // enter WiFi router ssid inside the quotes |
AbhiBjee | 0:81cd42bce3cb | 25 | char pwd [32] = "c904anbh"; // "03333295"."c904anbh" //enter WiFi router password inside the quotes |
AbhiBjee | 0:81cd42bce3cb | 26 | |
AbhiBjee | 0:81cd42bce3cb | 27 | //void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(); |
AbhiBjee | 0:81cd42bce3cb | 28 | void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(), TCP_IPSend(); |
AbhiBjee | 0:81cd42bce3cb | 29 | //void send(void); |
AbhiBjee | 0:81cd42bce3cb | 30 | |
AbhiBjee | 0:81cd42bce3cb | 31 | |
AbhiBjee | 0:81cd42bce3cb | 32 | void Servo_Forward_degree(float level); |
AbhiBjee | 0:81cd42bce3cb | 33 | void Servo_Backward_degree(float level); |
AbhiBjee | 0:81cd42bce3cb | 34 | |
AbhiBjee | 0:81cd42bce3cb | 35 | AnalogIn Port_X(PTB2);// X read of ADXL335 A0 |
AbhiBjee | 0:81cd42bce3cb | 36 | AnalogIn Port_Y(PTB3);// Y read of ADXL335 A1 |
AbhiBjee | 0:81cd42bce3cb | 37 | AnalogIn Port_Z(PTB10);//Z read of ASXL335 A2 |
AbhiBjee | 0:81cd42bce3cb | 38 | float Scale(float inVal, float inMin, float inMax, float outMin, float outMax); |
AbhiBjee | 0:81cd42bce3cb | 39 | int StepperMove(); |
AbhiBjee | 0:81cd42bce3cb | 40 | int Ldist; |
AbhiBjee | 0:81cd42bce3cb | 41 | float Port_Xval,Port_Yval,Port_Zval,X_sqr,Y_sqr,Z_sqr,Psi,Theta,Phi,Xacc,Yacc,Zacc,Val,Zsq,Ysq,Xsq,PsiAng,ThetaAng,PhiAng; |
AbhiBjee | 0:81cd42bce3cb | 42 | LidarLitev2 Lidar(PTC11, PTC10); |
AbhiBjee | 0:81cd42bce3cb | 43 | Serial pc(USBTX,USBRX); |
AbhiBjee | 0:81cd42bce3cb | 44 | //float inMin = 0.40,inMax =0.60 ,outMin = -1000,outMax = 1000; |
AbhiBjee | 0:81cd42bce3cb | 45 | |
AbhiBjee | 0:81cd42bce3cb | 46 | |
AbhiBjee | 0:81cd42bce3cb | 47 | int main(){ |
AbhiBjee | 0:81cd42bce3cb | 48 | Lidar.configure(); |
AbhiBjee | 0:81cd42bce3cb | 49 | ENApwm.period_us(period); |
AbhiBjee | 0:81cd42bce3cb | 50 | while(1){ |
AbhiBjee | 0:81cd42bce3cb | 51 | Ldist = Lidar.distance(); |
AbhiBjee | 0:81cd42bce3cb | 52 | Port_Xval = Port_X.read(); |
AbhiBjee | 0:81cd42bce3cb | 53 | Xacc = Scale(Port_Xval,0.40,0.60,-1000,1000); |
AbhiBjee | 0:81cd42bce3cb | 54 | //X_sqr = Port_Xval*Port_Xval; |
AbhiBjee | 0:81cd42bce3cb | 55 | Port_Yval = Port_Y.read(); |
AbhiBjee | 0:81cd42bce3cb | 56 | Yacc = Scale(Port_Yval,0.40,0.60,-1000,1000); |
AbhiBjee | 0:81cd42bce3cb | 57 | //Y_sqr = Port_Yval * Port_Yval; |
AbhiBjee | 0:81cd42bce3cb | 58 | Port_Zval = Port_Z.read(); |
AbhiBjee | 0:81cd42bce3cb | 59 | Zacc = Scale(Port_Zval,0.40,0.60,-1000,1000); |
AbhiBjee | 0:81cd42bce3cb | 60 | Xsq = Xacc*Xacc; |
AbhiBjee | 0:81cd42bce3cb | 61 | Ysq = Yacc*Yacc; |
AbhiBjee | 0:81cd42bce3cb | 62 | Zsq = Zacc*Zacc; |
AbhiBjee | 0:81cd42bce3cb | 63 | //Z_sqr = Port_Zval*Port_Zval; |
AbhiBjee | 0:81cd42bce3cb | 64 | Theta = atan2(Yacc,(sqrt(Xsq+Zsq))) ; |
AbhiBjee | 0:81cd42bce3cb | 65 | ThetaAng = (Theta*180.0*7.0)/22.0; |
AbhiBjee | 0:81cd42bce3cb | 66 | Psi = atan2(Xacc,(sqrt(Ysq+Zsq))); |
AbhiBjee | 0:81cd42bce3cb | 67 | PsiAng = (Psi*180.0*7.0)/22.0; |
AbhiBjee | 0:81cd42bce3cb | 68 | Phi = atan2((sqrt(Xsq+Ysq)),Zacc); |
AbhiBjee | 0:81cd42bce3cb | 69 | Phi = Scale(Phi,0.0,3.1416,1.57,-1.57); |
AbhiBjee | 0:81cd42bce3cb | 70 | PhiAng = (Phi*180.0*7.0)/22.0; |
AbhiBjee | 0:81cd42bce3cb | 71 | //PhiAng = Scale(PhiAng,0.0,180.0,-90.0,90.0); |
AbhiBjee | 0:81cd42bce3cb | 72 | //printf(" %d %f %f %f\n\r", Ldist,Port_Xval,Port_Yval,Port_Zval); |
AbhiBjee | 0:81cd42bce3cb | 73 | //printf(" %f %f %f\n\r", Port_Xval,Port_Yval,Port_Zval); |
AbhiBjee | 0:81cd42bce3cb | 74 | //printf(" %f %f %f\n\r", Xacc,Yacc,Zacc); |
AbhiBjee | 0:81cd42bce3cb | 75 | pc.printf(" %d %f %f %f %f %f %f\n\r",Ldist,Psi,Theta,Phi,PsiAng,ThetaAng,PhiAng); |
AbhiBjee | 0:81cd42bce3cb | 76 | //dt.reset(); |
AbhiBjee | 0:81cd42bce3cb | 77 | //Servo_Forward_degree(clklevel); |
AbhiBjee | 0:81cd42bce3cb | 78 | if ((PhiAng>=-1.0)&&(PhiAng<=1.0)){ |
AbhiBjee | 0:81cd42bce3cb | 79 | pc.printf("Calibration done"); |
AbhiBjee | 0:81cd42bce3cb | 80 | break; |
AbhiBjee | 0:81cd42bce3cb | 81 | } |
AbhiBjee | 0:81cd42bce3cb | 82 | else{ |
AbhiBjee | 0:81cd42bce3cb | 83 | Servo_Forward_degree(clklevel); |
AbhiBjee | 0:81cd42bce3cb | 84 | pc.printf("Calibrating"); |
AbhiBjee | 0:81cd42bce3cb | 85 | wait(0.5); |
AbhiBjee | 0:81cd42bce3cb | 86 | continue; |
AbhiBjee | 0:81cd42bce3cb | 87 | } |
AbhiBjee | 0:81cd42bce3cb | 88 | } |
AbhiBjee | 0:81cd42bce3cb | 89 | reset=0; //hardware reset for 8266 |
AbhiBjee | 0:81cd42bce3cb | 90 | pc.baud(9600); // set what you want here depending on your terminal program speed |
AbhiBjee | 0:81cd42bce3cb | 91 | pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r"); |
AbhiBjee | 0:81cd42bce3cb | 92 | wait(0.5); |
AbhiBjee | 0:81cd42bce3cb | 93 | reset=1; |
AbhiBjee | 0:81cd42bce3cb | 94 | timeout=2; |
AbhiBjee | 0:81cd42bce3cb | 95 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 96 | |
AbhiBjee | 0:81cd42bce3cb | 97 | esp.baud(115200); |
AbhiBjee | 0:81cd42bce3cb | 98 | cnt=0; |
AbhiBjee | 0:81cd42bce3cb | 99 | ESPconfig(); |
AbhiBjee | 0:81cd42bce3cb | 100 | pc.printf("Start Stepper Motor\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 101 | wait(6); |
AbhiBjee | 0:81cd42bce3cb | 102 | |
AbhiBjee | 0:81cd42bce3cb | 103 | while (1){ |
AbhiBjee | 0:81cd42bce3cb | 104 | Ldist = Lidar.distance(); |
AbhiBjee | 0:81cd42bce3cb | 105 | Port_Xval = Port_X.read(); |
AbhiBjee | 0:81cd42bce3cb | 106 | Xacc = Scale(Port_Xval,0.40,0.60,-1000,1000); |
AbhiBjee | 0:81cd42bce3cb | 107 | //X_sqr = Port_Xval*Port_Xval; |
AbhiBjee | 0:81cd42bce3cb | 108 | Port_Yval = Port_Y.read(); |
AbhiBjee | 0:81cd42bce3cb | 109 | Yacc = Scale(Port_Yval,0.40,0.60,-1000,1000); |
AbhiBjee | 0:81cd42bce3cb | 110 | //Y_sqr = Port_Yval * Port_Yval; |
AbhiBjee | 0:81cd42bce3cb | 111 | Port_Zval = Port_Z.read(); |
AbhiBjee | 0:81cd42bce3cb | 112 | Zacc = Scale(Port_Zval,0.40,0.60,-1000,1000); |
AbhiBjee | 0:81cd42bce3cb | 113 | Xsq = Xacc*Xacc; |
AbhiBjee | 0:81cd42bce3cb | 114 | Ysq = Yacc*Yacc; |
AbhiBjee | 0:81cd42bce3cb | 115 | Zsq = Zacc*Zacc; |
AbhiBjee | 0:81cd42bce3cb | 116 | //Z_sqr = Port_Zval*Port_Zval; |
AbhiBjee | 0:81cd42bce3cb | 117 | Theta = atan2(Yacc,(sqrt(Xsq+Zsq))) ; |
AbhiBjee | 0:81cd42bce3cb | 118 | ThetaAng = (Theta*180.0*7.0)/22.0; |
AbhiBjee | 0:81cd42bce3cb | 119 | Psi = atan2(Xacc,(sqrt(Ysq+Zsq))); |
AbhiBjee | 0:81cd42bce3cb | 120 | PsiAng = (Psi*180.0*7.0)/22.0; |
AbhiBjee | 0:81cd42bce3cb | 121 | Phi = atan2((sqrt(Xsq+Ysq)),Zacc); |
AbhiBjee | 0:81cd42bce3cb | 122 | Phi = Scale(Phi,0.0,3.1416,1.57,-1.57); |
AbhiBjee | 0:81cd42bce3cb | 123 | PhiAng = (Phi*180.0*7.0)/22.0; |
AbhiBjee | 0:81cd42bce3cb | 124 | //PhiAng = Scale(PhiAng,0.0,180.0,-90.0,90.0); |
AbhiBjee | 0:81cd42bce3cb | 125 | //printf(" %d %f %f %f\n\r", Ldist,Port_Xval,Port_Yval,Port_Zval); |
AbhiBjee | 0:81cd42bce3cb | 126 | //printf(" %f %f %f\n\r", Port_Xval,Port_Yval,Port_Zval); |
AbhiBjee | 0:81cd42bce3cb | 127 | //printf(" %f %f %f\n\r", Xacc,Yacc,Zacc); |
AbhiBjee | 0:81cd42bce3cb | 128 | pc.printf(" LidarVal= %d Psi= %f Theta= %f Phi= %f Psi(Deg)= %f Theta(Deg)= %f Phi(Deg)= %f\n\r",Ldist,Psi,Theta,Phi,PsiAng,ThetaAng,PhiAng); |
AbhiBjee | 0:81cd42bce3cb | 129 | cnt = cnt+1; |
AbhiBjee | 0:81cd42bce3cb | 130 | //printf("%d\r\n"cnt); |
AbhiBjee | 0:81cd42bce3cb | 131 | if (cnt%3 == 0){ |
AbhiBjee | 0:81cd42bce3cb | 132 | Servo_Forward_degree(clklevel); |
AbhiBjee | 0:81cd42bce3cb | 133 | pc.printf("Servo Moved"); |
AbhiBjee | 0:81cd42bce3cb | 134 | } |
AbhiBjee | 0:81cd42bce3cb | 135 | else if (cnt%10 == 0){ |
AbhiBjee | 0:81cd42bce3cb | 136 | TCP_IPSend(); |
AbhiBjee | 0:81cd42bce3cb | 137 | } |
AbhiBjee | 0:81cd42bce3cb | 138 | |
AbhiBjee | 0:81cd42bce3cb | 139 | else{ |
AbhiBjee | 0:81cd42bce3cb | 140 | continue; |
AbhiBjee | 0:81cd42bce3cb | 141 | } |
AbhiBjee | 0:81cd42bce3cb | 142 | |
AbhiBjee | 0:81cd42bce3cb | 143 | |
AbhiBjee | 0:81cd42bce3cb | 144 | } |
AbhiBjee | 0:81cd42bce3cb | 145 | |
AbhiBjee | 0:81cd42bce3cb | 146 | |
AbhiBjee | 0:81cd42bce3cb | 147 | |
AbhiBjee | 0:81cd42bce3cb | 148 | |
AbhiBjee | 0:81cd42bce3cb | 149 | |
AbhiBjee | 0:81cd42bce3cb | 150 | |
AbhiBjee | 0:81cd42bce3cb | 151 | |
AbhiBjee | 0:81cd42bce3cb | 152 | } |
AbhiBjee | 0:81cd42bce3cb | 153 | |
AbhiBjee | 0:81cd42bce3cb | 154 | |
AbhiBjee | 0:81cd42bce3cb | 155 | float Scale(float inVal, float inMin, float inMax, float outMin, float outMax) |
AbhiBjee | 0:81cd42bce3cb | 156 | { |
AbhiBjee | 0:81cd42bce3cb | 157 | float ScaleValue = ((inVal - inMin)*(outMax - outMin)/(inMax - inMin) + outMin ); |
AbhiBjee | 0:81cd42bce3cb | 158 | return ScaleValue; |
AbhiBjee | 0:81cd42bce3cb | 159 | } |
AbhiBjee | 0:81cd42bce3cb | 160 | |
AbhiBjee | 0:81cd42bce3cb | 161 | void Servo_Forward_degree(float level){ |
AbhiBjee | 0:81cd42bce3cb | 162 | while(1){ |
AbhiBjee | 0:81cd42bce3cb | 163 | ENApwm.write(level); |
AbhiBjee | 0:81cd42bce3cb | 164 | wait(0.001); |
AbhiBjee | 0:81cd42bce3cb | 165 | pc.printf("%f \r",level); |
AbhiBjee | 0:81cd42bce3cb | 166 | if ((level >= 1.0)||(level<=0.0)) |
AbhiBjee | 0:81cd42bce3cb | 167 | { |
AbhiBjee | 0:81cd42bce3cb | 168 | //ENApwm.write(1.0); |
AbhiBjee | 0:81cd42bce3cb | 169 | break; |
AbhiBjee | 0:81cd42bce3cb | 170 | |
AbhiBjee | 0:81cd42bce3cb | 171 | } |
AbhiBjee | 0:81cd42bce3cb | 172 | level = level+0.1; |
AbhiBjee | 0:81cd42bce3cb | 173 | } |
AbhiBjee | 0:81cd42bce3cb | 174 | |
AbhiBjee | 0:81cd42bce3cb | 175 | |
AbhiBjee | 0:81cd42bce3cb | 176 | |
AbhiBjee | 0:81cd42bce3cb | 177 | } |
AbhiBjee | 0:81cd42bce3cb | 178 | |
AbhiBjee | 0:81cd42bce3cb | 179 | void Servo_Backward_degree(float level){ |
AbhiBjee | 0:81cd42bce3cb | 180 | while(1){ |
AbhiBjee | 0:81cd42bce3cb | 181 | /*ENApwm.write(level); |
AbhiBjee | 0:81cd42bce3cb | 182 | wait(0.001); |
AbhiBjee | 0:81cd42bce3cb | 183 | pc.printf("%f \r\n",level); |
AbhiBjee | 0:81cd42bce3cb | 184 | if ((level >= 1.0)||(level<=0.0)) |
AbhiBjee | 0:81cd42bce3cb | 185 | { |
AbhiBjee | 0:81cd42bce3cb | 186 | //ENApwm.write(1.0); |
AbhiBjee | 0:81cd42bce3cb | 187 | break; |
AbhiBjee | 0:81cd42bce3cb | 188 | |
AbhiBjee | 0:81cd42bce3cb | 189 | } |
AbhiBjee | 0:81cd42bce3cb | 190 | level = level-0.05;*/ |
AbhiBjee | 0:81cd42bce3cb | 191 | ENApwm.pulsewidth_us(90); |
AbhiBjee | 0:81cd42bce3cb | 192 | wait(0.001); |
AbhiBjee | 0:81cd42bce3cb | 193 | ENApwm.pulsewidth_us(0); |
AbhiBjee | 0:81cd42bce3cb | 194 | break; |
AbhiBjee | 0:81cd42bce3cb | 195 | |
AbhiBjee | 0:81cd42bce3cb | 196 | |
AbhiBjee | 0:81cd42bce3cb | 197 | } |
AbhiBjee | 0:81cd42bce3cb | 198 | |
AbhiBjee | 0:81cd42bce3cb | 199 | } |
AbhiBjee | 0:81cd42bce3cb | 200 | |
AbhiBjee | 0:81cd42bce3cb | 201 | int StepperMove(){ |
AbhiBjee | 0:81cd42bce3cb | 202 | for(int x = 0; x < 50; x++) { |
AbhiBjee | 0:81cd42bce3cb | 203 | StepPin=0; |
AbhiBjee | 0:81cd42bce3cb | 204 | wait(0.05); |
AbhiBjee | 0:81cd42bce3cb | 205 | StepPin=1; |
AbhiBjee | 0:81cd42bce3cb | 206 | wait(0.05); |
AbhiBjee | 0:81cd42bce3cb | 207 | cnt = cnt+1; |
AbhiBjee | 0:81cd42bce3cb | 208 | printf("%d\r\n",cnt); |
AbhiBjee | 0:81cd42bce3cb | 209 | return cnt; |
AbhiBjee | 0:81cd42bce3cb | 210 | |
AbhiBjee | 0:81cd42bce3cb | 211 | } |
AbhiBjee | 0:81cd42bce3cb | 212 | } |
AbhiBjee | 0:81cd42bce3cb | 213 | |
AbhiBjee | 0:81cd42bce3cb | 214 | void ESPsetbaudrate() |
AbhiBjee | 0:81cd42bce3cb | 215 | { |
AbhiBjee | 0:81cd42bce3cb | 216 | strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate |
AbhiBjee | 0:81cd42bce3cb | 217 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 218 | } |
AbhiBjee | 0:81cd42bce3cb | 219 | |
AbhiBjee | 0:81cd42bce3cb | 220 | // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++ |
AbhiBjee | 0:81cd42bce3cb | 221 | void ESPconfig() |
AbhiBjee | 0:81cd42bce3cb | 222 | { |
AbhiBjee | 0:81cd42bce3cb | 223 | wait(5); |
AbhiBjee | 0:81cd42bce3cb | 224 | strcpy(snd,"AT\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 225 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 226 | wait(1); |
AbhiBjee | 0:81cd42bce3cb | 227 | strcpy(snd,"AT\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 228 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 229 | wait(1); |
AbhiBjee | 0:81cd42bce3cb | 230 | strcpy(snd,"AT\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 231 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 232 | timeout=1; |
AbhiBjee | 0:81cd42bce3cb | 233 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 234 | wait(1); |
AbhiBjee | 0:81cd42bce3cb | 235 | pc.printf("\f---------- Starting ESP Config ----------\r\n\n"); |
AbhiBjee | 0:81cd42bce3cb | 236 | |
AbhiBjee | 0:81cd42bce3cb | 237 | pc.printf("---------- Reset & get Firmware ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 238 | strcpy(snd,"AT+RST\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 239 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 240 | timeout=5; |
AbhiBjee | 0:81cd42bce3cb | 241 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 242 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 243 | |
AbhiBjee | 0:81cd42bce3cb | 244 | wait(2); |
AbhiBjee | 0:81cd42bce3cb | 245 | |
AbhiBjee | 0:81cd42bce3cb | 246 | pc.printf("\n---------- Get Version ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 247 | strcpy(snd,"AT+GMR\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 248 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 249 | timeout=4; |
AbhiBjee | 0:81cd42bce3cb | 250 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 251 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 252 | |
AbhiBjee | 0:81cd42bce3cb | 253 | wait(3); |
AbhiBjee | 0:81cd42bce3cb | 254 | |
AbhiBjee | 0:81cd42bce3cb | 255 | // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station) |
AbhiBjee | 0:81cd42bce3cb | 256 | pc.printf("\n---------- Setting Mode ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 257 | strcpy(snd, "AT+CWMODE=1\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 258 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 259 | timeout=4; |
AbhiBjee | 0:81cd42bce3cb | 260 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 261 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 262 | |
AbhiBjee | 0:81cd42bce3cb | 263 | wait(2); |
AbhiBjee | 0:81cd42bce3cb | 264 | |
AbhiBjee | 0:81cd42bce3cb | 265 | // set CIPMUX to 0=Single,1=Multi |
AbhiBjee | 0:81cd42bce3cb | 266 | pc.printf("\n---------- Setting Connection Mode ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 267 | strcpy(snd, "AT+CIPMUX=1\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 268 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 269 | timeout=4; |
AbhiBjee | 0:81cd42bce3cb | 270 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 271 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 272 | |
AbhiBjee | 0:81cd42bce3cb | 273 | wait(2); |
AbhiBjee | 0:81cd42bce3cb | 274 | |
AbhiBjee | 0:81cd42bce3cb | 275 | /*pc.printf("\n---------- Listing Access Points ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 276 | strcpy(snd, "AT+CWLAP\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 277 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 278 | timeout=15; |
AbhiBjee | 0:81cd42bce3cb | 279 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 280 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 281 | |
AbhiBjee | 0:81cd42bce3cb | 282 | wait(2);*/ |
AbhiBjee | 0:81cd42bce3cb | 283 | |
AbhiBjee | 0:81cd42bce3cb | 284 | pc.printf("\n---------- Connecting to AP ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 285 | pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd); |
AbhiBjee | 0:81cd42bce3cb | 286 | strcpy(snd, "AT+CWJAP=\""); |
AbhiBjee | 0:81cd42bce3cb | 287 | strcat(snd, ssid); |
AbhiBjee | 0:81cd42bce3cb | 288 | strcat(snd, "\",\"");/* Here (\") denotes inverted commas in strings */ |
AbhiBjee | 0:81cd42bce3cb | 289 | strcat(snd, pwd); |
AbhiBjee | 0:81cd42bce3cb | 290 | strcat(snd, "\"\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 291 | pc.printf(snd); |
AbhiBjee | 0:81cd42bce3cb | 292 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 293 | timeout=10; |
AbhiBjee | 0:81cd42bce3cb | 294 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 295 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 296 | |
AbhiBjee | 0:81cd42bce3cb | 297 | wait(5); |
AbhiBjee | 0:81cd42bce3cb | 298 | |
AbhiBjee | 0:81cd42bce3cb | 299 | pc.printf("\n---------- Get IP's ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 300 | strcpy(snd, "AT+CIFSR\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 301 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 302 | timeout=3; |
AbhiBjee | 0:81cd42bce3cb | 303 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 304 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 305 | //const char* ipData = string(buf); |
AbhiBjee | 0:81cd42bce3cb | 306 | //const char* msg="Hello World!"; |
AbhiBjee | 0:81cd42bce3cb | 307 | //pc.printf(ipData); |
AbhiBjee | 0:81cd42bce3cb | 308 | |
AbhiBjee | 0:81cd42bce3cb | 309 | wait(1); |
AbhiBjee | 0:81cd42bce3cb | 310 | |
AbhiBjee | 0:81cd42bce3cb | 311 | pc.printf("\n---------- Get Connection Status ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 312 | strcpy(snd, "AT+CIPSTATUS\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 313 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 314 | timeout=5; |
AbhiBjee | 0:81cd42bce3cb | 315 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 316 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 317 | |
AbhiBjee | 0:81cd42bce3cb | 318 | pc.printf("\n\n\n If you get a valid (non zero) IP, ESP8266 has been set up.\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 319 | pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 320 | pc.printf(" It saves the SSID and password settings internally\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 321 | wait(10); |
AbhiBjee | 0:81cd42bce3cb | 322 | |
AbhiBjee | 0:81cd42bce3cb | 323 | /*pc.printf("\n---------- Start TCP_IP Connection with WAMP ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 324 | //strcpy(snd, "AT+CIFSR\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 325 | strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"149.165.231.70\",8660\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 326 | //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"192.168.43.237\",8383\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 327 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 328 | timeout=5; |
AbhiBjee | 0:81cd42bce3cb | 329 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 330 | pc.printf(buf);*/ |
AbhiBjee | 0:81cd42bce3cb | 331 | |
AbhiBjee | 0:81cd42bce3cb | 332 | } |
AbhiBjee | 0:81cd42bce3cb | 333 | |
AbhiBjee | 0:81cd42bce3cb | 334 | void TCP_IPSend(){ |
AbhiBjee | 0:81cd42bce3cb | 335 | |
AbhiBjee | 0:81cd42bce3cb | 336 | pc.printf("\n---------- Start TCP_IP Connection with WAMP ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 337 | //strcpy(snd, "AT+CIFSR\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 338 | strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"149.165.231.70\",8660\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 339 | //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"192.168.43.237\",8383\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 340 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 341 | timeout=5; |
AbhiBjee | 0:81cd42bce3cb | 342 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 343 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 344 | |
AbhiBjee | 0:81cd42bce3cb | 345 | //wait(); |
AbhiBjee | 0:81cd42bce3cb | 346 | |
AbhiBjee | 0:81cd42bce3cb | 347 | |
AbhiBjee | 0:81cd42bce3cb | 348 | |
AbhiBjee | 0:81cd42bce3cb | 349 | pc.printf("\n---------- Set TCP Data frame ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 350 | strcpy(snd, "AT+CIPSEND=4,90\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 351 | //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"184.106.153.149\",80\r\n") |
AbhiBjee | 0:81cd42bce3cb | 352 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 353 | timeout=1; |
AbhiBjee | 0:81cd42bce3cb | 354 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 355 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 356 | |
AbhiBjee | 0:81cd42bce3cb | 357 | //wait(0.5); |
AbhiBjee | 0:81cd42bce3cb | 358 | |
AbhiBjee | 0:81cd42bce3cb | 359 | pc.printf("\n---------- Send Data frame ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 360 | //strcpy(snd, "//AT+CIPSEND=4,44\r\n"); 0.000000 39.026474 9.756618 36.102848 |
AbhiBjee | 0:81cd42bce3cb | 361 | // "GET /adxldatastore.php?Xvalue=234&Yvalue=237&Zvalue=359 HTTP/1.1Host: 127.0.0.1Connection: close\r\n" |
AbhiBjee | 0:81cd42bce3cb | 362 | pc.printf("GET /MEuser/LidarDataStore.php?Xvalue=237&Yvalue=437&Zvalue=759&LidarValue=986\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 363 | sprintf(snd, "GET /MEuser/LidarDataStore.php?Xvalue=%0.2f&Yvalue=%0.2f&Zvalue=%0.2f&LidarValue=%d\r\n",PsiAng,ThetaAng,PhiAng,Ldist); |
AbhiBjee | 0:81cd42bce3cb | 364 | //sprintf(snd, "GET /update?key=6NNODQ1FN0J81A05&field1=%0.2f&field2=%0.2f&field3=%0.2f&field4=%0.2f\r\n", AvgCurrentVal,AvgPressureVal,AvgTempVal,AvgCO2Val); |
AbhiBjee | 0:81cd42bce3cb | 365 | /*strcpy(snd, "GET /update?key=6NNODQ1FN0J81A05&field1="); |
AbhiBjee | 0:81cd42bce3cb | 366 | Strng1=sprintf (num, "%0.1f", AvgCurrentVal); |
AbhiBjee | 0:81cd42bce3cb | 367 | strcat(snd, Strng); |
AbhiBjee | 0:81cd42bce3cb | 368 | strcat(snd, "&field2="); |
AbhiBjee | 0:81cd42bce3cb | 369 | Strng2=sprintf (num, "%0.1f", AvgPressureVal); |
AbhiBjee | 0:81cd42bce3cb | 370 | strcat(snd, Strng2); |
AbhiBjee | 0:81cd42bce3cb | 371 | strcat(snd, "&field3="); |
AbhiBjee | 0:81cd42bce3cb | 372 | Strng3=sprintf (num, "%0.1f", AvgTempVal); |
AbhiBjee | 0:81cd42bce3cb | 373 | strcat(snd, Strng3); |
AbhiBjee | 0:81cd42bce3cb | 374 | strcat(snd, "&field4="); |
AbhiBjee | 0:81cd42bce3cb | 375 | Strng4=sprintf (num, "%0.1f", AvgCO2Val); |
AbhiBjee | 0:81cd42bce3cb | 376 | strcat(snd, Strng4); |
AbhiBjee | 0:81cd42bce3cb | 377 | strcat(snd, "\r\n");*/ |
AbhiBjee | 0:81cd42bce3cb | 378 | |
AbhiBjee | 0:81cd42bce3cb | 379 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 380 | timeout=1; |
AbhiBjee | 0:81cd42bce3cb | 381 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 382 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 383 | |
AbhiBjee | 0:81cd42bce3cb | 384 | //wait(1); |
AbhiBjee | 0:81cd42bce3cb | 385 | |
AbhiBjee | 0:81cd42bce3cb | 386 | pc.printf("\n---------- Close TCP/IP Connection ----------\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 387 | strcpy(snd, "AT+CIPCLOSE\r\n"); |
AbhiBjee | 0:81cd42bce3cb | 388 | //strcpy(snd, "GET /update?key=2IKJ99A6BPSCORQC&field1=70\r\n") |
AbhiBjee | 0:81cd42bce3cb | 389 | SendCMD(); |
AbhiBjee | 0:81cd42bce3cb | 390 | timeout=1; |
AbhiBjee | 0:81cd42bce3cb | 391 | getreply(); |
AbhiBjee | 0:81cd42bce3cb | 392 | pc.printf(buf); |
AbhiBjee | 0:81cd42bce3cb | 393 | |
AbhiBjee | 0:81cd42bce3cb | 394 | //wait(2); |
AbhiBjee | 0:81cd42bce3cb | 395 | |
AbhiBjee | 0:81cd42bce3cb | 396 | |
AbhiBjee | 0:81cd42bce3cb | 397 | |
AbhiBjee | 0:81cd42bce3cb | 398 | |
AbhiBjee | 0:81cd42bce3cb | 399 | } |
AbhiBjee | 0:81cd42bce3cb | 400 | |
AbhiBjee | 0:81cd42bce3cb | 401 | void SendCMD() |
AbhiBjee | 0:81cd42bce3cb | 402 | { |
AbhiBjee | 0:81cd42bce3cb | 403 | esp.printf("%s", snd); |
AbhiBjee | 0:81cd42bce3cb | 404 | } |
AbhiBjee | 0:81cd42bce3cb | 405 | |
AbhiBjee | 0:81cd42bce3cb | 406 | void getreply() |
AbhiBjee | 0:81cd42bce3cb | 407 | { |
AbhiBjee | 0:81cd42bce3cb | 408 | memset(buf, '\0', sizeof(buf)); |
AbhiBjee | 0:81cd42bce3cb | 409 | t.start(); |
AbhiBjee | 0:81cd42bce3cb | 410 | ended=0; |
AbhiBjee | 0:81cd42bce3cb | 411 | count=0; |
AbhiBjee | 0:81cd42bce3cb | 412 | while(!ended) { |
AbhiBjee | 0:81cd42bce3cb | 413 | if(esp.readable()) { |
AbhiBjee | 0:81cd42bce3cb | 414 | buf[count] = esp.getc(); |
AbhiBjee | 0:81cd42bce3cb | 415 | count++; |
AbhiBjee | 0:81cd42bce3cb | 416 | } |
AbhiBjee | 0:81cd42bce3cb | 417 | if(t.read() > timeout) { |
AbhiBjee | 0:81cd42bce3cb | 418 | ended = 1; |
AbhiBjee | 0:81cd42bce3cb | 419 | t.stop(); |
AbhiBjee | 0:81cd42bce3cb | 420 | t.reset(); |
AbhiBjee | 0:81cd42bce3cb | 421 | } |
AbhiBjee | 0:81cd42bce3cb | 422 | } |
AbhiBjee | 0:81cd42bce3cb | 423 | } |
AbhiBjee | 0:81cd42bce3cb | 424 |