Taula de continguts:

Control del model WiFi de tren mitjançant MQTT: 9 passos
Control del model WiFi de tren mitjançant MQTT: 9 passos

Vídeo: Control del model WiFi de tren mitjançant MQTT: 9 passos

Vídeo: Control del model WiFi de tren mitjançant MQTT: 9 passos
Vídeo: Architecture Kata #1 - Analysis with an expert [How does a real Solution Architect work] #ityoutube 2024, Desembre
Anonim
Control de WiFi de model de tren mitjançant MQTT
Control de WiFi de model de tren mitjançant MQTT

Tenint un vell sistema de models de trens a escala TT, tenia una idea de com controlar les locomotores individualment.

Amb això en ment, vaig fer un pas més enllà i vaig descobrir què calia no només per controlar els trens, sinó per tenir informació addicional sobre tota la distribució i controlar una altra cosa (llums, interruptors de ferrocarril …)

És així com neix el sistema de tren model controlat per WiFi.

Pas 1: Principis d'operació

Principis d’operació
Principis d’operació

El principi principal és controlar cada element individualment, ja sigui des d’un únic controlador o des de múltiples fonts de control. Això necessita intrínsecament una capa física comuna (òbviament WiFi) i un protocol de comunicació comú, MQTT.

L’element central és el corredor MQTT. Tots els dispositius connectats (tren, sensor, sortida …) només es poden comunicar a través del corredor i només poden rebre dades del corredor.

El cor dels dispositius és un controlador WiFi basat en l’ESP8266, mentre que l’agent MQTT funciona amb un Raspberry pi.

Al principi, la cobertura Wifi la proporciona un enrutador WiFi i tot es connecta a través de la connexió sense fils.

Hi ha 4 tipus de dispositius:

- Controlador de tren: té 2 entrades digitals, 1 sortida digital, 2 sortides PWM (per controlar 2 motors CC individuals), - Controlador de sensor: té 7 entrades digitals (per a commutadors d’entrada, optosensors …), - Controlador de sortida: té 8 sortides digitals (per a commutadors de ferrocarril …), - Remot WiFi: té 1 entrada de codificador incremental, 1 entrada digital (per controlar els trens de forma remota).

El sistema també és capaç de funcionar des de Node-Red (des de tauleta, PC o telèfon intel·ligent …).

Pas 2: Intercanvi i configuració de dades MQTT

Configuració i intercanvi de dades MQTT
Configuració i intercanvi de dades MQTT

Basat en el protocol MQTT, al principi tots els dispositius es subscriuen a un tema determinat i es poden publicar a un altre tema. Aquesta és la base de la comunicació de la xarxa de control del tren.

Aquestes històries de comunicació es fan a través de missatges amb format JSON, perquè siguin breus i siguin llegibles pels humans.

Mirant des d’una perspectiva més llunyana: la xarxa té un encaminador WiFi amb el seu propi SSID (nom de xarxa) i una contrasenya. Tots els dispositius han de conèixer aquests 2 per accedir a la xarxa WiFi. El broker MQTT també forma part d’aquesta xarxa, de manera que, per utilitzar el protocol MQTT, cada dispositiu ha de conèixer l’adreça IP del broker. I, finalment, cada dispositiu té el seu propi tema per subscriure’s i publicar missatges.

Pràcticament, un control remot determinat utilitza el mateix tema per publicar missatges als quals està subscrit un tren determinat.

Pas 3: entrenar el controlador

Controlador de trens
Controlador de trens

Per controlar un tren de joguina, bàsicament necessitem tres coses: una font d’alimentació, un controlador habilitat per a WiFi i l’electrònica del controlador de motor.

La font d'alimentació depèn del pla d'ús real: en el cas de LEGO, aquesta és la caixa de bateries Power Functions; en cas d'un conjunt de trens a escala "oldschool" TT o H0, és la font d'alimentació de 12V de la via.

El controlador habilitat per WiFi és un controlador Wemos D1 mini (basat en ESP8266).

