Auteur Sujet: Piloter tout son réseau d'une seule main - manette Bluetooth low energy (BLE)  (Lu 4797 fois)

NitraThor

  • Newbie
  • *
  • Messages: 35
    • Voir le profil
    • Modélisme ferroviaire par NitraThor
Bonjour à tous

Très content de vous retrouver après cette période calme et merci aux participants à la remise sur pied du site !

En cette période de vacances propice à la réflexion, j'en appelle à votre expertise afin de tester une manette Bluetooth et son module de contrôle. Celle-ci permet, sans aucun paramétrage, de piloter toutes les locos de votre réseau avec, malgré tout, deux pré-requis :
  • Disposer d'une centrale DCC pilotable par l'USB
  • Utiliser JMRI comme gestionnaire de réseau
L'avantage de cette manette réside dans sa facilité d'utilisation. En effet, elle est utilisable avec une seule main (pouce et index) et permet de piloter simultanément quatre locos à choisir dans la liste de toutes celles déclarées dans JMRI.
Je vous laisse découvrir toutes les informations nécessaires à ce montage à l'adresse :

https://www.nitrathor.fr/projets/micro-centrale-dcc/micro-centrale-dcc-modulaire/module-pad-ble

Sans avoir pu le tester, je pense que ce montage est applicable à d'autres centrales DCC. De nombreuses manettes peuvent également être connectées en série pour un partage et une utilisation des ressources du réseau ferroviaire entre plusieurs modélistes...

Bonne lecture.
Bien à vous,
NitraThor.
« Modifié: août 07, 2023, 10:01:04 pm par NitraThor »

NitraThor

  • Newbie
  • *
  • Messages: 35
    • Voir le profil
    • Modélisme ferroviaire par NitraThor
Bonsoir à tous,

Quelques petites nouvelles du module de manette BLE après que les circuits imprimés soient revenus de fabrication :
  • un module se connecte directement sur la centrale DCC à chaud (connecteurs magnétiques) ;
  • plusieurs modules peuvent être utilisés en même temps et donc plusieurs manettes interviennent sur les locos du réseau ;
  • grâce à un script JMRI, toutes les adresses de locos sont transférées en un clic dans les modules pour être utilisées par les manettes ;
  • chaque module peut utiliser simultanément 4 adresses parmi toutes celles connues dans JMRI et en changer à la volée ;
  • chaque module peut stocker en EEPROM 4 adresses et donc les utiliser immédiatement lors d'une mise sous tension (sans être connecté à JMRI ou un autre gestionnaire de réseau).
A l'usage, c'est un vrai régal de pouvoir passer d'une loco à l'autre sans quitter des yeux le réseau !
Les commandes sont souples et la manette très légère.

Le code source en ligne vous permet d'utiliser ce PAD BLE et d'adapter les commandes et combinaisons de touches et joystick, à vos propres besoins :
https://www.nitrathor.fr/projets/micro-centrale-dcc/micro-centrale-dcc-modulaire/module-pad-ble

Bien à vous,
NitraThor.

Marceau69

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
Salut,

Je suis impressionné par ton projet de manette Bluetooth et son module de contrôle. C'est une réalisation très ingénieuse et pratique pour piloter tes locos avec ton smartphone. Je trouve que c'est une bonne idée d'utiliser JMRI comme gestionnaire de réseau, c'est un logiciel libre et puissant qui offre de nombreuses fonctionnalités.

J'ai regardé les photos que tu as partagées, et j'ai trouvé que ton montage était très propre et soigné. Le module se connecte facilement sur la centrale DCC, et le circuit imprimé est bien conçu. La manette a l'air ergonomique et facile à utiliser. Tu as fait du bon travail !

Je te remercie pour le lien vers le code source de ton projet. Je suis curieux de savoir comment tu as programmé le module et l'application Android pour communiquer avec le Bluetooth. Quels sont les protocoles et les bibliothèques que tu as utilisés ? Quelles sont les difficultés que tu as rencontrées ?

En tout cas, bravo pour ton initiative, c'est toujours agréable de voir des modélistes qui partagent leurs créations et leurs astuces. J'espère que tu vas profiter de ta manette et de tes locos. N'hésite pas à nous montrer des vidéos de ton réseau !


Visiter notre site : https://www.multi-hardware.com/
« Modifié: septembre 20, 2023, 08:26:47 am par Marceau69 »

NitraThor

  • Newbie
  • *
  • Messages: 35
    • Voir le profil
    • Modélisme ferroviaire par NitraThor
Bonsoir Marceau69,

Merci beaucoup pour ce retour très positif.

Avant de répondre à tes questions, juste une précision : le module BLE et la manette communiquent sans aucun lien avec un smartphone. C'est l'ESP32 qui se connecte au PAD en fonction des services proposés par celui-ci.
Le Bluetooth low energy (BLE) n'est pas compatible avec le Bluetooth standard et consomme très peu de courant.
Pour faire simple, en Bluetooth standard, c'est une connexion permanente (écoute de musique par exemple) alors qu'en BLE, tant que la manette n'est pas manipulée, il n'y a pratiquement aucune consommation de courant.

