Commande d'une centrale LENZ en Bluetooth par un smartphone ou une tablette


Il est possible de piloter une centrale LENZ en Bluetooth par un smartphone ou une tablette sous ANDROID.

Le smartphone peut être utilisé comme une simple commande sans fil, mais il peut aussi commander un ou plusieurs trains en automatique avec un système de rétrosignalisation.

1. Module d'interface avec la centrale LENZ

Connecter un Arduino à une centrale LENZ en XpressNet est assez compliqué. Le protocole XpressNet est basé sur une liaison RS485, sur du câble téléphonique à 6 fils (RJ12). De plus, XpressNet est un protocole série 9 bits a 62.5 kbit/s. Le SDK Standard d’Arduino ne propose pas de bibliothèque série 9 bits. Cependant quelqu’un l’a fait sur un Arduino mega 2560 Vous trouverez une description de ce système en cliquant ici.

Une approche plus simple consiste à utiliser un module LENZ LI101F et à relier un ARDUINO UNO au connecteur série du module LI101F.
Le module utilise un protocole à 8 bits connu de l'ARDUINO. Le débit est de 19200 bauds.
Malheureusement, le module LI101F n'est plus commercialisé et il est de plus en plus difficile d'en trouver d'occasion.

1.1 Interface avec LI101F et ARDUINO UNO

1.1.1 Description du montage

Le montage réalisé utilise les composants suivants:
- un module LENZ LI101F qui se connecte en XpressNet à la centrale LENZ LZV100
- un module ARDUINO UNO
- un module Bluetooth HC-05 ou HC-06
- un circuit inégré CD 4011
- une alimentation qui délivre une tension de 9 à 12 Volts

Le schéma est donné sur la figure ci-dessous.



Voici une photo des composants installés dans un boîtier.



1.1.2 Programme ARDUINO

