Tabla de contenido:

Modele el control de WiFi del tren usando MQTT: 9 pasos
Modele el control de WiFi del tren usando MQTT: 9 pasos

Video: Modele el control de WiFi del tren usando MQTT: 9 pasos

Video: Modele el control de WiFi del tren usando MQTT: 9 pasos
Video: Servidor Web mediante ESP8266 y DHT22 en red WiFi, código en Micropython, base para futuro MQTT, IoT 2024, Noviembre
Anonim
Modele el control de WiFi del tren usando MQTT
Modele el control de WiFi del tren usando MQTT

Teniendo un antiguo sistema de maquetas de trenes a escala TT, tenía una idea de cómo controlar las locomotoras individualmente.

Con esto en mente, fui un paso más allá y descubrí lo que se necesita no solo para controlar los trenes, sino para tener información adicional sobre todo el diseño y controlar algo más (luces, interruptores de riel …)

Así es como nace el sistema de trenes en miniatura controlado por WiFi.

Paso 1: Principios de operación

Principios de operación
Principios de operación

El principio principal es controlar cada elemento individualmente, ya sea desde un solo controlador o desde múltiples fuentes de control. Esto inherentemente necesita una capa física común, más obviamente WiFi, y un protocolo de comunicación común, MQTT.

El elemento central es el Broker MQTT. Cada dispositivo conectado (tren, sensor, salida…) solo puede comunicarse a través del Broker y solo puede recibir datos del Broker.

El corazón de los dispositivos es un controlador WiFi basado en ESP8266, mientras que el broker MQTT se ejecuta en una Raspberry pi.

Al principio, la cobertura Wifi la proporciona un enrutador WiFi, y todo se conecta a través de la red inalámbrica.

Hay 4 tipos de dispositivos:

- Controlador de tren: tiene 2 entradas digitales, 1 salida digital, 2 salidas PWM (para controlar 2 motores de CC individuales), - Controlador de sensor: tiene 7 entradas digitales (para interruptores de entrada, optosensores …), - Controlador de salida: tiene 8 salidas digitales (para interruptores de carril …), - WiFi remoto: tiene 1 entrada de codificador incremental, 1 entrada digital (para controlar trenes de forma remota).

El sistema también es capaz de operar desde Node-Red (desde tableta, PC o teléfono inteligente…).

Paso 2: Configuración e intercambio de datos MQTT

Intercambio y configuración de datos MQTT
Intercambio y configuración de datos MQTT

Basado en el protocolo MQTT, al principio cada dispositivo se suscribe a un tema determinado y puede publicar en otro tema. Ésta es la base de la comunicación de la red de control de trenes.

Los cuentos de esta comunicación se colocan a través de mensajes en formato JSON, para que sean breves y legibles por humanos.

Mirando desde una perspectiva más lejana: la red tiene un enrutador WiFi con su propio SSID (nombre de red) y una contraseña. Todo dispositivo debe conocer estos 2 para acceder a la red WiFi. El bróker MQTT también forma parte de esta red, por lo que para utilizar el protocolo MQTT, todos los dispositivos deben conocer la dirección IP del bróker. Y, por último, cada dispositivo tiene su propio tema para suscribirse y publicar mensajes.

Prácticamente, un control remoto determinado utiliza el mismo tema para publicar mensajes a los que está suscrito un tren determinado.

Paso 3: Controlador de tren

Controlador de tren
Controlador de tren

Para controlar un tren de juguete, básicamente necesitamos 3 cosas: una fuente de alimentación, un controlador habilitado para WiFi y la electrónica del controlador del motor.

La fuente de alimentación depende del plan de uso real: en el caso de LEGO, esta es la caja de batería Power Functions, en el caso de un tren de escala TT o H0 "oldschool", es la fuente de alimentación de 12V de la vía.

El controlador habilitado para WiFi es un controlador Wemos D1 mini (basado en ESP8266).

La electrónica del controlador del motor es un módulo basado en TB6612.

