Inicio » Aula » Robot Diferencial ESP32

Robot Diferencial ESP32

En esta entrada se desarrollará el diseño, montaje y programación de un robot diferencial, empleando piezas impresas en 3D y el microcontrolador ESP32.

INTRODUCCIÓN

El objetivo de este proyecto ha sido desarrollar un robot con un diseño sencillo y versátil, permitiéndole cumplir diversas tareas. Este objetivo se ha abordado desde los dos aspectos principales: por un lado, la estructura, haciéndola lo más simple posible, pero sin perder funcionalidad, y por el otro lado la electrónica, mediante la elección de componentes muy extendidos en la electrónica educativa, y, por tanto, fáciles de manipular.

Aspecto del Robot

HARDWARE

Componentes

  • Estructura impresa en 3D
  • ESP32
  • 2x Motores DC
  • Driver motores L298N
  • Servo SG90
  • Sonar HC-SR04
  • 2x Siguelineas TCRT5000
  • 2x Ruedas
  • Rueda castor
  • PowerBank
  • Tornillos para fijación
  • Cables para conexión

Estructura

Una carga importante del trabajo se ha basado en el diseño de las distintas piezas que componen la estructura del robot.

En cuanto al chasis principal, hay que destacar que se ha partido de un diseño ya existente elaborado por el usuario “Wouter Hoogterp” en Thingiverse, al cual se le han realizado una serie de modificaciones, con el fin de simplificarlo e incorporar un suporte para un servomotor en su parte superior, tal y como se muestra en las siguientes imágenes:

Vista 1 del chasis del robot
Vista 2 del chasis del robot

Por otro lado, también se han diseñado piezas, cuya finalidad es la de fijar los distintos sensores a la estructura principal anteriormente descrita, así como la de poder acoplar las ruedas al eje de los motores.

Soporte TCRT5000
Soporte HC-SR04

 

Acoplamiento ruedas

 

Adicionalmente se ha diseñado una pieza para acoplar un sensor VL53l0X al servomotor, pero finalmente se ha descartado esta opción en el diseño final.

Soporte VL53l0X

Electrónica

La electrónica se ha diseñado en base al microcontrolador seleccionado, el ESP32. En concreto, un modelo con 38 pines, lo que es más que suficiente para las aplicaciones que llevará a cabo el robot.

En cuanto a las ventajas de este microcontrolador se destacan:

  • Bluetooth integrado, por lo que no es necesario incluir módulos externos.
  • Programable con el IDE de Arduino, lo cual facilita su programación.
  • Salidas de 5V y 3.3V, lo que permite alimentar mayor variedad de sensores.

Por otro lado, las desventajas encontradas son:

  • No existen salidas con modulación PWM, por lo que el comando “analogWrite” de Arduino no se puede emplear. Existe la alternativa de incluir una librería que soluciona este problema.
  • Dificultades para cargar el código en la placa.
  • 3.3V como tensión de referencia para las entradas analógicas. Además, no se puede modificar como si que ocurre en Arduino.
  • Existen algunos pines que solo se pueden emplear como entradas.

A pesar de las claras desventajas, todas ellas se pueden solucionar en mayor o menor medida, lo que hace que el ESP32 sea una solución muy optima.

 

En cuanto a las conexiones de los distintos sensores, el ESP32 y la alimentación, se muestra en la siguiente imagen:

Esquema de conexiones

SOFTWARE Y APLICACIONES

Las aplicaciones llevadas a cabo por el robot son: siguelineas, detección de obstáculos y control por bluetooth.

Siguelineas

Para realizar esta tarea se emplean dos sensores TCRT5000: uno de ellos se sitúa sobre la línea negra y el otro sobre el suelo (blanco), ya que de esta forma se obtenían mejores resultados que ambos sensores sobre la línea negra. El control combina un control “digital” (a pesar de realizarse medidas analógicas, se establece un valor umbral que determina si el sensor se encuentra sobre la línea negra o no, es decir, se binariza la señal), pero además se incluye un control integral, ya que cuando las señales medidas por los dos sensores son iguales (es decir, no se sigue la línea), incrementan el valor de una variable en función de lo similares que sean las medidas, lo cual se traduce en una acción de control más fuerte.

 

Detección de obstáculos

Para la detección de obstáculos se ha empleado el sensor de ultrasonidos HC-SR04, ya que, frente a un sensor láser, el ángulo de detección es mucho más amplio, facilitando la tarea.

El funcionamiento es muy sencillo, y se muestra en el siguiente flujograma:

Flujograma esquivar obstáculos

Control por Bluetooth

Para conectar el ESP32 con un dispositivo vía bluetooth es necesario incluir tres librerías: “BLEDevice.h”, “BLEUtils.h”, “BLEUtils.h”, que se pueden incluir desde el buscador interno del IDE de Arduino.

La plataforma para crear la aplicación ha sido Thunkable, ya que el bluetooth que incorpora el ESP32 es LowEnergy, además de por las distintas prestaciones que ofrece la plataforma. La interfaz diseñada se muestra a continuación:

Interfaz Bluetooth

La interfaz cuenta con 2 botones para conectar y desconectar el bluetooth, y 7 botones de control: adelante, atrás, central (sin función), derecha con avance, izquierda con avance, giro a la derecha sobre sí mismo y giro a la izquierda sobre sí mismo. Al pulsar los botones de control, la aplicación envía un carácter via bluetooth al microcontrolador, el cual mediante una serie de “ifs” encadenados, lleva a cabo la acción correspondiente a dicho carácter recibido. además, estos botones se han programado con la característica “TouchUp” y “TouchDown”, lo cual permite que mientras se pulse el botón se realice la acción, pero en el momento en el que se deja de presionar el botón, la acción se detiene.