La liaison série entre l'ARDUINO et le module Bluetooth s'effectue à 9600 bits/s alors que la liaison série entre l'ARDUINO et le module LENZ LI101F s'effectue à 19200 bits/s.
Il est donc nécessaire d'utiliser deux liaisons série et pour celà on utilise la librairie SoftwareSerial qu'il faut déclarer en début de programme par les instructions:
#include
SoftwareSerial Serial2(10, 11);
La broche 10 correspond à RX et la broche 11 correspond à TX (c'est la broche utilisée par l'ARDUINO pour transmettre les données au module LENZ LI101F.

Les données échangées entre l'ARDUINO et le module LI 101F sont conformes à la norme XPRESSNET et sont constituées d'une suite de 6 octets. Le premier octet a pour valeur 228. Les octets 2 à 5 ont les valeurs indiquées dans le tableau ci-dessous.



L'octet 6 est un octet de controle obtenu en faisant un OU Exclusif des octets précédents.

Les octets 3 et 4 transmettent l'adresse et les valeurs AH et AL sont données par les relations suivantes:
Si l'adresse est inférieure à 100, alors AH=0 et AL=adresse
Si l'adresse est supérieure ou égale à 100 alors:
AH = int(adresse/256) + 192
AL = adresse - int(adresse/256) X 256
Pour la commande des fonctions les valeurs FG1 et FG2 sont données par les relations suivantes:
FG1 = F1 + 2 x F2 + 4 X F3 + 8 X F4 + 16 X F0
FG2 = F5 + 2 X F6 + 4 X F7 + 8 X F8

Le smartphone ou la tablette envoie à l'ARDUINO en Bluetooth une suite de 4 octets qui sont donnés dans le tableau ci-dessous



Vous pouvez télécharger ce programme en cliquant ici.



1.2 Interface avec ARDUINO MEGA 2560

1.2.1 Description du montage

Le montage à réaliser est constitué de trois éléments:
- une carte d'interface entre l'ARDUINO et le connecteur XpressNet à base d'un circuit MAX 485
- un module ARDUINO MEGA 2560
- un module Bluetooth HC-05

Le shéma de la carte d'interface entre l'ARDUINO et le connecteur XpressNet est donné ci-dessous:



Les pattes du circuit intégé MAX 485 sont à relier aux éléments suivants:
1: broche RX1 de l'ARDUINO
2: broche 5 de l'ARDUINO
3: broche 5 de l'ARDUINO
4: broche RX1 de l'ARDUINO
5: masse de l'ARDUINO et du connecteur XpressNet
6: entrée A du connecteur XprssNet (broche 4)
7: entrée B du connecteur XprssNet (broche 3)
8: broche +5V de l'ARDUINO

Il faut placer une résistance de 1,5 K entre le +5V et la broche 6 et une autre résistance de 1,5 K entre la broche 7 et la masse.

Le module Bluetooth HC-05 est à relier à l'ARDUINO comme suit:
Broche Vcc à relier au +5V de l'ARDUINO
Broche TX à relier à la broche RX2 de l'ARDUINO
Broche RX à relier à la broche TX2 de l'ARDUINO
broche GND(masse) à relier à une broche GND de l'ARDUINO

Voici une photo des composants installés dans un boîtier.



Et voici une photo du boitier.



1.2.2 Le programme ARDUINO


Pour pouvoir communiquer avec l'ARDUINO, il faut installer la librairie Xpressnet.
Cette librairie permet de commander une locomotive ainsi que les accessoires.
Il y a trois instructions à utiliser.

Commande loco: vitesse et sens de marche
XpressNet.setLocoDrive (Adr_High, Adr_Low, Steps, Speed);
Steps=0 ==> 14 crans de vitesse
Steps=1 ==> 27 crans de vitesse
Steps=2 ==> 28 crans de vitesse
Steps=3 ==> 128 crans de vitesse
MAV Speed=vitesse + 128
MAR Speed=vitesse

Commande loco: fonctions
XpressNet.setLocoFunc (Adr_High, Adr_Low, val, fkt);
val=0 ==> fonction off
val=1 ==> fonction on
fkt= numéro de la fonction (entre 0 et 28)

commande des aiguilles
XpressNet.setTrntPos (AdresDccH, AdresDccB, pos);
AdresDccH=0
AdresDccB = numag - 1 (numag est l'adresse de l'aiguillage)
pos = 8 ==> aiguille direct
pos = 9 ==> aiguille déviée

Chaque commande envoyée par le smartphone est constituée d'une suite de 4 octets transmis par le module Bluetooth à l'ARDUINO:

Commande de vitesse et sens de marche
octet1= Adresse_High
octet2= Adresse_Low
octet3= 10+bl
avec bl=0 ==> 14 crans de vitesse
bl=1 ==> 27 crans de vitesse
bl=2 ==> 28 crans de vitesse
bl=3 ==> 128 crans de vitesse
octet4=vitesse si MAR
octet4=vitesse+128 si MAV

Commande de fonction
octet1=Adresse_High
octet2= Adresse_Low
octet3=0 ==> fonction off
octet3=1 ==> fonction on
octet4= numéro de fonction entre 0 et 28

Commande d'accessoires
octet1=0
octet2=numag-1
octet3=22
octet4=8 ==> aiguille direct
octet4=9 ==> aiguille déviée

Vous pouvez télécharger le dossier intitulé bluelenz_arduino qui contient le programme pour l'ARDUINO MEGA 2560 ainsi que la librairie XpressNet en cliquant ici.

2. Application ANDROID BLUELENZ

2.1 Présentation de l'application

Cette application appelée BLUELENZ se connecte en Bluetooth à la centrale LENZ. Elle peut aussi se connecter à un ou deux modules de rétrosignalisation, mais ce n'est pas obligatoire. On peut utiliser l'application sans la rétrosignalisation

Elle exécute les actions suivantes:
- commande manuelle d'un train et des accessoires
- commande manuelle d'un train et des accessoires avec enregistrement du trajet, y compris le passage dans les cantons
- reproduction automatique du trajet enregistré
- sonorisation du réseau avec des enceintes Bluetooth
- commande automatique de deux trains simultanément (avec la rétrosignalisation)

Cette application permet la commande manuelle ou automatique d'une loco avec les caractéristiques suivantes
- adresse entre 3 et 9999
- marche avant, marche arrière
- controle de la vitesse avec 28 crans
- fonctions F0 à F16 (les fonctions F0 à F8 sont personnalisables)

Il est aussi possible de piloter la loco en utilisant l'inclinomètre du smartphone. On penche le smartphone à droite et la loco avance, on penche le smartphone à gauche et la loco recule.

De plus, le trajet peut être enregistré et reproduit ensuite automatiquement.

La commande automatique de deux trans simultanément est aussi possible.

L'application permet aussi de commander 16 accessoires et d'assurer la sonorisation du réseau par des enceintes Bluetooth.

Les fichiers contenant les caractéristiques des trains et les trajets enregistrés sont stockés dans un dossier intitulé bluelenz.

J'ai réalisé cette application à l'aide du logiciel en ligne intitulé MIT App Inventor 2 que l'on peut trouver à l'adresse suivante:
http://ai2.appinventor.mit.edu/
Ce logiciel est très facile à utiliser et permet de créer une application ANDROID très rapidement sans connaître le language Java.

Vous pouvez voir ci-dessous une copie d'écran de la tablette.



2.1 Enregistrement des paramètres d'une loco (nom, adresse, fonctions, vitesse)

Lancer l'application BLUELENZ et appuyez sur le bouton marqué INIT.
L'écran suivant apparait.


Entrer le nom et l'adresse de la loco à enregistrer
Ensuite vous pouvez entrer si vous le souhaitez des noms pour les fonctions F0 à F8 (par exemple Phares pour F0, Son pour F1, klaxon pour F2, etc...)
Puis appuyer sur le bouton valider. C'est terminé, la loco est enregistrée.

2.2 Enregistrement de l'adresse MAC du module d'interface avec la centrale LENZ

Avant de pouvoir utiliser l'application BLUELENZ, il faut enregistrer l'adresse MAC du module d'interface avec la centrale LENZ.

Voici la procédure à suivre.
Mettre sous tension le module d'interface avec la centrale LENZ et allumer le smartphone ou la tablette.
Puis il faut aller dans les paramètres de la tablette activer le bluetooth et se connecter au module HC-05 du module d'interface. Le code à entrer est: 1234.
Noter l'adresse MAC du module. L'adresse MAC est constituée d'une suite de 6 nombres (par exemple 20:15:07:06:49:01)

Lancer l'application BLUELENZ et appuyer sur le bouton INIT.
Faire défiler vers le bas l'écran qui s'affiche jusqu'à obtenir le contenu ci-dessous.



Appuyer sur le bouton intitulé Choix de l'adresse à droite de l'intitulé Module LENZ. Appuyer sur l'adresse MAC du module puis appuyer sur le bouton valder. L'adreese MAC est alors stockée dans le fichier adlenz.txt du dossier intitulé bluelenz.

2.3 Commande d'un train

Mettre sous tension la centrale LENZ et le module d'interface avec la centrale LENZ.
Allumez la tablette et lancez l'application BLUELENZ.
L'écran ci-dessous doit s'afficher.



Appuyer sur le bouton marqué LENZ à droite de connexion. Le bouton passe au vert, ce qui indique que la connexion est effectuée.
Puis appuyer sur le bouton marqué Adresse.
La liste des locos enregistrées s'affiche. Appuyer sur la loco choisie puis appuyer sur le bouton marqué Valider.

Vous pouvez alors piloter la loco en utilisant les différents boutons (MAV, MAR, vitesse, fonctions)
On peut commander aussi les accessoires en appuyant sur le bouton du numéro de l'accessoire à droite de ACC.

2.4 Enregistrement et reproduction du trajet

Il est possible d'enregistrer le trajet effectué par un train et de le reproduire ensuite automatiquement.
Pour enregistrer un trajet, il suffit d'appuyer sur le bouton intitulé ENR aprés avoir choisi la loco à faire circuler. Le bouton ENR devient jaune. Lorsque le trajet est terminé, appuyer de nouveau sur le bouton ENR qui doit devenir blanc. L'enregistrement est terminé.
Pour effectuer le trajet en automatique, il suffit d'appuyer sur le bouton intitulé PLAY. Le bouton passe au jaune et le trajet enregistré démarre.

3. Rétrosignalisation et commande automatique des trains

3.1 Généralités

Il est possible de commander un train en automatique avec un smartphone ou une tablette, ce qui permet de se passer d'un ordinateur.

Pour faire une commande automatique d'un train, il est nécessaire de connaître sa position sur le réseau. Pour celà, le réseau doit être divisé en cantons associés à des détecteurs d'occupation LENZ LB101 qui envoient un signal lorsque le canton est occupé par un train.

Dans cette configuration, les détecteurs d'occupation LENZ LB101 sont reliés à un module qui communique en Bluetooth avec le smartphone ou la tablette.
L'application ANDROID BLUELENZ communique en Bluetooth en même temps avec la centrale LENZ et avec le ou les modules de rétrosignalisation.

Avec le smartphone, on fait circuler un train en manuel en enregistrant le trajet ainsi que les passages dans les cantons équipés de détecteurs d'occupation. Ensuite, on peut reproduire automatiquement le trajet enregistré. La procédure est très simple.

3.2 Module de rétrosignalisation

La sortie de chaque détecteur d'occupation LB101 est relié à une entrée numérique de l'ARDUINO. Avec un ARDUINO UNO, il est possible de connecter 12 détecteurs d'occupation (sur les entrées 2 à 13 de l'ARDUINO) , soit 6 modules LENZ LB101. L'ARDUINO communique avec le smartphone en Bluetooth avec un module HC-05.
Le schéma du module (pour 4 détecteurs) qui doit être alimenté en 12 Volts est le suivant.



Lorsque l'état d'un détecteur change, un octet est envoyé par l'ARDUINO au smartphone.
Si N est le numéro du détecteur (N est compris entre 1 et 12), l'ARDUINO envoie la valeur N si le canton est occupé et N + 100 si le canton est libéré.

Vous pouvez télécharger le programme pour l'ARDUINO en cliquant ici.



3.3 Enregistrement des adresses MAC des modules de rétrosignalisation

Avant de pouvoir utiliser l'application BLUELENZ, il faut enregistrer les adresses MAC du ou des modules de rétrosignalisation.

Voici la procédure à suivre.
Mettre sous tension le module d'interface avec la centrale LENZ et allumer le smartphone ou la tablette.
Puis il faut aller dans les paramètres de la tablette activer le bluetooth et se connecter au module HC-05 du module d'interface. Le code à entrer est: 1234.
Noter l'adresse MAC du module. L'adresse MAC est constituée d'une suite de 6 nombres (par exemple 20:15:07:06:49:01)

Lancer l'application BLUELENZ et appuyer sur le bouton INIT.
Faire défiler vers le bas l'écran qui s'affiche jusqu'à obtenir le contenu ci-dessous.



Appuyer sur le bouton intitulé Choix de l'adresse à droite de l'intitulé Module RETRO 1. Appuyer sur l'adresse MAC du module puis appuyer sur le bouton valider. L'adreese MAC est alors stockée dans le fichier retro1.txt du dossier intitulé bluelenz.

Il faut refaire la même procédure pour enregistrer le deuxième module de rétrosignalisation.

3.4 Commande d'un train

Mettre sous tension la centrale LENZ, le module d'interface avec la centrale LENZ et le ou les modules de rétrosignalisation.
Allumez la tablette et lancez l'application BLUELENZ.
L'écran ci-dessous doit s'afficher.



Appuyer sur le bouton marqué LENZ à droite de connexion. Le bouton passe au vert, ce qui indique que la connexion est effectuée.
Puis appuyer sur le bouton marqué RETRO 1 à droite de connexion pour connecter le premier module de rétrosignalisation. Le bouton passe au vert, ce qui indique que la connexion est effectuée.
Si un deuxième module de rétrosignalisation est utilisé, appuyer sur le bouton marqué RETRO 2 à droite de connexion pour connecter le deuxième module de rétrosignalisation. Le bouton passe au vert, ce qui indique que la connexion est effectuée.

Puis appuyer sur le bouton marqué Adresse.
La liste des locos enregistrées s'affiche. Appuyer sur la loco choisie puis appuyer sur le bouton marqué Valider.

Vous pouvez alors piloter la loco en utilisant les différents boutons (MAV, MAR, vitesse, fonctions)
On peut commander aussi les accessoires en appuyant sur le bouton du numéro de l'accessoire à droite de ACC.

3.5 Enregistrement et reproduction du trajet

