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
Revision 0:81cd42bce3cb, committed 2017-12-14
- Comitter:
- AbhiBjee
- Date:
- Thu Dec 14 17:46:30 2017 +0000
- Commit message:
- LiDAR based real-time 3D Surveillance system
Changed in this revision
diff -r 000000000000 -r 81cd42bce3cb LidarLitev2.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LidarLitev2.lib Thu Dec 14 17:46:30 2017 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/sventura3/code/LidarLitev2/#7e6c07be1754
diff -r 000000000000 -r 81cd42bce3cb Servo.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Servo.lib Thu Dec 14 17:46:30 2017 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/Servo/#36b69a7ced07
diff -r 000000000000 -r 81cd42bce3cb main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 14 17:46:30 2017 +0000 @@ -0,0 +1,424 @@ +#include "mbed.h" +#include <math.h> +#include "LidarLitev2.h" +#include "Servo.h" +Servo myservo(D3); +PwmOut ENApwm(D3); +float level; +int period = 3000; +float Neutral_level=1500; +float clklevel = 0.9; +float ant_clklevel = 0.1; +DigitalOut DirPin(D4); +DigitalOut StepPin(D5); +int cnt = 0, Pulse; + +Serial esp(PTC17, PTC16); // tx, rx +DigitalOut reset(PTE24); +Timer t; + +int count,ended,timeout; +char buf[1024]; +char snd[1024]; + +char ssid[32] = "AbhiMotoXPlay"; //"BHNTG1682G25E3"."AbhiMotoXPlay" // enter WiFi router ssid inside the quotes +char pwd [32] = "c904anbh"; // "03333295"."c904anbh" //enter WiFi router password inside the quotes + +//void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(); +void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(), TCP_IPSend(); +//void send(void); + + +void Servo_Forward_degree(float level); +void Servo_Backward_degree(float level); + +AnalogIn Port_X(PTB2);// X read of ADXL335 A0 +AnalogIn Port_Y(PTB3);// Y read of ADXL335 A1 +AnalogIn Port_Z(PTB10);//Z read of ASXL335 A2 +float Scale(float inVal, float inMin, float inMax, float outMin, float outMax); +int StepperMove(); +int Ldist; +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; +LidarLitev2 Lidar(PTC11, PTC10); +Serial pc(USBTX,USBRX); +//float inMin = 0.40,inMax =0.60 ,outMin = -1000,outMax = 1000; + + +int main(){ + Lidar.configure(); + ENApwm.period_us(period); + while(1){ + Ldist = Lidar.distance(); + Port_Xval = Port_X.read(); + Xacc = Scale(Port_Xval,0.40,0.60,-1000,1000); + //X_sqr = Port_Xval*Port_Xval; + Port_Yval = Port_Y.read(); + Yacc = Scale(Port_Yval,0.40,0.60,-1000,1000); + //Y_sqr = Port_Yval * Port_Yval; + Port_Zval = Port_Z.read(); + Zacc = Scale(Port_Zval,0.40,0.60,-1000,1000); + Xsq = Xacc*Xacc; + Ysq = Yacc*Yacc; + Zsq = Zacc*Zacc; + //Z_sqr = Port_Zval*Port_Zval; + Theta = atan2(Yacc,(sqrt(Xsq+Zsq))) ; + ThetaAng = (Theta*180.0*7.0)/22.0; + Psi = atan2(Xacc,(sqrt(Ysq+Zsq))); + PsiAng = (Psi*180.0*7.0)/22.0; + Phi = atan2((sqrt(Xsq+Ysq)),Zacc); + Phi = Scale(Phi,0.0,3.1416,1.57,-1.57); + PhiAng = (Phi*180.0*7.0)/22.0; + //PhiAng = Scale(PhiAng,0.0,180.0,-90.0,90.0); + //printf(" %d %f %f %f\n\r", Ldist,Port_Xval,Port_Yval,Port_Zval); + //printf(" %f %f %f\n\r", Port_Xval,Port_Yval,Port_Zval); + //printf(" %f %f %f\n\r", Xacc,Yacc,Zacc); + pc.printf(" %d %f %f %f %f %f %f\n\r",Ldist,Psi,Theta,Phi,PsiAng,ThetaAng,PhiAng); + //dt.reset(); + //Servo_Forward_degree(clklevel); + if ((PhiAng>=-1.0)&&(PhiAng<=1.0)){ + pc.printf("Calibration done"); + break; + } + else{ + Servo_Forward_degree(clklevel); + pc.printf("Calibrating"); + wait(0.5); + continue; + } + } + reset=0; //hardware reset for 8266 + pc.baud(9600); // set what you want here depending on your terminal program speed + pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r"); + wait(0.5); + reset=1; + timeout=2; + getreply(); + + esp.baud(115200); + cnt=0; + ESPconfig(); + pc.printf("Start Stepper Motor\r\n"); + wait(6); + + while (1){ + Ldist = Lidar.distance(); + Port_Xval = Port_X.read(); + Xacc = Scale(Port_Xval,0.40,0.60,-1000,1000); + //X_sqr = Port_Xval*Port_Xval; + Port_Yval = Port_Y.read(); + Yacc = Scale(Port_Yval,0.40,0.60,-1000,1000); + //Y_sqr = Port_Yval * Port_Yval; + Port_Zval = Port_Z.read(); + Zacc = Scale(Port_Zval,0.40,0.60,-1000,1000); + Xsq = Xacc*Xacc; + Ysq = Yacc*Yacc; + Zsq = Zacc*Zacc; + //Z_sqr = Port_Zval*Port_Zval; + Theta = atan2(Yacc,(sqrt(Xsq+Zsq))) ; + ThetaAng = (Theta*180.0*7.0)/22.0; + Psi = atan2(Xacc,(sqrt(Ysq+Zsq))); + PsiAng = (Psi*180.0*7.0)/22.0; + Phi = atan2((sqrt(Xsq+Ysq)),Zacc); + Phi = Scale(Phi,0.0,3.1416,1.57,-1.57); + PhiAng = (Phi*180.0*7.0)/22.0; + //PhiAng = Scale(PhiAng,0.0,180.0,-90.0,90.0); + //printf(" %d %f %f %f\n\r", Ldist,Port_Xval,Port_Yval,Port_Zval); + //printf(" %f %f %f\n\r", Port_Xval,Port_Yval,Port_Zval); + //printf(" %f %f %f\n\r", Xacc,Yacc,Zacc); + 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); + cnt = cnt+1; + //printf("%d\r\n"cnt); + if (cnt%3 == 0){ + Servo_Forward_degree(clklevel); + pc.printf("Servo Moved"); + } + else if (cnt%10 == 0){ + TCP_IPSend(); + } + + else{ + continue; + } + + + } + + + + + + + +} + + +float Scale(float inVal, float inMin, float inMax, float outMin, float outMax) +{ + float ScaleValue = ((inVal - inMin)*(outMax - outMin)/(inMax - inMin) + outMin ); + return ScaleValue; +} + +void Servo_Forward_degree(float level){ + while(1){ + ENApwm.write(level); + wait(0.001); + pc.printf("%f \r",level); + if ((level >= 1.0)||(level<=0.0)) + { + //ENApwm.write(1.0); + break; + + } + level = level+0.1; + } + + + +} + +void Servo_Backward_degree(float level){ + while(1){ + /*ENApwm.write(level); + wait(0.001); + pc.printf("%f \r\n",level); + if ((level >= 1.0)||(level<=0.0)) + { + //ENApwm.write(1.0); + break; + + } + level = level-0.05;*/ + ENApwm.pulsewidth_us(90); + wait(0.001); + ENApwm.pulsewidth_us(0); + break; + + + } + +} + +int StepperMove(){ + for(int x = 0; x < 50; x++) { + StepPin=0; + wait(0.05); + StepPin=1; + wait(0.05); + cnt = cnt+1; + printf("%d\r\n",cnt); + return cnt; + + } +} + +void ESPsetbaudrate() +{ + strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate + SendCMD(); +} + +// +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++ +void ESPconfig() +{ + wait(5); + strcpy(snd,"AT\r\n"); + SendCMD(); + wait(1); + strcpy(snd,"AT\r\n"); + SendCMD(); + wait(1); + strcpy(snd,"AT\r\n"); + SendCMD(); + timeout=1; + getreply(); + wait(1); + pc.printf("\f---------- Starting ESP Config ----------\r\n\n"); + + pc.printf("---------- Reset & get Firmware ----------\r\n"); + strcpy(snd,"AT+RST\r\n"); + SendCMD(); + timeout=5; + getreply(); + pc.printf(buf); + + wait(2); + + pc.printf("\n---------- Get Version ----------\r\n"); + strcpy(snd,"AT+GMR\r\n"); + SendCMD(); + timeout=4; + getreply(); + pc.printf(buf); + + wait(3); + + // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station) + pc.printf("\n---------- Setting Mode ----------\r\n"); + strcpy(snd, "AT+CWMODE=1\r\n"); + SendCMD(); + timeout=4; + getreply(); + pc.printf(buf); + + wait(2); + + // set CIPMUX to 0=Single,1=Multi + pc.printf("\n---------- Setting Connection Mode ----------\r\n"); + strcpy(snd, "AT+CIPMUX=1\r\n"); + SendCMD(); + timeout=4; + getreply(); + pc.printf(buf); + + wait(2); + + /*pc.printf("\n---------- Listing Access Points ----------\r\n"); + strcpy(snd, "AT+CWLAP\r\n"); + SendCMD(); + timeout=15; + getreply(); + pc.printf(buf); + + wait(2);*/ + + pc.printf("\n---------- Connecting to AP ----------\r\n"); + pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd); + strcpy(snd, "AT+CWJAP=\""); + strcat(snd, ssid); + strcat(snd, "\",\"");/* Here (\") denotes inverted commas in strings */ + strcat(snd, pwd); + strcat(snd, "\"\r\n"); + pc.printf(snd); + SendCMD(); + timeout=10; + getreply(); + pc.printf(buf); + + wait(5); + + pc.printf("\n---------- Get IP's ----------\r\n"); + strcpy(snd, "AT+CIFSR\r\n"); + SendCMD(); + timeout=3; + getreply(); + pc.printf(buf); + //const char* ipData = string(buf); + //const char* msg="Hello World!"; + //pc.printf(ipData); + + wait(1); + + pc.printf("\n---------- Get Connection Status ----------\r\n"); + strcpy(snd, "AT+CIPSTATUS\r\n"); + SendCMD(); + timeout=5; + getreply(); + pc.printf(buf); + + pc.printf("\n\n\n If you get a valid (non zero) IP, ESP8266 has been set up.\r\n"); + pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n"); + pc.printf(" It saves the SSID and password settings internally\r\n"); + wait(10); + + /*pc.printf("\n---------- Start TCP_IP Connection with WAMP ----------\r\n"); + //strcpy(snd, "AT+CIFSR\r\n"); + strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"149.165.231.70\",8660\r\n"); + //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"192.168.43.237\",8383\r\n"); + SendCMD(); + timeout=5; + getreply(); + pc.printf(buf);*/ + +} + +void TCP_IPSend(){ + + pc.printf("\n---------- Start TCP_IP Connection with WAMP ----------\r\n"); + //strcpy(snd, "AT+CIFSR\r\n"); + strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"149.165.231.70\",8660\r\n"); + //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"192.168.43.237\",8383\r\n"); + SendCMD(); + timeout=5; + getreply(); + pc.printf(buf); + + //wait(); + + + + pc.printf("\n---------- Set TCP Data frame ----------\r\n"); + strcpy(snd, "AT+CIPSEND=4,90\r\n"); + //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"184.106.153.149\",80\r\n") + SendCMD(); + timeout=1; + getreply(); + pc.printf(buf); + + //wait(0.5); + + pc.printf("\n---------- Send Data frame ----------\r\n"); + //strcpy(snd, "//AT+CIPSEND=4,44\r\n"); 0.000000 39.026474 9.756618 36.102848 + // "GET /adxldatastore.php?Xvalue=234&Yvalue=237&Zvalue=359 HTTP/1.1Host: 127.0.0.1Connection: close\r\n" + pc.printf("GET /MEuser/LidarDataStore.php?Xvalue=237&Yvalue=437&Zvalue=759&LidarValue=986\r\n"); + sprintf(snd, "GET /MEuser/LidarDataStore.php?Xvalue=%0.2f&Yvalue=%0.2f&Zvalue=%0.2f&LidarValue=%d\r\n",PsiAng,ThetaAng,PhiAng,Ldist); + //sprintf(snd, "GET /update?key=6NNODQ1FN0J81A05&field1=%0.2f&field2=%0.2f&field3=%0.2f&field4=%0.2f\r\n", AvgCurrentVal,AvgPressureVal,AvgTempVal,AvgCO2Val); + /*strcpy(snd, "GET /update?key=6NNODQ1FN0J81A05&field1="); + Strng1=sprintf (num, "%0.1f", AvgCurrentVal); + strcat(snd, Strng); + strcat(snd, "&field2="); + Strng2=sprintf (num, "%0.1f", AvgPressureVal); + strcat(snd, Strng2); + strcat(snd, "&field3="); + Strng3=sprintf (num, "%0.1f", AvgTempVal); + strcat(snd, Strng3); + strcat(snd, "&field4="); + Strng4=sprintf (num, "%0.1f", AvgCO2Val); + strcat(snd, Strng4); + strcat(snd, "\r\n");*/ + + SendCMD(); + timeout=1; + getreply(); + pc.printf(buf); + + //wait(1); + + pc.printf("\n---------- Close TCP/IP Connection ----------\r\n"); + strcpy(snd, "AT+CIPCLOSE\r\n"); + //strcpy(snd, "GET /update?key=2IKJ99A6BPSCORQC&field1=70\r\n") + SendCMD(); + timeout=1; + getreply(); + pc.printf(buf); + + //wait(2); + + + + +} + +void SendCMD() +{ + esp.printf("%s", snd); +} + +void getreply() +{ + memset(buf, '\0', sizeof(buf)); + t.start(); + ended=0; + count=0; + while(!ended) { + if(esp.readable()) { + buf[count] = esp.getc(); + count++; + } + if(t.read() > timeout) { + ended = 1; + t.stop(); + t.reset(); + } + } +} +
diff -r 000000000000 -r 81cd42bce3cb mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Dec 14 17:46:30 2017 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/e7ca05fa8600 \ No newline at end of file