L'electrònica del controlador de motor és un mòdul basat en TB6612.

El controlador del tren té 2 sortides PWM controlades individualment. De manera aguda, un s’utilitza per al control del motor i l’altre s’utilitza per a la senyalització lumínica. Té 2 impulsos per a la detecció basada en contacte de canya i una sortida digital.

El controlador accepta missatges JSON mitjançant el protocol WiFi i MQTT.

SPD1 controla el motor, per exemple: s'utilitza el missatge {"SPD1": -204} per moure el motor cap enrere amb una potència del 80% (el valor màxim de la velocitat és -255).

SPD2 controla la intensitat de la llum LED "sensible a la direcció": el missatge {"SPD2": -255} fa que el LED (cap enrere) brille a tota la seva potència.

OUT1 controla l'estat de la sortida digital: {"OUT1": 1} activa la sortida.

Si l'estat d'una entrada canvia, el controlador envia un missatge d'acord amb aquest: {"IN1": 1}

Si el controlador rep un missatge vàlid, l'executa i proporciona un feedback al corredor. La retroacció és l'ordre realment executada. Per exemple: si l'agent envia {"SPD1": 280}, el motor funciona a plena potència, però el missatge de resposta serà: {"SPD1": 255}

Pas 4: Control del tren LEGO

Control de trens LEGO
Control de trens LEGO

En el cas del tren LEGO, els esquemes són una mica diferents.

L’energia prové directament de la caixa de la bateria.

Cal un mini convertidor reductor per proporcionar 3,5V per a la placa Lolin basada en l’ESP8266.

Les connexions es fan amb un cable d’extensió LEGO 8886, tallat per la meitat.

Pas 5: control remot

Comandament a distància
Comandament a distància

El controlador només publica missatges al tren (definit pel commutador BCD).

En girar el codificador, el comandament remot envia missatges {"SPD1": "+"} o {"SPD1": "-"}.

Quan el tren rep aquest missatge de "tipus incremental", canvia el seu valor de sortida PWM en 51 o -51.

D'aquesta manera, el comandament a distància pot canviar la velocitat del tren en 5 passos (cada sentit).

En prémer el codificador incremental s'enviarà {"SPD1": 0}.

Pas 6: controlador del sensor

Controlador de sensor
Controlador de sensor

L'anomenat controlador de sensor mesura els estats de les seves entrades i, si algun d'ells canvia, publica aquest valor.

Per exemple: {"IN1": 0, "IN6": 1} en aquest exemple, 2 entrades van canviar d'estat alhora.

Pas 7: controlador de sortida

Controlador de sortida
Controlador de sortida

El controlador de sortida té 8 sortides digitals, que estan connectades a un mòdul basat en l'ULN2803.

Rep missatges a través del tema subscrit.

Per exemple, el missatge {"OUT4": 1, "OUT7": 1} activa la sortida digital 4. i la 7..

Pas 8: Raspberry Pi i enrutador WiFi

Tenia un enrutador TP-Link WiFI utilitzat, així que ho vaig fer servir com a punt d’accés.

El corredor MQTT és un Raspberry Pi amb Mosquitto instal·lat.

Utilitzo el sistema operatiu Raspbian estàndard amb MQTT instal·lat amb:

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

L’encaminador TP-Link s’ha de configurar per tenir una reserva d’adreces per al gerd, de manera que després de cada reinici el Pi té la mateixa adreça IP i tots els dispositius s’hi poden connectar.

I ja està!

Pas 9: controladors acabats

Controladors acabats
Controladors acabats
Controladors acabats
Controladors acabats

Aquí teniu els controladors acabats.

El lloc de l'escala TT té una mida tan petita que es va haver de reduir (tallar) un tauler de Lolin perquè fos prou petit per cabre al tren.

Es poden descarregar els fitxers binaris compilats. Per motius de seguretat, l'extensió de la safata s'ha substituït per txt.

Recomanat: