Graficando la posición de un robot tipo aspiradora con base en las velocidades de las ruedas del robot con MQTT y ESP32.
-
Es necesario conectar todos los nodos a la misma red WiFi.
-
Los módulos de ESP32 no pueden conectarse a redes con seguridad WPA empresarial.
-
Es necesario tener las siguientes librerías de Python:
- paho-mqtt
- matplotlib
- json
- numpy
pip install -r requirements.txt
En caso de usar mosquitto, crea un broker con la configuración mosquitto.conf:
mosquitto -v -c mqtt/mosquitto.conf
-
Crear una conexión al
localhost
. -
Generar una subscripción al topico
robot/#
dentro de la conexión hecha o,- Generar una suscripción al topico
robot/velocidad/izquierda
. - Generar una suscripción al topico
robot/velocidad/derecha
. - Generar una suscripción al topico
robot/posicion
.
- Generar una suscripción al topico
Es necesario crear un archivo nodes/driver/wificonfig.h
con la siguiente estructura:
const char* ssid = "SSID-WIFI";
const char* pass = "CONTRASEÑA-WIFI";
const char* host = "MQTT-BROKER";
const short port = 1883;
Las constantes host
y port
corresponden a las direcciones ip y el puerto del equipo donde se está ejecutando mosquitto.
Modificar las definiciones POT1
, POT2
en nodes/driver/driver.ino
con los pines a usar para cada potenciometro
Cargar el sketch nodes/driver
a una placa de desarrollo ESP32.
Para suscribirse a los tópicos robot/velocidad/#
, procesar los datos y mandarlos al tópico robot/posicion
ejecutar el script robot:
python nodes/robot/main.py
o
python3 nodes/robot/main.py
El nodo plot se encarga de graficar los datos del tópico robot/posicion
:
python nodes/plot/main.py
o
python3 nodes/plot/main.py