Robot FPV Rover controlado por Wi-Fi (con Arduino y ESP8266)

Robot FPV Rover controlado por Wi-Fi (con Arduino y ESP8266) © CC BY-NC-SA

Este proyecto muestra cómo construir un rover robótico de dos ruedas con control remoto wi-fi, utilizando un Arduino Uno y un ESP8266.

Componentes y suministros

Ph a000066 iso (1) ztbmubhmho
Arduino UNO
× 1
Rhxvhx2dhljmbtloxexc
Arduino Proto Escudo
× 1
Esp01
ESP8266 ESP-01
× 1
motor paso a paso 28BYJ
× 2
Controlador paso a paso ULN2003
× 1
1434509556 color del teléfono android
dispositivo Android
× 1
Mfr 25frf52 1k sml
resistencia de 1k ohmios
× 1
Mfr 25frf52 100k sml
resistencia de 100k ohmios
× 2
Banco de energía
× 1
Ruedas de 42×19 mm con cubierta de goma
× 2
Rueda omnidireccional bola acero 49x20x32mm
× 1
Pernos M2 x 10 mm
× 12
tuercas M2 x 1,5 mm
× 12
Pernos M3 x 10 mm
× 8
Tuercas M3 x 1,5 mm
× 8
Pernos de 5/32″ x 1″
× 3
Tuercas de 5/32″
× 6
Clip para selfies de mano
× 1
Soporte de aluminio de 3 x 3 cm
× 2
lámina acrílica de 2 mm
× 1

Herramientas y máquinas necesarias.

Taladro
Sierra de mano

Aplicaciones y servicios en línea

cámara web IP
Logotipo de Autodesk Fusion 360 4szx21llea
Autodesk Fusion 360
Calado
idea web
IDE de Arduino
Bloc de notas++

Acerca de este proyecto

Este tutorial muestra cómo construir un rover robótico de dos ruedas con control remoto a través de una red Wi-Fi, utilizando un Arduino Uno conectado a un módulo Wi-Fi ESP8266 y dos motores paso a paso. El robot se puede controlar desde un navegador de Internet ordinario, utilizando una interfaz diseñada en HTML. Se utiliza un teléfono inteligente Android para transmitir video y audio desde el robot a la interfaz de control del operador.

Hay muchos kits de robótica disponibles en línea con diferentes formas, tamaños y precios. Pero, dependiendo de su aplicación, ninguno de ellos funcionará y es posible que descubra que son demasiado caros para sus experimentos. O tal vez solo desee crear su estructura mecánica en lugar de comprar una completa. Este tutorial también muestra cómo diseñar y construir un marco acrílico de bajo costo para su propio proyecto robótico, utilizando solo herramientas ordinarias para aquellos que no las tienen. acceso a esas costosas impresoras 3D o cortadoras láser. Se presenta una plataforma robótica simple.

Esta guía se puede adaptar para cambiar de formulario o interfaz de control. Ha sido adaptado para otros de mis proyectos de robótica («Robô da Alegria»), que puedes consultar en los siguientes enlaces:

https://hackaday.io/project/12873-rob-da-alegria-…

https://github.com/ferauche/RoboAlegria

https://hackaday.io/project/12873-rob-da-alegria-…

[Warning: some of the photos are outdated, because the design was further improved. However, the idea presented here is still valid.]

Paso 1: Herramientas

Las siguientes herramientas son necesarias para construir este prototipo:

  • Serrucho (para hacer los cortes iniciales en la lámina acrílica)
  • Destornillador (para colocación de pernos y tuercas)
  • Regla (para medir dimensiones)
  • Cuchillo utilitario (para cortar lámina acrílica)
  • Taladro (para crear agujeros para pernos)
  • Papel de lija (para suavizar los bordes ásperos)

Paso 2: Estructura mecánica y materiales

Para construir un robot personalizado, primero deberá diseñar su estructura mecánica. Puede ser fácil, dependiendo de su aplicación, o estar lleno de detalles y limitaciones. Es posible que deba diseñarlo en un software CAD 3D o simplemente dibujarlo en 2D, según la complejidad de su modelo.

También puedes comprar la estructura completa online si no quieres construir tu propia estructura mecánica. Hay muchos kits de robótica disponibles en línea. En este caso, puede saltar al paso 6.

Para este tutorial, se diseñó un marco de acrílico de bajo costo para unir los motores y otros componentes. La estructura presentada en este tutorial fue diseñada en 3D utilizando el software CAD 123D Design. Luego, cada parte se convirtió a 2D utilizando el software Draftsight.

Se utilizaron los siguientes materiales:

  • lámina acrílica de 2 mm
  • Ruedas de 42×19 mm con neumáticos de goma (x2)
  • Rueda omnidireccional con bolas de acero 49x20x32mm (x1)
  • Tornillos M2 x 10 mm (x12)
  • Tuercas M2 x 1,5 mm (x12)
  • Pernos M3 x 10 mm (x8)
  • Tuercas M3 x 1,5 mm (x8)
  • Pernos de 5/32″ x 1″ (x3)
  • Tuercas 5/32″ (x6)
  • Clip para selfies de mano
  • Soporte aluminio 3 x 3 cm (x4)