Le code source utilise la librairie ArduinoBLE qui facilite énormément les accès à cette technologie et contient toutes les fonctions nécessaires. La complexité réside dans la connaissance du principe de fonctionnement du BLE ainsi que les différents codes envoyés par les appareils utilisant cette technologie :

Le protocole BLE est une sorte de mécanisme client/serveur, où l'objet BLE joue le rôle d'un serveur qui propose ses services à l'ESP32 qui viendra se connecter dessus en client.
Pour que le client puisse découvrir le serveur, c'est-à-dire pour qu'il puisse "voir" l'objet BLE, le protocole prévoit que le serveur envoie périodiquement une trame pour signaler sa présence.
Plus simplement l'objet broadcaste à intervalle régulier un message qui dit "je suis à côté de vous, je propose tel service, et j'ai telle adresse Bluetooth si vous voulez me joindre".
Au final, l'appariement est entièrement automatique et aucun paramétrage n'est nécessaire pour connecter une manette à son module.
Question consommation, j'utilise la manette tous les jours (et même les nuits) depuis plusieurs semaines et ne l'ai rechargé qu'une seule fois...

Le programme en est à sa quatrième évolution et toute la gestion a été réalisée en pointeurs. C'est un peu plus compliqué à comprendre, mais sans aucune commune mesure à l'utilisation. Le programme est très fluide (le microcontrôleur y est aussi pour beaucoup) et l'affichage ne souffre d'aucun ralentissement.

J'espère que ces quelques explications suffiront.
Bien à toi,
NitraThor.

nopxor

  • Full Member
  • ***
  • Messages: 174
    • Voir le profil
Re : Piloter tout son réseau d'une seule main - manette Bluetooth low energy (BLE)
« Réponse #4 le: décembre 16, 2023, 01:49:40 am »
Bonjour NitraThor,

Félicitations pour cette réalisation et bravo pour votre site internet très bien fait.

Je suis interessé par vos manettes BLE, mais j'aimerai les connecter à un ESP32 qui serait connecté en WIFI au serveur WiThrottle de JMRI.

J'ai déja réalisé une manette WIFI connectée ainsi à JMRI qui me donne entière satisfaction:
https://forum.locoduino.org/index.php?topic=1333.0

Je vais donc m'inspirer du programme de Geoff Bonza pour la connection au WiThrottle et m'inspirer de votre programme pour la connection à la manette BLE si vous me le permettez.

Avez-vous une source de documentation pour les messages BLE fourni par la manette ?
Avez-vous des précisions sur les différents modes de fonctionnement A,B,C,D  et pourquoi utilisez vous le mode C ?

NitraThor

  • Newbie
  • *
  • Messages: 35
    • Voir le profil
    • Modélisme ferroviaire par NitraThor
Re : Piloter tout son réseau d'une seule main - manette Bluetooth low energy (BLE)
« Réponse #5 le: décembre 16, 2023, 10:59:44 pm »
Bonjour nopxor,

Merci beaucoup pour ce retour positif.
Bien sûr, aucun problème pour utiliser et modifier le programme de la manette BLE disponible sur le site. C'est bien le principe du partage des idées en DIY.

Concernant le mode C, après de nombreux essais, il s'agit du mode qui permet le plus de combinaisons. Chaque bouton ou joystick génère un code particulier. Avec le mode C, non seulement tous les boutons et chaque position du joystick ont un code différent, mais il est possible de les combiner (principe de l'addition binaire).
Grâce à ce principe, il est possible de réaliser des menus permettant de détecter lors de la manipulation du joystick, par exemple, qu'un autre bouton est activé. Il est également possible de détecter si plusieurs boutons sont activés simultanément. Dans le programme de PAD BLE, l'appui simultané des quatre boutons de fonction (A+B+C+D) permet d'activer ou d'arrêter la génération du signal DCC.
La fonction "Gestion_PAD" qui débute ligne 697, recense la liste de toutes les combinaisons dans les tests : if (iAction_PAD==<code retour>). Il suffit de remplacer les instructions à l'intérieur de chaque cas pour réaliser sa propre gestion adaptée.

Espérant avoir répondu à tes questions.
Bien à toi,
NitraThor.
« Modifié: décembre 17, 2023, 11:33:58 am par NitraThor »

nopxor

  • Full Member
  • ***
  • Messages: 174
    • Voir le profil
Re : Piloter tout son réseau d'une seule main - manette Bluetooth low energy (BLE)
« Réponse #6 le: décembre 16, 2023, 11:26:23 pm »

Bonsoir NitraThor,

Merci d'abord de mettre à disposition ton code.
Et Merci encore pour ces explications très claires concernant les modes de fonctionnement de la manette BLE.
J'ai commandé L'ESP, un afficheur et 2 manettes.
J'ai hâte de bientôt pouvoir expérimenter tout cela grace à toi.  :)

nopxor

  • Full Member
  • ***
  • Messages: 174
    • Voir le profil
Bonjour,

Ca y est, j'ai réussi à connecter mes manettes "2 doigts" BLE (Bluetooth Low Energy) au serveur WiThrottle de JMRI.
C'est effectivement un plaisir que de commander de 2 doigts seulement ses locos avec une telle manette !
C'est très ergonomique et plus agréable qu'un écran tactile.

