Controle WiFi Model Train usando MQTT: 9 etapas
Controle WiFi Model Train usando MQTT: 9 etapas
Anonim
Controle WiFi Model Train usando MQTT
Controle WiFi Model Train usando MQTT

Tendo um antigo sistema de maquete de trem em escala TT, tive uma ideia de como controlar as locomotivas individualmente.

Com isso em mente, dei um passo adiante e descobri o que é necessário não apenas para controlar os trens, mas para ter algumas informações adicionais sobre todo o layout e controlar outra coisa (lâmpadas, interruptores ferroviários …)

É assim que o sistema de trem modelo controlado por WiFi nasce.

Etapa 1: Princípios de operação

Princípios de operação
Princípios de operação

O princípio principal é controlar cada elemento individualmente, de um único controlador ou de várias fontes de controle. Isso requer inerentemente uma camada física comum - mais obviamente WiFi - e um protocolo de comunicação comum, MQTT.

O elemento central é o MQTT Broker. Cada dispositivo conectado (trem, sensor, saída …) só pode se comunicar através do Broker e só pode receber dados do Broker.

O coração dos dispositivos é um controlador WiFi baseado em ESP8266, enquanto o corretor MQTT é executado em um Raspberry pi.

No início, a cobertura Wifi é fornecida por um roteador Wi-Fi, e tudo é conectado via wireless.

Existem 4 tipos de dispositivos:

- Controlador de trem: tem 2 entradas digitais, 1 saída digital, 2 saídas PWM (para controlar 2 motores CC individuais), - Controlador de sensor: tem 7 entradas digitais (para interruptores de entrada, optossensores …), - Controlador de saída: tem 8 saídas digitais (para interruptores de trilho …), - Remoto WiFi: possui 1 entrada de codificador incremental, 1 entrada digital (para controlar trens remotamente).

O sistema também é capaz de operar em Node-Red (em tablet, PC ou smartphone …).

Etapa 2: Troca de dados e configuração MQTT

MQTT Data Exchange e configuração
MQTT Data Exchange e configuração

Com base no protocolo MQTT, primeiro cada dispositivo assina um determinado tópico e pode publicar em outro tópico. Esta é a base da comunicação da rede de controle do trem.

Esses contos de comunicação acontecem por meio de mensagens formatadas em JSON, para serem curtos e legíveis por humanos.

Olhando de uma perspectiva mais distante: a rede tem um roteador WiFi com seu próprio SSID (nome da rede) e uma senha. Cada dispositivo deve conhecer estes 2 para acessar a rede sem fio. O broker MQTT também faz parte dessa rede, portanto, para usar o protocolo MQTT, cada dispositivo deve saber o endereço IP do broker. E, por último, cada dispositivo tem seu próprio tópico para assinar e publicar mensagens.

Praticamente, um determinado controle remoto usa o mesmo tópico para publicar mensagens para as quais um determinado trem está inscrito.

Etapa 3: treinar o controlador

Controlador de trem
Controlador de trem

Para controlar um trem de brinquedo, basicamente precisamos de 3 coisas: uma fonte de alimentação, um controlador habilitado para WiFi e os componentes eletrônicos do motor.

O fornecimento de energia depende do plano de uso real: no caso do LEGO, esta é a caixa de bateria Power Functions, no caso de um conjunto de trem em escala TT ou H0 "oldschool", é a fonte de alimentação de 12V da via.

O controlador habilitado para WiFi é um mini controlador Wemos D1 (baseado em ESP8266).

A eletrônica do driver do motor é um módulo baseado em TB6612.

O controlador do trem tem 2 saídas PWM controladas individualmente. Agudamente, um é usado para controle do motor e o outro é usado para sinalização luminosa. Possui 2 entradas para detecção baseada em contato reed e uma saída digital.

O controlador aceita mensagens JSON por meio do protocolo WiFi e MQTT.

O SPD1 controla o motor, por exemplo: a mensagem {"SPD1": -204} é usada para mover o motor para trás a 80% da potência (o valor máximo da velocidade é -255).

O SPD2 controla a intensidade da luz do LED "sensível à direção": a mensagem {"SPD2": -255} faz o LED (para trás) brilhar em sua potência máxima.

OUT1 controla o estado da saída digital: {"OUT1": 1} liga a saída.

Se o estado de uma entrada muda, o controlador envia uma mensagem de acordo com ela: {"IN1": 1}

Se o controlador receber uma mensagem válida, ele a executa e fornece um feedback ao corretor. O feedback é o comando realmente executado. Por exemplo: se o corretor enviar {"SPD1": 280}, o motor está operando com potência total, mas a mensagem de feedback será: {"SPD1": 255}

Etapa 4: Controle do trem LEGO

LEGO Train Control
LEGO Train Control

No caso do trem LEGO, os esquemas são um pouco diferentes.

A energia vem diretamente da caixa da bateria.

É necessário um mini conversor redutor para fornecer 3,5 V para a placa Lolin baseada em ESP8266.

As conexões são feitas com um cabo de extensão LEGO 8886, cortado ao meio.

Etapa 5: controle remoto

Controle remoto
Controle remoto

O controlador só publica mensagens para o trem (definido pelo switch BCD).

Girando o codificador, o remoto envia mensagens {"SPD1": "+"} ou {"SPD1": "-"}.

Quando o trem recebe essa mensagem de "tipo incremental", ele altera seu valor de saída PWM em 51 ou -51.

Desta forma, o controle remoto pode alterar a velocidade do trem em 5 etapas (cada direção).

Pressionar o codificador incremental enviará {"SPD1": 0}.

Etapa 6: controlador de sensor

Controlador de Sensor
Controlador de Sensor

O chamado controlador de sensor mede os estados de suas entradas e, se alguma delas mudar, publica esse valor.

Por exemplo: {"IN1": 0, "IN6": 1} neste exemplo 2 entradas mudaram de estado ao mesmo tempo.

Etapa 7: controlador de saída

Controlador de saída
Controlador de saída

O controlador de saída tem 8 saídas digitais, que são conectadas a um módulo baseado em ULN2803.

Ele recebe mensagens por meio de seu tópico inscrito.

Por exemplo, a mensagem {"OUT4": 1, "OUT7": 1} liga as saídas digitais 4. e 7..

Etapa 8: Raspberry Pi e roteador WiFi

Eu tinha um roteador TP-Link WiFI usado, então usei-o como um ponto de acesso.

O corretor MQTT é um Raspberry Pi com Mosquitto instalado.

Eu uso o sistema operacional Raspbian padrão com MQTT instalado com:

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

O roteador TP-Link deve ser configurado para ter uma reserva de endereço para o Raspberry, para que após cada reinicialização o Pi tenha o mesmo endereço IP e todos os dispositivos possam se conectar a ele.

E é isso!

Etapa 9: controladores concluídos

Controladores Terminados
Controladores Terminados
Controladores Terminados
Controladores Terminados

Aqui estão os controladores concluídos.

A escala TT loko tem tamanho tão pequeno que uma placa Lolin teve que ser estreitada (cortada) para ser pequena o suficiente para caber no trem.

Os binários compilados podem ser baixados. Por razões de segurança, a extensão bin foi substituída por txt.