La construcción de la estructura base se divide en las siguientes etapas:

  • Cortar la base acrílica según las dimensiones del dibujo 2D;
  • Taladre los agujeros en las posiciones indicadas en el dibujo 2D;
  • Monte los componentes con pernos y tuercas según el dibujo 3D.

Desafortunadamente, el diámetro del eje del motor paso a paso es más grande que el orificio de la rueda. Por lo tanto, probablemente necesitará usar pegamento para acoplar estos componentes. Para este tutorial, improvisé un acoplamiento de madera entre el eje del motor y la rueda.

Paso 3: Cortar la estructura

Primero deberá transferir las dimensiones de su modelo a la lámina acrílica. Imprima su diseño 2D usando una impresora común en un papel adhesivo, luego corte el papel a las dimensiones apropiadas y aplique esta máscara en la superficie del acrílico.

Puede usar una sierra manual para cortar el acrílico a sus dimensiones o usar la técnica de ajuste que se describe a continuación.

Con una navaja multiusos y usando una regla o escala, corte el acrílico en líneas rectas. No necesitará cortar toda la hoja, simplemente márquela para crear pistas donde luego se cortará la pieza.

Coloque el acrílico sobre una superficie plana, manténgalo en su lugar con abrazaderas y aplique un poco de presión hasta que la lámina se rompa por la mitad. Repita este proceso hasta que todos los cortes estén hechos. Después de eso, puede usar un papel de lija para suavizar los bordes ásperos.

Paso 4: Perforar la base

Perfore los agujeros en las posiciones que se muestran en el dibujo 2D (que se muestra en la máscara) con un taladro.

El acrílico es relativamente fácil de perforar. Entonces, si no tiene un taladro, puede perforar los agujeros manualmente con una herramienta afilada, como un cuchillo multiusos. También puede usarlo para agrandar agujeros pequeños para acomodar tamaños de pernos.

Quítate la mascarilla y tu base estará lista.

Paso 5: Montaje de la estructura

Monte los componentes con tornillos y tuercas de acuerdo con las imágenes, y su estructura estará lista para funcionar.

Los pernos M3 se usan para la instalación del motor paso a paso, mientras que los de 5/32″ se usan para la rueda delantera y la instalación del clip para teléfono inteligente.

Ahora tómese un descanso y comience a ensamblar el circuito en el siguiente paso…

Paso 6: Electrónica