Il est possible d'enregistrer le trajet effectué par un train ainsi que les passages dans les cantons et les commandes d'aiguilles et de le reproduire ensuite automatiquement.
Pour enregistrer un trajet, il suffit d'appuyer sur le bouton intitulé ENR aprés avoir choisi la loco à faire circuler. Le bouton ENR devient jaune. Lorsque le trajet est terminé, appuyer de nouveau sur le bouton ENR qui doit devenir blanc. L'enregistrement est terminé.
Pour effectuer le trajet en automatique, il suffit d'appuyer sur le bouton intitulé PLAY. Le bouton passe au jaune et le trajet enregistré démarre.

3.6 Stockage d'un trajet enregistré

Il est possible de stocker un trajet enregistré en lui donnant un nom pour l'utiliser ensuite en mode automatique avec d'autres trajets.

Pour celà, lorsque le trajet est enregistré, appuyer sur le bouton intitulé TRANSFERT. L'écran suivant s'affiche.



Donnez un nom au trajet enregistré, puis appuyer sur le bouton intitulé Création du trajet.
Le trajet est enregistré dans le sous dossier nommé trajets du dossier bluelenz.

3.7 Sonorisation du réseau

Il est possible de sonoriser le réseau en utilisant des enceintes Bluetooth que l'on peut dissimuler dans un batiment (une gare par exemple) ou sous le réseau. On peut ainsi générer des annonces en gare (départ et arrivée des trains), la sonnerie d'un passage à niveau, etc...

Pour l'instant, l'application BLUELENZ ne permet de communiquer qu'avec une seule enceinte Bluetooth.

Pour générer une annonce en gare, il faut appuyer sur le bouton intitulé HP qui se trouve dans le tableau des fonctions. Ce bouton permet de choisir une parmi quatre annonces possibles. Si le bouton ENR est activé, cette annonce sera enregistrée pour être ensuite reproduite automatiquement lors de l'exécution automatique du trajet.

Voici une photo de l'enceinte Bluetooth que je place dans une gare.



3.8 Mode automatique

Ce mode permet de faire circuler deux trains en mode automatique. Deux trajets enregistrés précédemment peuvent être exécutés simultanément.

Pour celà, il faut lancer l'application BLUELENZ et dans l'écran qui s'affiche, appuyer sur le bouton intitulé Mode auto. L'écran suivant doit s'afficher.



Après s'être connecté au module d'interface LENZ et aux modules de rétrosignalisation, il faut choisir le nombre de trajets à exécuter (1 ou 2) puis choisir les trajets à exécuter.
Enfin, appuyer sur le bouton intitulé Départ des trajets.
Pour arrêter, appuyer sur le bouton intitulé Arrêt des trajets puis sur Déconnexion.

4. Téléchargement de l'application BLUELENZ

Il y a deux versions de l'application en fonction du module d'interface avec la centrale LENZ.

L'application BLUELENZ V2 doit être utilisée avec l'interface avec LI101F et ARDUINO UNO.
Vous pouvez télécharger cette application ainsi qu'un exemple de dossier bluelenz en cliquant ici.

L'application BLUELENZ V5 doit être utilisée avec l'interface avec ARDUINO MEGA.
Vous pouvez télécharger cette application ainsi qu'un exemple de dossier bluelenz en cliquant ici.

Dans chaque dossier on trouve l'application avec l'extension .apk à installer sur le smartphone ou la tablette ainsi qu'un fichier avec l'extension .aia qui est le code source à ouvrir avec APP INVENTOR si vous souhaitez modifier l'application.

5. Régulateur Bluetooth

Si vous êtes allergique au smartphone ou à la tablette, ce petit boitier permet de piloter un train en Bluetooth. Il remplace alors le smartphone ou la tablette. Le principal intérêt est de pouvoir l'utiliser en plein soleil quand l'écran d'un smartphone est difficile à lire. De plus, il démarre plus vite qu'un smartphone.

5.1 Description

