Contrôle WiFi du train miniature à l'aide de MQTT : 9 étapes
Contrôle WiFi du train miniature à l'aide de MQTT : 9 étapes
Anonim
Contrôle WiFi du train miniature à l'aide de MQTT
Contrôle WiFi du train miniature à l'aide de MQTT

Ayant un ancien système de maquette de train à l'échelle TT, j'avais une idée de la façon de contrôler les locomotives individuellement.

Dans cet esprit, je suis allé plus loin et j'ai compris ce qui était nécessaire non seulement pour contrôler les trains, mais aussi pour avoir des informations supplémentaires sur l'ensemble du réseau et contrôler autre chose (lampes, aiguillages…)

C'est ainsi qu'est né le système de train miniature contrôlé par WiFi.

Étape 1: Principes de fonctionnement

Principes de fonctionnement
Principes de fonctionnement

Le principe de base est de contrôler chaque élément individuellement, soit à partir d'un seul contrôleur, soit à partir de plusieurs sources de contrôle. Cela nécessite intrinsèquement une couche physique commune - le plus évidemment WiFi - et un protocole de communication commun, MQTT.

L'élément central est le courtier MQTT. Chaque appareil connecté (train, capteur, sortie…) n'est autorisé à communiquer qu'à travers le Broker et ne peut recevoir que des données du Broker.

Le cœur des appareils est un contrôleur WiFi basé sur ESP8266, tandis que le courtier MQTT fonctionne sur un Raspberry pi.

Au début, la couverture Wifi est fournie par un routeur Wifi, et tout est connecté via le sans fil.

Il existe 4 types d'appareils:

- Contrôleur de train: dispose de 2 entrées numériques, 1 sortie numérique, 2 sorties PWM (pour contrôler 2 moteurs CC individuels), - Contrôleur de capteur: dispose de 7 entrées numériques (pour commutateurs d'entrée, optocapteurs…), - Contrôleur de sortie: dispose de 8 sorties numériques (pour les aiguillages de rail…), - Télécommande WiFi: possède 1 entrée codeur incrémental, 1 entrée numérique (pour contrôler les trains à distance).

Le système est également capable de fonctionner depuis Node-Red (depuis tablette, PC, ou smartphone…).

Étape 2: Échange de données MQTT et configuration

Échange et configuration de données MQTT
Échange et configuration de données MQTT

Basé sur le protocole MQTT, au début, chaque appareil s'abonne à un sujet donné et peut publier sur un autre sujet. C'est la base de la communication du réseau de contrôle des trains.

Ces récits de communication se déroulent à travers des messages au format JSON, pour être courts et lisibles par l'homme.

Dans une perspective plus éloignée: le réseau dispose d'un routeur WiFi avec son propre SSID (nom du réseau) et un mot de passe. Chaque appareil doit connaître ces 2 pour accéder au réseau WiFi. Le courtier MQTT fait également partie de ce réseau, donc pour utiliser le protocole MQTT, chaque appareil doit connaître l'adresse IP du courtier. Et enfin, chaque appareil a son propre sujet pour s'abonner et publier des messages.

Pratiquement, une télécommande donnée utilise le même sujet pour publier des messages auxquels un train donné est abonné.

Étape 3: Former le contrôleur

Contrôleur de train
Contrôleur de train

Afin de contrôler un train jouet, nous avons essentiellement besoin de 3 choses: une alimentation électrique, un contrôleur compatible WiFi et une électronique de commande de moteur.

L'alimentation dépend du plan d'utilisation réel: dans le cas de LEGO, il s'agit du boîtier de batterie Power Functions, dans le cas d'un train à l'échelle "oldschool" TT ou H0, il s'agit de l'alimentation 12V de la piste.

Le contrôleur compatible WiFi est un contrôleur Wemos D1 mini (basé sur ESP8266).

L'électronique du pilote de moteur est un module basé sur TB6612.

Le contrôleur de train dispose de 2 sorties PWM contrôlées individuellement. En fait, l'un est utilisé pour le contrôle moteur et l'autre pour la signalisation lumineuse. Possède 2 entrées pour la détection par contact Reed et une sortie numérique.

Le contrôleur accepte les messages JSON via le protocole WiFi et MQTT.

Le SPD1 contrôle le moteur, par exemple: le message {"SPD1": -204} permet de reculer le moteur à 80% de sa puissance (la valeur de vitesse maximale est de -255).

Le SPD2 contrôle l'intensité de la lumière LED « sensible à la direction »: le message {« SPD2 »: -255} fait briller la LED (vers l'arrière) à sa pleine puissance.

OUT1 contrôle l'état de la sortie numérique: {"OUT1": 1} active la sortie.

Si l'état d'une entrée change, le contrôleur envoie un message en fonction de celle-ci: {"IN1": 1}

Si le contrôleur reçoit un message valide, il l'exécute et fournit un retour au courtier. Le retour est la commande réellement exécutée. Par exemple: si le courtier envoie {"SPD1": 280} alors le moteur fonctionne à pleine puissance mais le message de retour sera: {"SPD1": 255}

Étape 4: Le contrôle du train LEGO

Contrôle des trains LEGO
Contrôle des trains LEGO

Dans le cas du train LEGO, les schémas sont un peu différents.

L'alimentation provient directement du boîtier de la batterie.

Un mini convertisseur abaisseur est nécessaire pour fournir 3,5 V à la carte Lolin basée sur ESP8266.

Les connexions sont réalisées avec un fil d'extension LEGO 8886, coupé en deux.

Étape 5: Télécommande

Télécommande
Télécommande

Le contrôleur publie uniquement des messages au train (définis par le commutateur BCD).

En tournant l'encodeur, la télécommande envoie des messages {"SPD1": "+"} ou {"SPD1": "-"}.

Lorsque le train reçoit ce message de "type incrémental", il modifie sa valeur de sortie PWM de 51 ou -51.

De cette façon, la télécommande peut changer la vitesse du train en 5 étapes (chaque direction).

Appuyer sur l'encodeur incrémental enverra {"SPD1": 0}.

Étape 6: Contrôleur de capteur

Contrôleur de capteur
Contrôleur de capteur

Le contrôleur de capteur mesure les états de ses entrées et, si l'une d'entre elles change, publie cette valeur.

Par exemple: {"IN1": 0, "IN6": 1} dans cet exemple 2 entrées ont changé d'état en même temps.

Étape 7: Contrôleur de sortie

Contrôleur de sortie
Contrôleur de sortie

Le contrôleur de sortie dispose de 8 sorties numériques, qui sont connectées à un module basé sur ULN2803.

Il reçoit des messages via son sujet abonné.

Par exemple, le message {"OUT4": 1, "OUT7": 1} active la 4. et la 7. sortie numérique.

Étape 8: Raspberry Pi et routeur WiFi

J'avais un routeur WiFI TP-Link d'occasion, je l'ai donc utilisé comme point d'accès.

Le courtier MQTT est un Raspberry Pi avec Mosquitto installé.

J'utilise le système d'exploitation Raspbian standard avec MQTT installé avec:

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

Le routeur TP-Link doit être configuré pour avoir une réservation d'adresse pour le Raspberry, donc après chaque redémarrage, le Pi a la même adresse IP et chaque appareil peut s'y connecter.

Et c'est tout!

Étape 9: Contrôleurs finis

Contrôleurs finis
Contrôleurs finis
Contrôleurs finis
Contrôleurs finis

Voici les contrôleurs terminés.

Le loko à l'échelle TT a une taille si petite qu'une planche Lolin a dû être rétrécie (coupée) pour être suffisamment petite pour tenir dans le train.

Les binaires compilés peuvent être téléchargés. Pour des raisons de sécurité, l'extension bin a été remplacée par txt.