Necesitará los siguientes componentes electrónicos:

  • arduino uno
  • ESP8266
  • Protoboard (para una versión más compacta) o una placa de pruebas normal
  • Resistencia 1 kohm (x2)
  • Resistencia de 10 kohmios (x1)
  • Algunos cables de conexión
  • Motor paso a paso con controlador ULN2003 (x2) (
  • Una computadora (para compilar y cargar el código Arduino)
  • Banco de energía
  • cable USB

No necesitará ninguna herramienta específica para montar el circuito. Todos los componentes se pueden encontrar en línea en su tienda de comercio electrónico favorita. El circuito está alimentado por un banco de energía conectado al puerto USB de Arduino.

Conecte todos los componentes de acuerdo con el diagrama. Necesitará algunos cables puente para conectar el módulo ESP-8266 y los motores paso a paso. Puede usar un protoescudo (para un circuito más compacto), una placa de pruebas normal o diseñar su propio escudo Arduino. Conecte el cable USB a la placa Arduino Uno y continúe con el siguiente paso.

Paso 7: código Arduino

Instale el último IDE de Arduino. En este proyecto, se utilizó la biblioteca stepper.h para controlar motores paso a paso. No se necesitaron bibliotecas adicionales para la comunicación con el módulo ESP-8266. Verifique la velocidad en baudios de su ESP8266 y configúrelo correctamente en el código.

Descargue el código Arduino (stepperRobot.ino) y reemplace XXXXX con el SSID de su enrutador wifi y YYYYY con la contraseña del enrutador. Conecte la placa Arduino al puerto USB de su computadora y cargue el código.

Paso 8: Cámara IP de Android

Se utilizó un teléfono inteligente Android para transmitir video y audio desde el robot a la interfaz de control. Puede encontrar la aplicación en Google Play Store (https://play.google.com/store/apps/details?id=com.pas.webcam).

Instálelo y continúe con el siguiente paso.

Paso 9: Poner los circuitos en el robot

Instale los circuitos en la parte superior del robot usando pernos M1 como se muestra en las imágenes.

Después de eso, pegue su batería externa en la parte posterior del robot con cinta adhesiva de doble cara (porque es fácil de quitar después) y coloque su teléfono inteligente en el clip.

Paso 10: Interfaz de control basada en web

Se ha diseñado una interfaz html para el control del robot.

Descargue interface.rar y extraiga todos los archivos en la carpeta dada. Luego ábrelo en Firefox.

En esta interfaz se utiliza un formulario de cuadro de texto para ingresar las direcciones IP del módulo ESP y el servidor de video/audio (desde la aplicación Android IP Webcam).

Hay una prueba, pero hará funcionar el robot hasta que se reciba otro comando. Las teclas de flecha del teclado se utilizan para mover el robot hacia adelante o hacia atrás y para girar a la izquierda o a la derecha.

Paso 11: Uso

Cuando Arduino se reinicie, intentará conectarse automáticamente a su red Wi-Fi. Use el monitor serial para verificar si la conexión fue exitosa y para obtener la dirección IP que su enrutador le asignó a su ESP-8266. Abra el archivo html en un navegador de Internet (Firefox) e ingrese esta dirección IP en el cuadro de texto.

También puede usar otros medios para averiguar qué dirección IP ha asignado su enrutador a su dispositivo.

Desconecte el Arduino Uno de su computadora y conéctelo al banco de energía. Espere a que se vuelva a conectar.

Inicie la aplicación IP Webcam en el teléfono inteligente conectado al robot. Escriba la IP de video/audio en su interfaz de control y conéctese al servidor y estará listo para comenzar. Es posible que deba reducir la resolución del video en la aplicación para reducir la demora entre la transmisión.

Haz clic y mantén presionados los botones de flecha en tu teclado para rotar el robot o moverlo hacia adelante/atrás y diviértete explorando tu entorno.

codificado

arduinoarduino
codigo arduino
//include libraries
#include <SoftwareSerial.h>
#include <Stepper.h>

SoftwareSerial esp8266(3, 2); //RX pin = 3, TX pin = 2

//definition of variables
#define DEBUG true //show messages between ESP8266 and Arduino in serial port
const int stepsPerRevolution = 500;
int state = 5;

Stepper rightStepper(stepsPerRevolution, 8,10,9,11);
Stepper leftStepper(stepsPerRevolution, 4,6,5,7);

//*****
//SETUP
//*****
void setup()
{
  //start communication
  Serial.begin(9600);
  esp8266.begin(19200);
  
  sendData("AT+RSTrn", 2000, DEBUG); //reset module
  sendData("AT+CWMODE=1rn", 1000, DEBUG); //set station mode
  sendData("AT+CWJAP="XXXXX","YYYYY"rn", 2000, DEBUG); //connect wi-fi network
  while(!esp8266.find("OK")) { //wait for connection
  } 
  sendData("AT+CIFSRrn", 1000, DEBUG); //show IP address
  sendData("AT+CIPMUX=1rn", 1000, DEBUG); //allow multiple connections
  sendData("AT+CIPSERVER=1,80rn", 1000, DEBUG); // start web server on port 80
  
  //Define motor speed
  rightStepper.setSpeed(60);
  leftStepper.setSpeed(60);
  
}

void loop()
{
  
  if (esp8266.available())  //verify incoming data
  {
    if (esp8266.find("+IPD,")) //if there is a message
    {
      String msg;
      esp8266.find("?"); //look for the message
      msg = esp8266.readStringUntil(' '); //read whole message
      String command = msg.substring(0, 3); //first 3 characters = command
      String valueStr = msg.substring(4);   //next 3 characters = value
      int value = valueStr.toInt();
      if (DEBUG) {
        Serial.println(command);
        Serial.println(value);
      }
           
      //move forward
      if(command == "cm1") {
          state = 1;
      }

      //move backward
      if(command == "cm2") {
          state = 2;
      }

      //turn right
      if(command == "cm3") {
          state = 3;
       }
       
       //turn left
       if(command == "cm4") {
          state = 4;
       }

       //do nothing       
       if(command == "cm5") {
          state = 5;
       }

    }
  }
  
  //move forward
  if (state == 1) {
    rightStepper.step(1);
    leftStepper.step(-1);    
  }
  //move backward
  if (state == 2) {
    rightStepper.step(-1);
    leftStepper.step(1);    
  }
  //move right
  if (state == 3) {
    rightStepper.step(1);
    leftStepper.step(1);    
  }
  //move left
  if (state == 4) {
    rightStepper.step(-1);
    leftStepper.step(-1);    
  }
  //do nothing
  if (state == 5) {
  }
  
}

//*******************
//Auxiliary functions
//*******************

String sendData(String command, const int timeout, boolean debug)
{
  String response = "";
  esp8266.print(command);
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (esp8266.available())
    {
      char c = esp8266.read();
      response += c;
    }
  }
  if (debug)
  {
    Serial.print(response);
  }
  return response;
}
interfaz de control htmlHTML
No preview (download only).

Partes y estuches personalizados

modelo 3d
Archivo de diseño 123D.
robot.123dx
Diseño 2D de la base.
base.dwg

diagramas

diagramas
Diagrama de circuito
Conexión de placa de prueba
Conexión de placa de pruebas de circuito
Lima sinterizada
Archivo Fritzing Circuito
wstepper%20-%20rev1.fzz

Fuente Arduino.cc