-->
Page 1 of 1

3 servos+ESP01+Nano

PostPosted: Sun Dec 20, 2015 2:36 pm
by leonardo
hello brothers !

i am an Soldier on the Rio de Janeiro(BRAZIL) Military Police, i'm an inteligence agent. i basically work on undercover operations on the city slums.
i trying to put together an robot to transmit videos on heavily armed drug dealers.
IMG_20151217_115033.jpg



have managed to make it walk and turn both sides, but now i'm getting trouble to put ESP01 to work...

IMG_20151220_163855.jpg


i'm using this battery to the ESP, due to the lower voltage i'm not using any reducer to the VCC, only the resitors on the picture to the conection between TX/RX arduino/ESP
Screenshot_20151218-205118.png


i only get the WiFi signal, but nothing more, i put 192.168.4.1 on the browser, but nothing happens. it not responds to AT commands on the IDE,

[attachment=1]IMG_20151220_163939.jpg[/attachment

the code i'm using i get on the WEB and adapted it to my needs.

got it working !! but...

PostPosted: Wed Dec 23, 2015 6:21 pm
by leonardo
... the code wont works... it compiles, but, does nothing !! i am able to connect to the AI-Thinkers network, enter the IP and visualize the HTML for the robot, but dos nothing to the servos !!!

why ??

Code: Select all 
 #include <Servo.h>
#include <ESP8266.h>

   Servo DireitaServo;
   Servo EsquerdaServo;
   Servo QuadrilServo;
   
     void Setup(){
                QuadrilServo.attach(11);
                DireitaServo.attach(10);
                EsquerdaServo.attach(9);
     }
   
   int quadPosUm = 65;
   int quadPosDois = 105;
   int centroPos = 90;
   int direitaUm = 75;
   int direitaDois = 105;
   int esquerdaUm = 75;
   int esquerdaDois = 115;
   int esqVolUm = 95;
   int esqVolDois = 135;
   int dirVolUm = 95;
   int dirVolDois = 125;
 
#define esp Serial
 

#define BUFFER_SIZE 20000
char buffer[BUFFER_SIZE];
 
void send_at(String x)
{
  esp.println(x);
}
 
void setup(){
 
delay(2000);
esp.begin(9600);
esp.println("AT");
delay(1000);
esp.println("AT+CWMODE=2");
delay(1000);
esp.println("AT+CIPMUX=1");
delay(1000);
esp.println("AT+CIPSERVER=1,80");
delay(1000);
esp.println("AT+CIFSR");
delay(2000);
}
 
bool read_till_eol() {
  static int i=0;
  if(esp.available()) {
    char c=esp.read();
    buffer[i++]=c;
    if(i==BUFFER_SIZE)  i=0;
    if(i>1 && buffer[i-2]==13 && buffer[i-1]==10) {
      buffer[i]=0;
      i=0;
      return true;
    }
  }
  return false;
}
 
void loop()
{
  int ch_id, packet_len;
  char *pb; 
  if(read_till_eol()) {
    if(strncmp(buffer, "+IPD,", 5)==0) {
      // request format: +IPD,ch,len:data
      sscanf(buffer+5, "%d,%d", &ch_id, &packet_len);
      if (packet_len > 0) {
        pb = buffer+5;
        while(*pb!=':') pb++;
        pb++;
        if (strncmp(pb, "GET / ", 6) == 0) {
         serve_homepage(ch_id,0);
          }
          else if (strncmp(pb, "GET /?fwd", 9) == 0){
              forward();
               serve_homepage(ch_id,1);
 
           }
          else if (strncmp(pb, "GET /?rev", 9) == 0){
               reverse();
               serve_homepage(ch_id,2);
 
           }
          else if (strncmp(pb, "GET /?rgt", 9) == 0){
               right();
               serve_homepage(ch_id,3);
 
           }
          else if (strncmp(pb, "GET /?lft", 9) == 0){
               left();
               serve_homepage(ch_id,4);
 
           }
          else if (strncmp(pb, "GET /?stp", 9) == 0){
               stop_bot();
               serve_homepage(ch_id,0);
 
           }
    }
  }
}
}
 
void serve_homepage(int ch_id, byte state)
{
         
          delay(1000);
          esp.print(F("AT+CIPSEND="));
          esp.print(ch_id);
          esp.print(",");
         
          esp.println("512");
          delay(500);
 
          esp.print("HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\n<HTML><HEAD><TITLE>ROBOT CONTROLLER</TITLE></HEAD><BODY><font size=\"3\"><center>WELCOME TO THE WEB INTERFACE OF ROBOT CONTROLLER OVER WIFI<hr /><br /><br />");
 
          esp.print("<font size=\"20\"><p><a href=\"/?fwd\"\">FORWARD</a></p><a href=\"/?lft\"\">LEFT</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/?stp\"\">STOP</a>&nbsp;&nbsp;&nbsp;&nbsp;");
          esp.print("<a href=\"/?rgt\">RIGHT</a><p><a href=\"/?rev\"\">REVERSE</a></p></font><br/><p>Created by GANESH SELVARAJ for EngineersGarage.com</p><br /></center></font></BODY></HTML>");
          delay(5000);
 
          esp.print(F("AT+CIPCLOSE="));
          esp.println(ch_id);
}
 
 // a partir deste ponto eu conjuguei o codigo de movimento de tres servos do meu inseto robo, com o robo de dois motores DC do projeto original
 

 
void forward()
{
      QuadrilServo.write(quadPosUm);
               delay(200);
                DireitaServo.write(direitaDois);
               delay(200);
                EsquerdaServo.write(esquerdaDois);
              delay(200);
                QuadrilServo.write(quadPosDois);
               delay(200);
                DireitaServo.write(direitaUm);
             delay(200);
                EsquerdaServo.write(esquerdaUm);
               delay(200);
                QuadrilServo.write(quadPosUm);
                delay(200);
                DireitaServo.write(direitaDois);
                delay(200);
                EsquerdaServo.write(esquerdaDois);
                delay(200);
                QuadrilServo.write(quadPosDois);
                delay(200);
                DireitaServo.write(direitaUm);
                delay(200);
                EsquerdaServo.write(esquerdaUm);
                delay(200);
}
void reverse()
{
                 QuadrilServo.write(centroPos);
                 DireitaServo.write(centroPos);
                 EsquerdaServo.write(centroPos);
}
void right()
{
                 QuadrilServo.write(quadPosDois);
                 delay(200);
                 DireitaServo.write(dirVolUm);
                 delay(200);
                 EsquerdaServo.write(esqVolUm);
                 delay(200);
                 QuadrilServo.write(quadPosUm);
                 delay(200);
                 DireitaServo.write(dirVolDois);
                 delay(200);
                 EsquerdaServo.write(esqVolDois);
                 delay(200);
   
}
void left()
{
                 QuadrilServo.write(quadPosUm);
                 delay(200);
                 DireitaServo.write(dirVolDois);
                 delay(200);
                 EsquerdaServo.write(esqVolDois);
                 delay(200);
                 QuadrilServo.write(quadPosDois);
                 delay(200);
                 DireitaServo.write(dirVolUm);
                 delay(200);
                 EsquerdaServo.write(esqVolUm);
                 delay(200);
}
void stop_bot()
{
                 QuadrilServo.write(centroPos);
                 DireitaServo.write(centroPos);
                 EsquerdaServo.write(centroPos);
}