El controlador del tren tiene 2 salidas PWM controladas individualmente. Actualmente, uno se utiliza para el control de motores y el otro para la señalización luminosa. Tiene 2 entradas para detección basada en contacto de láminas y una salida digital.

El controlador acepta mensajes JSON a través del protocolo WiFi y MQTT.

SPD1 controla el motor, por ejemplo: El mensaje {"SPD1": -204} se usa para mover el motor hacia atrás al 80% de la potencia (el valor de velocidad máxima es -255).

SPD2 controla la intensidad de la luz LED "sensible a la dirección": el mensaje {"SPD2": -255} hace que el LED (hacia atrás) brille a su máxima potencia.

OUT1 controla el estado de la salida digital: {"OUT1": 1} activa la salida.

Si el estado de una entrada cambia, el controlador envía un mensaje de acuerdo con él: {"IN1": 1}

Si el controlador recibe un mensaje válido, lo ejecuta y proporciona una retroalimentación al corredor. La retroalimentación es el comando realmente ejecutado. Por ejemplo: si el corredor envía {"SPD1": 280}, entonces el motor está funcionando a plena potencia, pero el mensaje de retroalimentación será: {"SPD1": 255}

Paso 4: Control del tren LEGO

Control de trenes LEGO
Control de trenes LEGO

En el caso del tren LEGO, los esquemas son un poco diferentes.

La energía proviene directamente de la caja de la batería.

Es necesario un mini convertidor reductor para proporcionar 3,5 V para la placa Lolin basada en ESP8266.

Las conexiones se realizan con un cable de extensión LEGO 8886, cortado por la mitad.

Paso 5: control remoto

Control remoto
Control remoto

El controlador solo publica mensajes al tren (definido por el interruptor BCD).

Al girar el codificador, el control remoto envía mensajes {"SPD1": "+"} o {"SPD1": "-"}.

Cuando el tren recibe este mensaje de "tipo incremental", cambia su valor de salida PWM en 51 o -51.

De esta manera, el control remoto puede cambiar la velocidad del tren en 5 pasos (en cada dirección).

Al presionar el codificador incremental se enviará {"SPD1": 0}.

Paso 6: controlador de sensor

Controlador de sensor
Controlador de sensor

El llamado controlador de sensor mide los estados de sus entradas y, si alguna de ellas cambia, publica ese valor.

Por ejemplo: {"IN1": 0, "IN6": 1} en este ejemplo, 2 entradas cambiaron de estado al mismo tiempo.

Paso 7: controlador de salida

Controlador de salida
Controlador de salida

El controlador de salida tiene 8 salidas digitales, que están conectadas a un módulo basado en ULN2803.

Recibe mensajes a través de su tema suscrito.

Por ejemplo, el mensaje {"OUT4": 1, "OUT7": 1} enciende la 4. y la 7. salida digital.

Paso 8: Raspberry Pi y enrutador WiFi

Tenía un enrutador TP-Link WiFI usado, así que lo usé como un punto de acceso.

El broker MQTT es una Raspberry Pi con Mosquitto instalado.

Utilizo el sistema operativo Raspbian estándar con MQTT instalado con:

sudo apt-get install mosquitto mosquitto-clients python-mosquitto

El enrutador TP-Link debe configurarse para tener una reserva de dirección para la Raspberry, por lo que después de cada reinicio, el Pi tiene la misma dirección IP y todos los dispositivos pueden conectarse a él.

¡Y eso es!

Paso 9: Controladores terminados

Controladores terminados
Controladores terminados
Controladores terminados
Controladores terminados

Aquí están los controladores terminados.

El loko de escala TT tiene un tamaño tan pequeño que una tabla Lolin tuvo que estrecharse (cortarse) para que fuera lo suficientemente pequeña como para caber en el tren.

Los binarios compilados se pueden descargar. Por razones de seguridad, la extensión bin se reemplazó por txt.

Recomendado: