Commande d'une centrale LENZ par un nano-ordinateur RASPBERRY-PI



1. Présentation du système

Il est possible de piloter en automatique une centrale LENZ avec un smartphone et un nano-ordinateur de type Raspberry. Le Raspberry Pi 3B+ est un nano-ordinateur monocarte à faible coût (une quarantaine d'Euros) pouvant se connecter à un moniteur, à un clavier et disposant d'une connectivité WiFi et Bluetooth. Il dispose d'une sortie HDMI, de quatre ports USB et fonctionne sous OS Linux.




Le Raspberry Pi 3B+ dispose aussi du logiciel Python qui permet de générer un signal XPressNet avec ce nano-ordinateur qui est connecté en USB au module LENZ LAN/USB 23151 comme montré sur le schéma ci-dessous.



Pour piloter un train, j'utilise Python et un autre logiciel Node-RED de type client-serveur qui gère un serveur web qui permet à la machine d'analyser les requêtes d'un utilisateur (sous forme http), et d'exécuter les actions correspondant à la requête. La communication entre le Raspberry et le smarphone se fait simplement avec le navigateur web. Il n'y a pas besoin d'installer une application et le système est compatible avec tout type de smartphone ou d'iphone.

Lorsque l'on pilote un train avec le smartphone, les requêtes sont envoyées par le smartphone au raspberry avec Node-RED sous la forme d'un octet qui est écrit dans un fichier temp.txt. Le programme Python qui communique en USB avec le module LENZ 23151 vient lire l'octet écrit dans ce fichier et exécute la commande demandée. De plus, les commandes sont stockées dans un fichier csv qui peut ensuite être reproduit en fonctionnement automatique. J'ai développé deux petits logiciels écrits en Python pour le Raspberry Pi 3B+:
- une version appelée "carto-dcc-enregistrement.py" qui permet associé au programme Node-RED de piloter une loco avec un smartphone ou une tablette et d'enregistrer le trajet. Le passage de la loco sur un détecteur d'occupation est enregistré.
- une version appelée "carto-dcc-play.py" qui permet d'effectuer le trajet enregistré. Ce logiciel simplifié permet d'effectuer deux trajets simultanément.

Pour l'instant, il s'est agi de montrer la faisabilité du système et les fonctionnalités sont très limitées:
- adresse de la loco entre 3 et 99
- fonctions F0 à F4
- commande de 8 aiguilles
- gestion de seulement 8 détecteurs d'occupation avec un seul module LR101 dont l'adresse doit être 65
- fonctionnement en automatique limité à deux trains

Il faut noter que lorsque le logiciel fonctionne en automatique avec une ou deux locos, il tout à fait possible de piloter d'autres trains avec les manettes filaires LH90 ou LH100.

2. Installation de l'OS et de Python

Le 5 mars 2020 la fondation Raspberry Pi a annoncé la sortie d’un nouvel outil officiel, nommé Raspberry Pi Imager, destiné à simplifier l’installation des systèmes d’exploitation sur la carte microSD du Raspberry Pi.

Avec un PC, il faut aller sur le site officiel du Raspberry pi https://www.raspberrypi.org/software/ et télécharger le logiciel Raspberry Pi Imager qui va permettre d'installer l'OS et certains logiciels sur une carte microSD
Puis il faut installer sur le PC le logiciel Raspberry Pi Imager.
Ensuite, Il suffit de se connecter au site https://raspberry-pi.fr/creer-carte-sd-windows-mac-linux-raspberry-pi-imager/ et de suivre les instructions.
Il y a le choix entre plusieurs OS à installer. Il faut choisir Raspbian (c'est le premier de la liste)
Il faut une carte microSD d'au moins 16 Go (je recommande 32 Go)

3. Présentation du logiciel Node-RED

Node-RED est un langage de programmation graphique par assemblage de blocs fonctionnels qui permet de développer des objets connectés (et beaucoup d’autres choses). Node-Red est un projet Open Source (et gratuit) soutenu par IBM. On programme avec Node-RED en liant des fonctions présentées sous la forme de briques. Le flux de données passe d’un traitement à l’autre (d’une fonction à l’autre) comme on peut le voir sur le schéma ci-dessous.



Certaines fonctions proposent des paramètres qu’il suffit de définir à l’aide d’une liste de choix ou d’un champ à remplir (par exemple un clé d’API pour un service météo). Il existe plusieurs centaines de plugins dans tous les domaines : enregistrer les données sur une base de données (MySQL, MongoDB…), piloter les E/S d’un Arduino ou d’un Raspberry (avec le plugin Johny Five par exemple), ajouter une interface graphique (UI) pour tracer des graphiques, afficher des jauges, commander un relai à l’aide d’un bouton…

Node-RED fonctionne en mode client-serveur. Le serveur est installé sur le PC qui est connecté à la centrale DCC et c'est le navigateur web qui permet de piloter le train. On peut utiliser le navigateur web d'un PC, d'un smartphone, d'un iPhone ou d'une tablette. Il suffit d'entrer l'URL du serveur pour afficher le régulateur DCC.
Avec Node-RED Dashboard, il est possible de créer de belles interfaces graphiques comme par exemple ce capteur de tempétature et humidité.



On peut trouver de la documentation sur Node-RED sur le site web de l'éditeur du logiciel.
et aussi sur le site en Français Ippon: Node-Red : l'IoT à portée de tous.

4. Installation de Node-RED

Lorsqu'on installe l'OS sur le Raspberry, le logiciel Python est inclus, mais pas Note-RED.
Pour l'installer, il faut mettre en marche le Raspberry puis dans le menu à gauche, cliquer sur "Préférences" puis sur "Recommended Software"



Une fenêtre intitulée "Recommended Software" va alors s'ouvrir et dans la liste des logiciels qui s'affiche, on trouve Node-RED. Cliquer sur la case à cocher à droite de Node-RED puis sur "Apply". Node-RED va s'installer.



Il reste à installer l'interface graphique Node-RED dashboard nécessaire pour disposer sur smartphone d'un beau régulateur DCC. Il faut lancer Node-RED:



puis ouvrir le navigateur Web Chromium à l'adresse localhost:1880. Ceci affiche la page Node-RED. Cliquer sur l'icone avec trois traits en haut à droite puis cliquer sur "palette". Celà ouvre la fenêtre ci-dessous.



Sélectionner "install" et taper "dashboard" dans "keyboard". Sélectionner "node-red dashboard" et cliquer sur "install".

5. Programmes permettant de piloter une loco et d'enregistrer le trajet

Le logiciel intitulé "carto-dcc-enregistrement.py" est écrit en langage Python avec le logiciel Python-Thonny fourni avec l'OS du Raspberry.
Ce logiciel vient lire l' octet écrit dans le fichier temp.txt par le programme Node-RED et exécute la commande demandée. Pour se connecter en USB avec l'interface USB du module LENZ 23151, il faut utiliser la librairie pySerial 3.4 qui permet de gérer un port COM virtuel.
L'instruction qui permet d'ouvrir le port COM s'écrit: ser = serial.Serial('/dev/ttyUSB0') . Le nom du port COM est ici ttyUSB0. Ce nom doit être remplacé par le nom du port COM du module LENZ. Vous pouvez tapez la commande ci-dessous dans le terminal de votre Raspberry Pi pour trouver les caractéristiques du port COM:
dmesg -s 1024
Pour communiquer avec un smartphone en WiFi, on crée une page web avec le logiciel Node-RED qui représente un régulateur DCC permettant de piloter la loco et les aiguilles.
Voici comment se présente le régulateur.



Après que les programmes Python et Nod-RED soient lançés sur le Raspberry, sur le smartphone, avec votre navigateur web, il faut se connecter au Raspberry en tapant http://adresseIP du Raspberry suivie de :8000 (par exemple http://192.168.1.15:8000). Vous devez voir s'afficher la page web du régulateur DCC.
Le Raspberry doit être connecté sur le même réseau local que le smartphone. Pour trouver l'adresse IP du Raspberry, il taper la commande ci-dessous dans le terminal:
ping raspberrypi.local
Le trajet est stocké dans un fichier csv intitulé trajet0.csv. Un fichier CSV est un fichier texte. Chaque ligne du texte correspond à une ligne du tableau et les virgules correspondent aux séparations entre les colonnes.
Actuellement, il y a 11 colonnes dans le tableau qui sont:
- adresse qui est l'adresse de la loco entre 3 et 98
- ma qui est le sens de marche(MAV==>ma=1, MAR==>ma=0)
- vit qui est la vitesse (vit vaut 0 à 28 en MAR et 128 à 156 en MAV)
- F0 (0 ou 1)
- F1 (0 ou 1)
- F2 (0 ou 1)
- F3 (0 ou 1)
- F4 (0 ou 1)
- durée qui est la durée de la séquence en secondes (valeur <100) Les valeurs supérieures à 100 correspondent au passage sur un détecteur d'occupation
- numag qui est le numéro de l'aiguille à commander (entre 1 et 8)
- posag qui vaut o ou 1 selon la position de l'aiguille (directe ou déviée)
Les fichiers csv sont remplis automatiquement par l'ordinateur en mode Enregistrement.

6. Programme permettant d'exécuter les trajets

Le programme Python intitulé "carto-dcc-play.py" permet d'exécuter un ou deux trajets enregistrés. Après avoir enregistré le trajet de la loco 1 sans le fichier intitulé trajet0.csv, il faut changer le numéro du fichier et l'appeler par exemple trajet1.csv. On apellera le trajet de la deuxième loco trajet2.csv et ainsi de suite pour les autres locos. Le logiciel utilise le mode console et il faut entrer le nommbre de trajets à effectuer (1 ou 2) et les numéros des trajets sélectionnés. Ensuite, le logiciel vient lire les tableaux ligne par ligne et envoie les commandes XpressNet à la centrale.
La rétrosignalisation utilise des commandes de durée supérieures à 100

7. Téléchargement et installation des programmes

Vous pouvez télécharger un dossier appelé ""carto_dcc_raspberry.zip" en cliquant ici..
Vous devez dézipper ce dossier et placer les tous fichiers dans le dossier Download du Raspberry.
Il faut installer le programme Node-RED en cliquant sur "Programmation" puis "Note-RED".
Puis il faut lancer le navigateur Web Chromium et taper localhost:1880. Celà ouvre la page Node-RED
Le menu représenté par 3 traits est situé à côté du bouton Deploy. Cliquer dessus puis sur "Import" et cliquer sur "Select a file to import". Cliqez sur le fichier reg.json qui se trouve dans le sous-dossier Programme Node-RED du dossier Download du Raspberry. Enfin, cliquer sur le bouton Deploy puis sur la flèche à droite de layout pour créer l'interface graphique de dashboard (voir photo ci dessous).



Pour piloter une loco et enregistrer le trajet, il faut lancer le serveur Node-RED en cliquant sur "Programmation" puis "Note-RED" puis cliquer sur "Programmation" puis "Thonny Python IDE" pour lancer le programme Python "CARTO-DCC-Enregistrement" en cliquant sur "RUN". Ensuite, le pilotage du train se fait avec un smartphone ou une tablette en utilisant le navigateur Chrome de l'appareil. Pour accéder au régulateur DCC il faut taper l'adresse IP du Raspberry suivie de :1880/ui ((par exemple 192.168.1.18:1880/ui).

8. Connexion en WiFi entre un smartphone et le Raspberry pi

Il y a plusieurs façons de connecter le smartphone et le Raspberry en WiFi. Le plus simple est d'utiliser la box internet de votre fournisseur d'accès et de connecter le Raspberry et le smartphone sur le réseau local WiFi de la box.
Autrement, lorsqu'on ne dispose pas d'un réseau WiFi (par exemple lors d'une exposition), il faut utiliser un routeur WiFi connecté sur la prise Ethernet de l'interface LENZ 23151.
Enfin, il est possible d'utiliser le point d'accès personnel du smartphone. Dans ce cas, il faut connecter le Raspberry sur le réseau WiFi créé par le smartphone.

Page précédente


Page suivante


Retour page d'accueil