carlosvolt
Published © LGPL

Robot with WiFi control and servos driven by ESP32

A robot controlled by Wi-Fi, servos and ESP32 is a robotization system that uses a combination of technologies to enable wireless communicat

IntermediateFull instructions provided282
Robot with WiFi control and servos driven by ESP32

Things used in this project

Hardware components

ESP32
Espressif ESP32
×1

Story

Read more

Code

Source code

C/C++
source code
#include <WiFi.h>
#include <Servo.h> 
const char* ssid     = "xxxxxxxx";//Clave wifi
const char* password = "xxxxxxxx";//Contraseña wifi
WiFiServer server(80);
Servo servoPin12;
Servo servoPin14;
Servo servoPin27;
Servo servoPin26;
int pin2 = 2;
void setup()
{
Serial.begin(115200);
// Pines de control servo y led onboard esp32
servoPin12.attach(12);
servoPin14.attach(14);
servoPin27.attach(27);
servoPin26.attach(26);
pinMode(pin2, OUTPUT);
digitalWrite(pin2, LOW);
delay(10);
    // Comenzamos conectándonos a una red WiFi
    Serial.println();
    Serial.println();
    Serial.print("Conectando a ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("");
    Serial.println("Conectado a red Wifi.");
    Serial.println("Dirección IP ");
    Serial.println(WiFi.localIP());   
    server.begin();
    digitalWrite(pin2, HIGH);
}
int value = 0;
void loop(){
 WiFiClient client = server.available();   // Escuchando a los clientes entrantes
  if (client) {                             // Si hay un cliente,
    Serial.println("Nuevo cliente");        // Imprime un mensaje en el puerto serie
    String currentLine = "";                // String para contener datos entrantes del cliente
    while (client.connected()) {            // Bucle mientras el cliente está conectado
      if (client.available()) {             // Si hay bytes para leer del cliente,
        char c = client.read();             // Lee un caracter
        Serial.write(c);                    // Lo imprimimos en el monitor serial
        if (c == '\n') {                    // Si el byte es un carácter de nueva línea        
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();
            // Contenido HTML
            client.print("Click <a href=\"/avanzar\">Avanzar</a> Para Avanzar.<br>");//Avanzar
            client.print("Click <a href=\"/atras\">Retroceder</a> Para Retroceder.<br>");//Retroceder
            client.print("Click <a href=\"/derecha\">Derecha</a> Para ir a la derecha.<br>");//Avanzar
            client.print("Click <a href=\"/izquierda\">Izquierda</a> Para ir a la Izquierda.<br>");//Izquierda
            client.print("Click <a href=\"/parar\">Parar</a> Para Detener.<br>");//Parar     
            client.println();
            // Salir del ciclo while:
            break;
          } else {    // si tienes una nueva línea, borra currentLine:
            currentLine = "";
          }
        } else if (c != '\r') {  
          currentLine += c;      
        }
        //Avanzar
        if (currentLine.endsWith("GET /avanzar")) {
          servoPin12.write(0);//
          servoPin14.write(180);//
          servoPin27.write(0);//
          servoPin26.write(180);//   
        }
        //----Atrás---- 
        if (currentLine.endsWith("GET /atras")) {
          servoPin12.write(180);//
          servoPin14.write(0);//
          servoPin27.write(180);//
          servoPin26.write(0);//            
        }
        //----Gira a la derecha--- 
        if (currentLine.endsWith("GET /derecha")) {
          servoPin12.write(180);//
          servoPin14.write(180);//
          servoPin27.write(180);//
          servoPin26.write(180);//            
        }
        //----Girar en la izquierda----
        if (currentLine.endsWith("GET /izquierda")) {
          servoPin12.write(0);
          servoPin14.write(0);
          servoPin27.write(0);
          servoPin26.write(0);                
        }
        //----Parar----
        if (currentLine.endsWith("GET /parar")) {
          servoPin12.write(90);
          servoPin14.write(90);
          servoPin27.write(90);
          servoPin26.write(90);              
        }
      }
    }
    // Cierra la conexión
    client.stop();
    Serial.println("Cliente desconectado");
  }
}

Credits

carlosvolt
34 projects • 4 followers
Contact

Comments

Please log in or sign up to comment.