Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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
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
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
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
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
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
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
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
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.