Skip to content

Mini rover basado en ESP32 S3 impulsado por dos servos de rotación continua que envía los datos de un BME280 y recibe órdenes de control por MQTT desde NodeRED Dashboard. Cuenta, además, con panel OLED, bocina y un LED.

License

Notifications You must be signed in to change notification settings

99danirmoya/Turtle-Bot-NEO-REVO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Static Badge

Turtle-Bot NEO REVO (rover2)

Desarrollado por

César Rubio Sánchez, Alejandro Martín Sánchez, Daniel Rodríguez Moya y Álvaro Rodríguez Piñeiro

Programado en

made-in-ArduinoIDE

Servicios en la nube ofrecidos por


Mini rover WiFi con camara digital, sensor climático y de material particulado, GPS, mangnetómetro, panel OLED, luces LED y bocina controlado desde Telegram y NodeRED Dashboard/Thingsboard a los que se envían los datos recogidos en tiempo real. Cuenta con dos modos de operación: manual y auto-pilotado por coordenadas GPS


Demo del proyecto

Muestra de montaje y cableado


Note

Esta imagen es únicamente una muestra orientativa. El chasis está hecho en impresión 3D/metacrilato y vale cualquiera que venga preparado para servos y los sensores elegidos para cada modo


Índice



Modo de funcionamiento ↩️

  1. Se conecta el robot a una WiFi accediendo a su hotspot desde otro dispositivo (PC o smartphone)
  2. En caso de querer usarse el I/O desde Telegram, se deberá crear un bot desde BotFather para acceder a su token y deshabilitar la privacidad en grupos para poder explotar el máximo potencial con el comando /setprivacy
  3. Se accede al panel de control en la nube para su pilotaje de forma remota
    • ALTERNATIVAMENTE: Si no se ha accedido aún a NodeRED, se debe importar el flujo (más info a continuación) y configurar los nodos relacionados con MQTT, bots de Telegram e InfluxDB.

Lista de componentes ↩️

Componente Unidades
LilyGO T3 S3 1
ESP32 CAM 1
Protoboard 1
Chasis 1
LED 1
Resistencia 220ohm 1
Zumbador 1
BME280 1
GPS NEO-6M 1
HMC5883L 1
SDS011 1
Servo de rotación continua 2
Ruedas 2
Jumpers Los que hagan falta

Diagrama de conexiones ↩️

La tarjeta de prototipado específica empleada para el desarrollo ha sido la LilyGO T3-S3 v1.2:

Pinout de la tarjeta de prototipado LilyGO T3-S3 v1.2


A continuación, se muestra el diagrama de conexiones del robot.

Circuito del Turtle-Bot NEO EVO


Caution

OJO, el microcontrolador usado en el dibujo es el TTGO LoRa32 OLED, antecesor del LilyGO T3-S3 v1.2 que se emplea en este ejemplo. Por ello, el pinout del esquema es distinto, sólo se debe seguir la ubicación de los pines. Por parte de la ESP32 CAM, no se incluye en el diagrama ya que se puede considerar un SoC.


Modo de implementación ↩️

Toda la explicación del código de Arduino viene dada en el propio código, 99danirmoya/Turtle-Bot-NEO-EVO/blob/main/tbne/tbne.ino, en formato de comentarios al lado de cada línea. Cabe destacar la implementación de freeRTOS para fragmentar en tareas ejecutadas en paralelo para mejorar los tiempos de respuesta.

Diagrama de bloques de la implementación en freeRTOS


De esta manera, las funcionalidades principales son:

  1. Monitoreo de variables climáticas y de contaminacion
  2. Sistema de alarmas remoto y local (LED, OLED y sirena) en caso de riesgo para ganado/cosecha
  3. Piloto manual por joystick virtual con información sobre geolocalización, orientación, velocidad e imagen
  4. Piloto automático por ruta de coordenadas GPS

Servicios en NodeRED

Por otra parte, se debe importar el flujo que se muestra a continuación desde el archivo flow_tbne.json:

Flujo de NodeRED para el control de Turtle-Bot NEO EVO


Con el flujo importado y habiéndose configurado los nodos de MQTT, Telegram, función e InfluxDB, se puede acceder al siguiente panel de control y monitoreo del sensor:

Dashboard de NodeRED para el control y monitoreo climático a borde de Turtle-Bot NEO EVO


Dashboard de NodeRED para la visualización historica del sensor climático a bordo


En el siguiente enlace, se puede consultar el panel a distancia original. Está configurado para el Turtle-Bot NEO EVO original.

Por otra parte, se puede hacer uso de un bot de Telegram para recibir notificaciones de eventos importantes de la batería (batería baja o batería cargada), así como invocar un menú, creado por Alex Trostle, en el que encender o apagar el panel OLED y la luz OLED al hacer uso del comando /neo2:

Menú del bot de Telegram para escoger dispositivo al que modificar su estado


Menú del bot de Telegram para encender o apagar el dispositivo elegido


Servicios en ThingsBoard

Se ha creado, además, un dashboard analogo al de NodeRED, pero en ThingsBoard.

Dashboard general para acceder al resto de paneles


Dashboard para el control del robot


Dashboard para acceder a los datos actualizados de meteorología


Dashboard para acceder a los datos actualizados de calidad de aire


Como servicio adicional al dashboard de Thingsboard, se ha creado una aplicacion en Android Studio que permite consultar todos los sensores, la cámara, controlar el rover con un joystick y recibir notificaciones de alarmas. La conexión de la app con Thingsboard ha sido gracias a la RESTful API que provee.

Aplicación para Android con conexión a Thingsboard


La arquitectura de red se puede consultar en el diagrama a continuación:

Arquitectura de red con Thingsboard




Licencia ↩️

Este proyecto está licenciado bajo la GPL-3.0 license.


Contacto ↩️

Important

Respondo amablemente a dudas y leo sugerencias: Gmail Badge

Más información sobre mis proyectos: Linkedin Badge

Autores: César Rubio Sánchez, Alejandro Martín Sánchez, Daniel Rodríguez Moya y Álvaro Rodríguez Piñeiro :shipit:

About

Mini rover basado en ESP32 S3 impulsado por dos servos de rotación continua que envía los datos de un BME280 y recibe órdenes de control por MQTT desde NodeRED Dashboard. Cuenta, además, con panel OLED, bocina y un LED.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published