Ce boitier, alimenté par une pile 9V, utilise les composants suivants:
- un module ARDUINO (UNO, NANO ou ProMini)
- un module Bluetooth HC-05 configuré en mode maître (alors que le module HC-05 installé dans l'interface LENZ est en mode esclave).
- un afficheur 4 digits qui sert à afficher l'adresse de la locomotive ou de l'accessoire sélectionné
- un clavier à membrane de 16 touches qui sert à commander les fonctions et à entrer l'adresse de la locomotive ou de l'accessoire à commander
- un potentiomètre qui sert à commander la vitesse
- un interrupteur qui sert à commander le sens de marche
- un interrupteur pour la mise en marche

Les fonctions disponibles avec cette manette sont les suivantes:
- adresse d'une loco entre 1 et 9999
- vitesse en MAV et MAR avec 28 crans de vitesse
- fonctions F0 à F8
- commande de 8 accessoires
- mise en mémoire des adresses des locos

Les connexions entre l'ARDUINO et les autres composants sont les suivantes:
Le clavier à membrane est connecté sur les 8 entrées digitales successives de la carte Arduino Uno de D9 à D2
pin1 --> D9
pin 2--> D8
pin 3--> D7
pin 4--> D6
pin 5--> D5
pin 6--> D4
pin 7--> D3
pin 8--> D2
Le module Bluetooth HC-05 est relié à l'ARDUINO comme suit:
VCC --> +5V
GND --> GND
TXD --> D10
RXD --> D11
STATE --> A2
L'afficheur est relié à l'ARDUINO comme suit:
VCC --> +5V
GND --> GND
DIO --> pin 12
CLK --> pin 13
Le potentiomètre de 10K lin est relié à l'ARDUINO comme suit:
broche 1 --> +5V
broche 2 (point milieu) --> A0
broche 3 --> GND
L'interrupteur qui sert à commander le sens de marche est relié à l'ARDUINO comme indiqué sur le schéma ci-dessous:



5.2 Configuration du module Bluetooth HC-05 en mode maître

Voici la procédure à suivre.
Tout d'abord, il faut connecter le module HC-05 à l'ARDUINO. La broche RX du module doit être connectée à la broche 11 de l'ARDUINO et la broche TX du module HC-05 doit être connectée à la broche 10 de l'ARDUINO.
Puis charger sur l'ARDUINO le programme hc05_maitre qui permet d'envoyer les commandes AT pour configurer le module HC-05 en mode maître. Vous pouvez télécharger ce programme en cliquant ici.

Débrancher le module HC-05, appuyer sur le bouton situé sur le module, rebrancher le module et relacher le bouton.
La diode du module HC-05 doit clignoter lentement, ce qui indique que le module est prêt à recevoir les commandes AT
Taper dans la console AT puis envoyer. Le module doit répondre OK
Taper AT+ROLE=1 ceci passe le module en maître
Taper AT+CMODE=1 ceci permet au module de se connecter automatiquement à un autre module Bluetooth HC-05.
Débrancher le module et le rebrancher. C'est terminé.
Vous pouvez alors télécharger dans l'ARDUINO le programme qui communique avec l'autre module HC-05 en mode 'esclave.

5.3 Téléchargement du programme pour l'ARDUINO

Vous pouvez télécharger un dossier intitulé regulateur_bluetooth_lenz.zip en cliquant ici.

Ce dossier comprend:
- le progamme pour l'ARDUINO intitulé regulateur_bluetooth.
- deux dossiers intitulés Keypad et TM1637Display à placer dans le dossier libraries du logiciel ARDUINO.

5.4 Photos

Voici une photo des composants reliés à un ARDUINO UNO avant installation dans le boîtier.



Et voici une photo du régulateur avec les composants installés dans un boîtier.



5.5 Mode d'emploi du régulateur

L'afficheur clignote lorsque la connexion Bluetooth n'est pas établie et s'arrête de clignoter lorsque la connexion est établie.

Entrée d'une adresse loco:
Appuyer sur A puis taper l'adresse de la loco et appuyer sur B L'afficheur indique l'adresse de la loco.
Faire avancer ou reculer la loco avec le potentiomètre et l'interrupteur de sens de marche
Pour activer ou désactiver les fonctions F0 à F8, appuyer sur la touche correspondant au N° de la fonction.

Commande des accessoires 1 à 8.
Taper * puis le numéro de l'accessoire à commander et appuyer sur B. Le numéro de l'accessoire doit s'afficher.
Taper sur les touches 1 ou 3 pour commander l'accessoire
Appuyer sur # pour revenir à la commande loco.

Mise en mémoire
Appuyer sur C pour mettre en mémoire l'adresse d'une nouvelle loco
Appuyer sur D pour faire défiler les adresses mises en mémoire.

Page précédente


Retour page d'accueil