L'ESP32 est une bestiole extraordinaire qui permet en même temps une connection à un réseau WIFI et une connection à un périphérique Bluetooth BLE.

C'est vraiment cool de pouvoir récupérer la liste de ses locos avec leurs adresses DCC (la roster list de JMRI) directement du serveur, par WIFI.
Je peux ainsi choisir facilement la loco affectée à la manette en faisant défiler avec le joystick les pages (écran OLED) de la liste roster des locos.

Un grand merci à Nitrathor pour son super programme, sur lequel je me suis basé, pour la connection BLE.

Pour la connection WIFI au seveur j'ai utilisé la librairie WiThrottle qui facilite grandement le travail.
https://github.com/lucadentella/WiThrottle
Cependant, attention, la librairie a un petit bug  :-\ (qui cause le crash de l'ESP32...), facilement corrigé  8) par la modification de WiThrottle.cpp selon:
https://github.com/lucadentella/WiThrottle/pull/2/commits/4fb8034fc052e8dcac14f2303e3b180ced795fc5

Le programme fonctione bien, il me reste à implanter la gestion des fonctions F0 à F29 des locos.

Au niveau hardware, c'est ultra basique:
- un ESP32,
- un écran OLED I2C (128x64)
- une led verte pour visualiser la marche avant
- une led rouge pour la marche arrière
- 2 boutons poussoirs

+ une manette BLE qui coûte 3.90€  ;)
https://shop.reparepc.fr/gaming/49-manette-vr-r1-bluetooth-magicsee.html

Reste plus qu'à mettre cela dans un joli petit boitier.

je fournirai le programme, pour ceux que cela intéresse, dès qu'il sera fini. (c'est jamais fini !...  :D)
« Modifié: janvier 03, 2024, 08:19:24 am par nopxor »

nopxor

  • Full Member
  • ***
  • Messages: 174
    • Voir le profil
Bonjour,

Difficile de tester les fonction F1 à F28 quand on a pas de décodeur son... (pas facile à caser en HOe)
Néanmoins, j'ai pu tester F0, la lumière, et là j'ai eu dabord un fonctionnement bizarre (il fallait répéter 2 fois la commande F0 pour allumer/éteindre).
Je me suis donc plongé dans WiThrottle.cpp et dans la doc du protocole JMRI disponible ici:
https://www.jmri.org/help/en/package/jmri/jmrit/withrottle/Protocol.shtml#Commands

J'en ai déduit que pour un fonctionnement normal de F0 (bascule on/off) il fallait:
Remplacer la lettre F (majuscule) par la lettre f (minuscule) à la ligne 840 dans WiThrottle.cpp
Avec cette modification F0 fonctionne bien.

Cela fait une deuxième modification à apporter (après celle évoquée précédemment (réponse 7)) au fichier WiThrottle.cpp de la librairie WiThrottle.
Reste à espérer que F1 à F28 fonctionnent bien aussi. Tenez moi au courant en cas de soucis.

J'ai choisi un mini boitier pour loger l'électronique.



Les 2 boutons poussoirs du boitier (suivant et valider) permettent de naviguer dans les menus d'initialisation d'une nouvelle manette.
voir la doc sur le site de NitraThor:
https://www.nitrathor.fr/projets/micro-centrale-dcc/micro-centrale-dcc-modulaire/module-pad-ble

J'alimente le montage avec le +5V disponible sur mon réseau.

Le mode d'emploi de la manette est différent de celle de NitraThor.

Il figure dans l'entête du programme WIFI-BLE_04.ino que je fournis en pièce jointe à ce post.

nopxor

  • Full Member
  • ***
  • Messages: 174
    • Voir le profil
Bonjour,

Marcel m'a envoyé cette vidéo:



Il est possible d'associer directement ce type de manette BLE à un smartphone androïd avec l'application EngineDriver.
https://enginedriver.mstevetodd.com
Cela fonctionne donc avec DCC-EX(avec son serveur WIFI), mais aussi avec JMRI et le serveur WiThrottle, j'ai testé.
Cependant l'ergonomie n'est pas la même car on ne peut pas changer de loco directement avec la manette.

Pour ceux qui sont allergiques  au DIY, aux lignes de code et au fer à souder, c'est une alternative !  :)
« Modifié: janvier 06, 2024, 12:53:00 am par nopxor »

CATPLUS

  • Sr. Member
  • ****
  • Messages: 404
    • Voir le profil
Tuto pour APPAIRER la manette BLE
« Réponse #10 le: janvier 10, 2024, 03:05:48 pm »
Bonjour à tous

En complément de ce sujet fort bien traité par NitraThor & Nopxor (merci à eux)

Ce tuto sous format PDF explique comment vous pouvez "Appairer cette manette" 
Le test réalisé avec un téléphone portable et une tablette.

Certaines copies d'écran sont issues de la vidéo ci-dessus, il y a quelque différence avec  la dernière version en français d'Engine Driver "vers 2.35.173"
La méthode reste la même.

Cordialement
Best Regards