centrale DCC WIFI D17

   ** Présentation :

La centrale D17 est une petite centrale DCC et analogique permettant de conduire des locomotives DCC ou analogiques avec des téléphones ou tablettes Android par WIFI. C’est une centrale à réaliser soi-même qui revient à 10€. Vous pouvez aussi réaliser une souris WIFI potentiomètrique pour 10€.

 La centrale est également capable de piloter des accessoires (aiguillages, feux ...) via des décodeurs d'accessoires DCC ou directement via ses 6 sorties ou par bus SPI et MAX7219 pour des LEDs ou par bus I2C et PCA9685 pour des sorties PWM ou servos. La centrale propose aussi un bus de rétrosignalisation S88 pour les entrées.

La figure ci-dessous présente l'architecture de la centrale (Connectez bien D3 à DIR et D2 à PWM) :

D17 6

Le cœur de la centrale est un module Wemos D1 mini sur lequel est soudé le module ESP12 qui contient le circuit esp8622 qui est un microcontrôleur avec un système WIFI complet.
Le microcontrôleur peut se programmer avec l'environnement de développement Arduino. Le système WIFI peut fonctionner en mode point d'accès ou station. Nous l'utiliserons en mode point d'accès sur lequel se connecteront les souris potentiomètriques et Android. Il n'y a donc pas besoin d'utiliser un point d'accès WIFI externe. Le module créant lui-même son propre réseau WIFI ! Ce point d'accès autorise la connexion de 8 appareils WIFI. J'ai programmé le microcontrôleur afin qu'il génère un signal DCC ou analogique suivant les commandes des souris. Le module est alimenté via son port micro-USB par un chargeur USB ou un PC.
 
Le signal DCC ou analogique pilote un booster fabriqué à l'aide d'un module LMD18200T qui alimente les voies. Ce circuit est capable de fournir 3A et est totalement protégé contre les court-circuits, surchauffe ... Il est alimenté par une alimentation continue à choisir entre 12V mini et 18V max. Bien entendu, on choisira une alimentation d'intensité suffisante. On prend en générale 500mA par loco (mais cela peut varier énormément).
 
Le cout total de l'électronique de la centrale est minime. Environ 10 euros. C'est pourquoi je qualifie cette centrale de "centrale a 10 balles".
- 4 euros : module Wemos D1 mini (qui contient le module ESP12 (qui contient l'esp8266))
- 6 euros : module LMD18200 pour réaliser le booster
- (+ les alims)
- il n'y a pas besoin de rajouter un point d'accès WIFI, c'est le module esp8266 qui le réalise !
 
Pour avoir un nom simple, j'ai nommé cette centrale D17 (D pour DCC ou Dix balles et 17 pour 2017)
 
A la mise sous tension la centrale démarre en arrêt d'urgence (AU) et le booster est désactivé.
Les souris  affichent en permanence l'état d'AU fournit par la centrale.
Pour sortir du mode AU, il suffit simplement d'appuyer sur le bouton d'AU d'une souris (qui arrête alors de clignoter).
 
Si une des souris utilise l'adresse 1, alors la centrale pilote le booster en PWM pour contrôler UNE locomotive analogique. La tension n'est pas continue, mais avec des impulsions plus ou moins longues. Le fait que la tension soit toujours maximale (lors des impulsions) permet de bons ralentit et limite les pertes de captage comparé à l'analogique pure ou la tension varie entre 0 et 12V. Il est possible de limiter la largeur des impulsions si vous utilisez plus de 12V pour alimenter le booster. La fréquence des impulsions est de 20kHz afin d'être inaudible dans les moteurs.
 
Si aucune souris n'utilise l'adresse 1 alors la centrale pilote le booster en DCC pour contrôler jusqu'à 8 locomotives DCC en même temps (2 par souris). Il peut bien entendu y en avoir plus mais qui seront à l'arrêt. Les locomotives sont contrôlées en 28crans. Vous pouvez utiliser 126 crans si vous le souhaiter. Il est possible de jouer avec les 28 fonctions F0,F1-F28.
Il ne doit pas y avoir des locomotives DCC et analogique en même temps ! Si vous voulez quand même le faire, il faudra prévoir des zones de coupures. Il n'y a pas besoin de modifier quoi que ce soit au niveau électronique pour passer du DCC à l'analogique (et vice versa).
 
La centrale possède un bus de rétrosignalisation S88 pour les entrées. Cela est par exemple utile pour voir l'occupation des voies.
 
La centrale peut aussi gérer les accessoires via:
- des décodeurs d'accessoires DCC (basiques et étendus)
- ses 6 sorties directes 3.3V 25mA. (Si vous n'utiliser pas le bus S88, le bus SPI et le bus I2C)
- son bus SPI oû vous pouvez brancher 2 modules MAX7219 de 64 leds chacun soit 128 leds au total
- son bus I2C oû vous pouvez brancher 3 modules PCA9685 de 16 sorties chacun, soit 48 sorties au total. De plus, ces sorties peuvent être variable (PWM) ou piloter des servos.
 
Afin de discuter autour de D17, j'ai créé le fil suivant sur le forum de LocoRevue : http://forum.e-train.fr/viewtopic.php?f=3&t=84400
 
 
** News :
 
- 08 avril 2019:
    Correction d'un bug dans le protocole D17 wifi qui affecté les fonctions auxiliaires >= 10.
 
- 25 mars 2019:
    Ajout du support de CDM-Rail (il faut mettre USB_MODE à 5). L'USB de l'Arduino ne peut pas être utilisé, il faut utiliser un câble.
 
- 26 février 2019:
    Vous pouvez maintenant conduire vos locos à partir des cabines du projet mini-cab. (projet mini-cab mis à jour et configuré par défaut pour D17)
 
- 22 février 2019:
    Corrections de bugs (tx adresses longues, protocole desktop station, limitation pwm à 0,5-95%,100% car analog_write() du framework est bugée)
 
- 22 février 2019:
    Ajout des adresses longues 0-10239 (au lieu de 0-99) (centrale et souris mises à jour)
    Possibilité de connecter 8 souris wifi (au lieu de 4) (ce qui peut être utile pour les clubs) (le paramétrage par défaut est à 4)
    Passage de 2 locos max à 4 locos max par souris (pour être compatible avec les souris du programme de JM)
    Les infos des locos (sens, vitesse, fonctions) pour la mise à jour régulière en boucle sont maintenant stockés dans des "slots"
       d'un unique tableau commun à toutes les souris et à l'USB. Cela permet une meilleure intéraction entre les souris et protocoles USB.
    Ajout du protocole Desktop Station afin de contrôler D17 par le logiciel "Desktop Station" par USB (plus tard par wifi)
 
- 15 février 2019:
    Régénération des apk des souris avec les droits (wifi, internet, sd) et de nouvelles icones.
 
- 12 février 2019:
     RFO basic (de même que GRAU basic) ne sont plus disponible sur le Market Android (Google Play).
     Pour ceux qui ont RFO basic installé, pas de problème, tant que vous ne le désinstallez pas.
     Pour les nouveaux, il faudra installer les souris sous forme d'applications Android apk. (voir le chapitre sur les souris)
 
- 24 janvier 2019:
     Correction d'un bug qui n'envoyait que la valeur 0 aux décodeurs d'accessoires DCC
 
- 18 janvier 2018:
    JM propose une nouvelle souris sur PC (Windows, Linux, OS-X).
    Cette souris permet aussi de suivre les trains
    Il faut un code spécifique pour la centrale (pour l'instant)
    Plus d'infos sur le forum de Loco Revue rubrique Digital ...
 
- 31 décembre 2018:
    Création d'une souris WIFI potentiomètrique à faire soi-même avec un Wemos.
 
- 31 juillet 2018:
    La configuration des TCO ne se fait plus dans le code de la souris double, mais dans des fichiers dédiés ex:tco1.txt
    Merci a JM Dubois pour cette contribution qui va simplifier la réalisation des TCO !
 
- 10 avril mars 2018:
    - Mise a jour de la centrale avec les préambules de 16 "1" (ils n'y étaient pas dans la version du 23 mars)

- 23 mars 2018:
    -  Passage des préambules à 16 "1" sur les conseils de JM afin de respecter la norme NEM671
        (Il semblerait que ca fasse du bien a certains décodeurs récents) 
    - ajout de l'annulation aux boites de dialogue avec le bouton de retour sur les souris. (merci JM Dubois)
    - restauration des touches F0 au retour sur la page des locos sur la souris double. (merci JM Dubois)

- 9 mars 2018:
    Rajout du paramètre FCT_AUX_REPEAT afin d'indiquer si la centrale répète en permanence les ordres des fonctions auxiliaire ou si elle les envoie une seule fois.
    - Certains décodeurs ne sauvegardent pas l'état des fonctions auxiliaires entre les coupures donc c'est bien de répéter.
    - Certains sauvegardent l'état des fonctions, donc on peut s'en passer.
      De plus, sur les décodeurs ESU il ne faut pas envoyer en permanence les fonctions auxiliaires car cela réinitialise les sons d'où les PB rencontres !
      Merci à JM Dubois pour avoir identifié le problème.
 
- 8 mars 2018:
    - De base la centrale fonctionne en point d'accès WIFI.
      Grâce à JM Dubois, elle peut maintenant aussi fonctionner en mode station afin de se connecter à un autre point d'accès WIFI (comme votre box internet).
      Cela permet de ne pas mettre votre appareil Android sur le WIFI spécifique de D17 et pouvoir par exemple continuer de surfer sur Internet en //.  
 
- 28 février 2018:
    - Nouvelle souris simple qui communique dans les 2 sens avec la centrale (ainsi le voyant d'arrêt d'urgence est mis à jour en fonction de l'état de la centrale)
    - Ajout d'un paramètre pour désactiver le multitouch pour la souris double (pour les appareils qui ne le supporte pas use_multitouch=0).
 
- 27 février 2018:
     - Ajout d'une version light du protocole DCC++ afin de connecter D17 à RocRail. (Test avec RocRail OK).
     - Ajout de l'affichage des derniers appuies écrans sur la souris double pour debug JM (a activer avec dbg_touch = 1).
 
- 19 février 2018:
     - Ajout de l'affichage du courant du booster sur la souris double.
 
- 13 février 2018:
     - Ajout du bouton d'arrêt d'urgence et choix de sa polarité.
     - Possibilité de brider la centrale en analogique ou DCC avec 2 constantes dans le code de la centrale
     - Ajout d'un avertissement sur les souris avant de passer du mode analogique au mode DCC et inversement.
     - Ajout du choix de la commande des décodeurs d'accessoires en analogique (interdire, autoriser mais avec booster inactif, autoriser avec booster actif)
     - Mémorisation des entrées pour chaque souris afin de ne pas manquer les contacts fugitifs comme les ILS (très utile pour le mode script)
     - Limitation a une seule réponse suite à une demande de status par souris et par boucle (afin de ne pas surcharger le wifi)
     - Modification des boites de dialogues des souris pour ne plus avoir la partie décimale des chiffres.
 
- 9 février 2018:
     - Ajout de la rotation lente pour les servos branchés sur les PCA9685 de la centrale.
 
- 7 février 2018:
    - Ajout du mode 126 crans en DCC. Vous pouvez choisir entre le mode 28 crans ou 126 crans (28 crans par défaut)
    - Ajout d'un facteur pour diminuer la plage PWM en analogique si vous utilisez une alim > 12V
 
- 6 février 2018:
    - Ajout d'un mode script simple pour piloter automatiquement des séquences de jeu.
      (avec control des locos, accessoires (aiguillages, sorties, leds ...), avec attentes des entrées, avec tempo fixes et aléatoires  ...)
 
- 30 janvier 2018:
    - Ajout du TCO (en fait 5 TCOs) dans la souris double
    - Possibilité de commander les décodeurs d'accessoires (afin de gérer les aiguillages et toute autre sortie). (vous pourrez utiliser le D18 par ex)
    - Ajout d'un bus S88 pour avoir des entrées (96 entrées max).
    - Ajout d'un bus SPI pour mettre des modules MAX7219 pour commander des leds (128 leds max). (sans passer par un décodeur d'accessoires)
    - Ajout d'un bus I2C pour y connecter des modules PCA9685 pour commander des aiguillages (servos, bobines ou moteur) et avoir des sorties (PWM) (48max) (sans passer par un décodeur d'accessoires)
 
- 25 janvier 2018:
Le prototype avec TCO, bus S88, SPI, I2C fonctionne ! Il me reste à le peaufiner un peu et à écrire la documentation.
 
- 22 janvier 2018:
Ajout d'une souris double pour conduire 2 locos en même temps.
Le "multitouch" est activé, vous pouvez donc réellement utiliser les 2 potentiomètres en même temps
Un bouton UM permet de conduire les 2 locomotives avec un potentiomètre. 
 
- 19 janvier 2018:
Extension des fonctions à F0-F28
 
- 27 décembre 2017:
Rajout de la programmation des décodeurs
Possibilité de conduire avec l'accéléromètre (en penchant la tablette)
Extension des fonctions F0-F4 -> F0-F12
Extension des adresses 2-50 -> 2-99
La souris s'adapte automatiquement a la taille de l'écran (merci JM Dubois)
 
- 22 décembre 2017 :
Rajout du mode Analogique (La centrale peut passer du DCC en analogique sans modifier l'électronique)
Rajout (temporaire) de 6 sorties 3.3V (25mA max) contrôlées par les souris WIFI.
La solution est maintenant fiable. Je n'observe plus aucun plantage.

- 07 juillet 2017 : Mise en ligne
Ce qui fonctionne actuellement : commande de 4 locomotives simultanées avec 4 souris WIFI (en utilisant une tablette ou un téléphone Android par souris). 4 max car l'esp 8266 supporte 4 appareils max en mode point d'accès. Je n'ai pas assez de recul sur la fiabilité de la solution. D'ailleurs, je ne croyais pas que cela fonctionnerai car le code du wifi tourne lui aussi sur le même microcontrôleur et il peut interrompre mon code qui génère le signal DCC.
 

** Prochainement :
 
- Réduction et centrage automatique des TCO pour rentrer sur n'importe quel écran sans avoir la partie droite tronquée. (demande de JM)
- Possibilité de continuer à contrôler les locomotives avec l'accéléromètre lorsque l'on ne se trouve plus sur l'écran des locos. (demande de Charles)
- Ajout du BMVU
- Nouvelles souris pour conduites plus réalistes.
- Support de la desktop station aussi par WIFI
 
 
** Téléchargement :
 
- Documentation complète de la centrale : d17.pdfd17.pdf (2.5 Mo) (mise à jour le 31 juillet 2018) (avec la partie accessoires, TCO et scripts)
 
- Logiciel de la centrale D17 : centrale-d17.inocentrale-d17.ino (102.51 Ko) (mise à jour le 08 avril 2019)
 
- Souris Android (simple et double): souris_apk.zipsouris_apk.zip (988.44 Ko) (mise à jour le 22 février 2019)
     Le zip contient, les sources en basic,  les applications apk, et des fichiers d'exemple de tco
 
- Souris potentiomètrique WIFI: Souris_pot.inoSouris_pot.ino (12.55 Ko) (mise à jour le 31 décembre 2018)
 
- Programme pour réaliser un module S88 décrit dans la doc : module_s88.inomodule_s88.ino (7.19 Ko) (mise a jour le 30 janvier 2018)

PS : L'extension .txt est rajoutée aux noms des fichiers lors du téléchargement, renommez le fichier sans cette extension.
PS: Pour l'environnement Arduino, il faut mettre le fichier .ino dans un répertoire de même nom. (ex: centrale_d17/centrale_d17.ino)
 
Les fichiers sources sont aussi sous github: https://github.com/ullysse/d17 (afin de vous permettre de proposer des modifications) (mais github n'est pas à jour pour l'instant).
 
 
** La centrale :

La réalisation est facile car le module Wemos D1 mini et le booster sont disponible sur Internet (Amazon...). Il faudra juste souder 3 fils.

Au niveau logiciel, il faudra programmer le module Wemos. Pour cela, installez l'environnent Arduino et le support de l'esp8266 (instructions sur Internet) puis téléverser le programme « centrale_d17.ino ». Si vous le souhaitez, vous pouvez changer le nom du réseau wifi par défaut "D17-0001" et le mot de passe par défaut "ulysse31". Si la programmation vous dépasse, vous trouverez surement un "geek" qui se fera un plaisir de vous montrer comment faire car l'environnement Arduino est très rependu. Dans le pire des cas, vous pouvez m’envoyez votre Wemos par la poste avec une enveloppe de retour et je vous le programmerai (gratuitement bien entendu).
 
 
** Les souris Android :

Sur les souris Android, il faudra installer l'application RFO basic disponible sur le Market Android (gratuite). Cette application permet d'exécuter des programmes basic. En effet j'ai écrit le programme des souris en basic afin qu'il soit facilement compréhensible et modifiable. En effet rare sont les personnes qui auraient pu faire une modification si j'avais fait une application Android en Java. Sauvez le programme « rfo_souris.bas » dans votre souris Android (normalement dans rfo-basic/sources) puis chargez le avec le bouton LOAD du RFO basic, puis faites RUN pour l'exécuter. Il est possible de créer un lien sur le bureau Android pour lancer directement la souris.
 
Malheureusement RFO basic (de même que GRAU basic) ne sont plus disponibles sur le Market Android, il faut maintenant utilisez les apk. Les apk sont les applications Android. Il s'agit d'un fichier avec l'extension .apk et qui s'installent sur votre appareil Android. Normalement, on les trouve sur le market, mais il faut payer à google 100$ pour cela. Nous allons contourner cela et les installer manuellement.
 
Pour l'installation:
     - téléchargez et dé-zipper souris_apk.zip
     - branchez votre téléphone ou tablette via USB à un PC qui se voient alors comme une clef USB.
     - copier d17s1.apk (pour la souris simple) ou/et d17s2.apk (pour la souris double)n'importe où sur votre appareil Android.
     - avec le gestionaire de fichier de votre appareil Android, appuyez sur l'apk qui va alors s'installer. (il faut répondre oui au droit d'accés SD)
     Pour rajouter des tco ou scripts sur la souris double:
     - lors de l'installation, un répertoire d17s2 est créé, malheureusement non visible depuis le PC tant qu'il est vide, alors:
     - copier du PC sur l'appareil Android un tco, ex: tco1.txt
     - Avec le gestionnaire de fichier d'Android, copier ce fichier dans le répertoire d17s2/data
     - A ce moment, vous verrez le reperoire depuis Windows ce qui permet d'ajouter des fichiers et les modifier plus facilement.
     - Il est possible de modifier les fichiers tco et script directement depuis Android en utilisant un éditeur de texte Android
     Si vous n'avez pas d'éditeur Android ou de gestionnaire de fichier Android, vous en trouverez sur le market (gratuitement)
     comme "simple file manager" et "simple text editor"
 Si vous voulez modifier le programme en basic:
     - modifiez le .bas
     - utilisez le programme RFO2ANDROID https://sites.google.com/site/rfodesigner/ pour générer l'apk associé
     (il faut donner les droits, wifi, internet, SD)
     - mettre des fichiers de base dans data ne marche pas
     - le zip fournit contient déjà la structure des répertoire compatible avec l'outil
 
 
- Utilisation de la souris simple Android pour conduire les locomotives :
 
Souris 1 50 tablette
- Cliquez sur le bouton ADR pour changer l'adresse de la locomotive. La proposition par défaut est 0.0. Ne tenez pas compte de la partie décimale, c'est une bizarrerie du RFO basic. Saisissez 10 par exemple pour l'adresse 10.
- Si une des souris utilise l'adresse 1 alors la centrale génère un signal PWM pour conduire une loco analogique. Dans le cas contraire, elle génère un signal DCC pour conduire des loco numériques.
- Les adresse 2 à 99 sont utilisables pour le DCC
- Utilisez le potentiomètre pour accélérer ou freiner.
- Le bouton +/- pour permet de changer le sens.
- Le bouton AU permet un arrêt d'urgence de l'ensemble des locomotives.
- Les boutons des fonctions F0 à F28 changent l’état des fonctions auxiliaires. (F0 commande souvent les phares).
- Le bouton F> permet d'afficher F1-F10 ou F11-F20 ou F21-F28 (F0 est toujours disponible)
- Le bouton ACC permet de conduire la loco en penchant la tablette. Pour inverser l'effet de l'accéléromètre, appuyez sur le bouton de sens +/-
- Le bouton PRG permet de programmer les décodeurs. Attention, toutes les locos alimentées par le booster seront programmées ! N'en laisser donc qu'une !!
Afin d'éviter les erreurs, il est nécessaire de rentrer un code de programmation (qui est 1234 par défaut).
Ensuite l'adresse du CV est demandée, puis la valeur.
Par exemple le CV pour changer l'adresse de la loco est le numéro 1. La valeur est a choisir entre 2 et 99. Ne pas utiliser 0, ni 1 qui est utilise pour l'analogique sur D17.
- Les boutons o0 à à5 permettent de changer l'état des sorties OUT0-5 (3.3V 25mA) si elles n'ont pas été remplacées par le S88, I2C ou SPI.
- La souris communique maintenant dans les 2 sens avec la centrale ce qui permet au bouton d'AU de refléter l'état d'AU de la centrale.
 
 
- Utilisation de la souris double Android (Ecran des locos)  pour conduire les locomotives :
 
Souris double 50 tablette
 
La souris double s'utilise exactement comme la souris simple. Seuls les boutons adr et acc sont spécifiques à une locomotive.
Le programme utilise le "multitouch" ce qui permet de détecter 2 doigts et autorise à bouger les 2 potentiomètres simultanément.
 
Le nouveau bouton UM est utilisé pour envoyer les mêmes ordres de vitesse aux 2 locomotives. Avant d'activer l'UM, mettez les 2 locomotives dans le bon sens avec les boutons sens (+/-). Après activation de l'UM, le déplacement d'un potentiomètre, déplace l'autre potentiomètre et l'appuie sur un des bouton sens, inverse les 2 sens. Par soucis de simplicité accéléromètre et UM ne fonctionnent pas ensembles, mais si vous voulez faire de l'UM avec l'accéléromètre, activez simplement les 2 accéléromètres. En mode UM les locos doivent avoir à peu près les mêmes caractéristiques. L'UM n'a aucun sens en analogique car par nature toutes les locos alimentées bougent ensembles. Enfin notez qu'il est possible de programmer les décodeurs afin de leurs faire gérer l'UM. Dans ce cas, les 2 locomotives réagiront à l'adresse UM spécifiée ...
 
Le bouton TCO (Tableau de Control Optique) permet de passer à l'écran des TCOs
 
Les boutons des sorties ont disparus car vous pouvez contrôler les sorties et bien plus par le TCO.
 
Il faudra que je trouve quelque chose à mettre dans l'espace centrale comme par exemple un indicateur de vitesse rond ...
 
 
** Les souris potentiomètriques :
 
Dsou3l2  Dsou1 D6 1
 
Réalisation:
La souris potentiomètrique est une souris à faire soi-même. Comme la centrale, elle est à base d'une carte wemos D1 mini (contenant un esp8266).
Pour faire cette souris, il suffit de:
- une carte Wemos D1 mini (qu'il faudra programmer avec le programme souris_pot.ino)
- un potentiomètre pour régler la vitesse et le sens de la loco sélectionnée (+ un petit condensateur si le potentiomètre est de mauvaise qualité)
- un bouton poussoir afin de sélectionner une loco, jouer avec les fonctions auxiliaire F0-F28 (F0=FL=les phares), gérer l'arrêt d'urgence
- une "power bank USB 5V" afin de rendre le montage autonome en énergie. En utilisation, on branche la "power bank" sur le Wemos. En recharge on branche la "power bank" à un chargeur USB ou sur un PC
- un joli boitier ! Il faudra faire quelques trous ... SI vous ne pouvez pas voire la LED de la carte, vous pouvez en rajouter une sur le boitier.
- dans le futur, optionnellement, il sera possible de rajouter un petit écran LCD OLED (SSD1306) afin de visualiser la loco sélectionnée, le sens, la vitesse, l'arrêt d'urgence, les fonctions AUX activées
 
Configuration:
Vous pouvez changer les paramètres "utilisateur" suivant au début du programme de la souris:
const char* ssid     = "D17-0001"; // nom du réseau WIFI de la centrale D17 (D17-0001 par defaut)
const char* password = "ulysse31"; // mot de passe WIFI de la centrale D17 (ulysse31 par defaut)
const int   port     = 1234;       // port TCP de D17 (1234 par defaut)
const byte  allow_analog = 1;      // 0 ou 1. 1 autorise l'utilisation de l'adresse 1 (qui passe D17 en analogique)
const byte  read_au = 1;           // 0 ou 1. 1 lit l'arret d'urgence de la centrale. bien pour se synchroniser avec les autres souris mais demande un peu plus de traitement
const byte  inv_pot = 0;           // 0 ou 1. 1 pour inverser le sens du potentiomètre
 
Utilisation:
    - A la mise sous tension la souris se met dans l'état attente (>ATT)
      la LED est éteinte
     
    - Une pression sur le bouton poussoir (BP) la passe en mode de sélection d'adresse de locomotive (>SEL_LOCO)
      La LED s'allume et reste allumée
      L'adresse est initialement à 0
      Un appuie court (moins de 300ms) incrémente l'adresse de 1
      Un appuie moyen (entre 300ms et 3s) incrémente l'adresse de 10
     
      Ex: Si dans l'état ATT on appuie sur BP: MOY + MOY + COURT + COURT + COURT
      Au début de MOY, on passe en SEL_LOCO, la LED s'allume
      A la fin du 1er MOY l'adresse vaut 10, puis 20, puis 21, puis 22, puis 23
     
    - Si le bouton est relâché plus d'une seconde, l'adresse est validée et on passe en mode de recherche WIFI (>SEARCH)
      La LED émet de bref flashs (On 1/5)
      Si au bout de 30s la souris n'a pas pu se connecter à la centrale, elle repasse dans l'état ATT
     
    - Des que la souris arrive à se connecter à la centrale, elle passe en mode ON (>ON)
      - Le potentiomètre permet de choisir le sens ainsi que la vitesse (vitesse nulle au milieu)Il est conseiller de commencer potentiomètre au centre pour une vitesse nulle
      - Un appuie court sur BP change l'état de l'arrêt d'urgence
          En mode normal, la LED clignote lentement (1Hz)
          En Arrêt d'urgence, elle clignote vite (5Hz)
      - Un appuie moyen sur BP entre dans un mode pour jouer avec les fonction auxiliaires des décodeurs
          Le numéro de la fonction est initialement à 0.  F0=FL=les phares
          Un appuie court (moins de 300ms) incrémente le numéro de la fonction de 1
          Un appuie moyen (entre 300ms et 3s) incrémente le numéro de la fonction de 10
          La fonction est changée lorsque BP est relâché pendant 1s
          Les 29 fonctions F0-F28 sont supportées
          Ex pour F0 : MOY
          Ex pour F21: MOY + MOY + MOY + COURT
          D'accord, ce n'est pas super intuitif, mais cela permet d'essayer toutes les fonctions
          Pour rester simple, on utilisera souvent que COURT pour AU ou MOY pour F0, c'est a dire les phares
      - Un appuie long jusqu'à ce que le LED s'éteigne (ou 10s si vous n'avez pas de LED) déconnecte la souris de la centrale, éteint le WIFI et repasse en mode ATT
          Ne pas oublier de faire cette procédure en fin d'utilisation sinon la centrale ne libérera pas la connexion.
          une fois en état d'ATT, vous pouvez sélectionner une autre loco ...
 
 
** Ajout d'un bouton d'arrêt d'urgence sur la centrale :
 
Vous pouvez connecter un bouton d'arrêt d'urgence sur D5 en utilisant le montage suivant :
 
Au2
 
La résistance de 2200ohms sur le 3.3V fixe un état haut lorsque le circuit électrique est ouvert. La résistance de 1000ohms en série avec le bouton, fixe un état bas lorsque le circuit est fermé via le bouton. Cette dernière résistance évite les conflits lorsque la patte est utilisée en sortie pour générer le signal CLK pour les entrées S88 et les LEDs des MAX7219. Idem pour le signal OUT. Ne pas mettre cette résistance cour-circuitera la sortie à la masse lorsque le circuit est fermé ce qui la fera cramer ...
 
Pour activer la fonctionnalité d'arrêt d'urgence, vous devrez mettre dans le code de la centrale, la constante suivante à 1:
#define USER_USE_AU   1
Vous pouvez aussi choisir la polarité active avec:
#define USER_AU_LEVEL 0
Utilisez 0 pour un bouton normalement ouvert NO. (bouton qui ferme le circuit électrique lorsque l'on appuie dessus). Si vous utilisez plusieurs boutons, câblez les en parallèle.
Utilisez 1 pour un bouton normalement fermé NF. (bouton qui ouvre le circuit électrique lorsque l'on appuie dessus). Si vous utilisez plusieurs boutons, câblez les en série.
 
le bouton est uniquement utilisé pour déclencher l'arrêt d'urgence. la désactivation se fait avec les souris.
 
 
** Ajout de la mesure du courant du booster :
 
Vous pouvez mesurer le courant du booster avec l'entrée analogique A0 en utilisant le montage suivant :
 
Cur
 
La patte 8 du LMD18200T fournit une image du courant du booster 377uA/A. En gros cette patte donne 1mA pour 3A fournit. Vous pouvez souder un fil sur la patte 8 ou alors entrer en force un câble Dupont dans le trou métallisé sérigraphié "pin8 sense" qui se trouve derrière le condensateur.
L'entrée analogique du Weemos peut mesurer des tensions jusqu'à 3.3V. Dans le weemos, une résistance de 220K et une autre de 100K forment un pont diviseur afin d'abaisser la tension à 1V qui est le max que l'esp8266 peut mesurer). Pour être précis, nous devons utiliser toute la plage de mesure. Nous devons donc générer une tension de 3.3V pour le courant moyen max du booster qui est de 3A.
La résistance R1 de 3300 ohms transforme l'image du courant en tension. Pour 3A, l'image est de 1mA, soit 3.3V aux bornes de la résistance (U=RI=3300 * 0.0001=3.3).
Le couple R2/C1 moyenne cette tension sur un intervalle de 22ms (t=10 000*0.000 002 2) afin de s'affranchir des pics et signaux rectangulaires (DCC ou PWM).
 
Le convertisseur analogique numérique mesure cette tension et l'envoie aux souris qui demande l'état de la centrale.
Les souris doubles peuvent alors afficher la mesure sous forme de bargraphe (en % 0%=0A 100%=3A).
 
Screenshot 2018 02 19 02 12 32
 
 
** Rétrosignalisation (les entrées)
 
La centrale dispose d'un bus S88 pour les entrées. Vous pouvez connecter sur ce bus des modules S88 (de généralement 16 entrées).
Sur les entrées vous pouvez connecter des interrupteurs, bouton poussoirs, ILS, capteurs de courant. On utilise généralement les entrées pour détecter les trains.
 
Le schéma suivant montre comment réaliser un connecteur S88 au brochage standardisé.
 
d17_s88.png
 
Le nouveau standard S88-N (N pour Network=réseau) utilise des câbles réseaux et connecteurs RJ45, mais électriquement, rien ne change par rapport au S88 classique.
 
Vous pouvez vous fabriquer vos modules S88 avec des Arduino. La doc décrit comment en faire un. Le programme est disponible dans la section téléchargement de cette page.
 
 
** Pilotage des accessoires
 
Tout d'abord, notez que vous n'êtes pas obligé de piloter les accessoires (aiguillages, LEDs ...) par la D17. Vous pouvez par exemple déplacer vos aiguillages manuellement ou électriquement en appuyant sur des bouton poussoirs. Le seul cas ou le pilotage est obligatoire est si vous faite de l'automatisation.
 
Les accessoires (aiguillages, feux, lampes, servos ...) se contrôlent généralement à travers de décodeurs d'accessoires. Les commandes sont transmises par le signal DCC lui même.
Vous pouvez utiliser des décodeurs d'accessoires du commerce et le D18 décrit sur ce site (dans l'onglet D18). Vous pouvez utiliser autant de décodeurs que vous voulez !
 
d17_dec.png
 
En plus des décodeurs d'accessoires, D17 permet aussi de commander des accessoires directement à travers ses bus SPI et I2C.
 
Bus SPI + modules MAX7219 pour ajouter des LEDs sans passer par un décodeur d'accessoires
 
d17_max.png
 
Bus I2C + modules PCA9685 pour ajouter des sorties PWM/Servos sans passer par un décodeur d'accessoires
 
d17_pca.png
 
 
** TCO (sur les souris doubles) :
 
D17 propose un TCO pour commander et visualiser les accessoires. Le TCO permet également de visualiser l'état des entrées du bus S88.
 
Souris tco 50 tablette
 
Le bouton LOC permet de revenir à l'écran des locos
Les boutons TC1 à TC5 affichent un des 5 TCOs
Le bouton msg permet d'envoyer des messages à la centrale. Il est surtout utilisé à des fins de test.
 
Le TCO se compose de lignes, rectangles, ovales et texte qu'il vous faudra ajouter dans le programme en basic des souris.
Ces éléments peuvent changer de couleurs en fonctions des entrées, positions des aiguillages, variables "u"
En cliquant sur certains éléments, vous pouvez envoyer des commandes pour déplacer les aiguillages ou modifier les variables "u"
 
La centrale reçoit les demandes de modifications des aiguillages et variables "u".
Il faudra indiquer dans le programme en C de la centrale comment réagir à ces commandes
pour par exemple commander un aiguillage ou un feu sur un décodeur d'accessoires, allumer une LED par SPI sur un MAX, bouger un servo par I2C sur un PCA ...
 
Les entrées, la position des aiguillages et les variables "u" sont partagées entre toutes les tablettes. Une action sur un TCO se voit automatiquement sur un autre TCO !
 
 
** Automatismes :
 
Dans le code de la centrale vous pouvez créer des automatismes pour gérer par exemple la signalisation, des itinéraires ...
 
 
** Scripts :
 
Un mode script simple a été rajouté dans la souris double pour piloter automatiquement des séquences de jeu.
Un script est un fichier texte qui contient une liste de commande à exécuter séquentiellement.
Les commandes permettent de contrôler les locos, accessoires (aiguillages, sorties, leds ...), attendre sur des entrées, attendre avec tempo fixes et aléatoires  ...
 
Screenshot 2018 02 06 18 18 00
 
Exemple d'un script qui fait des A/R avec ma BB67400
(5s dans un sens, attente variable entre 5 et 20s, 5s dans l'autre sens, attente 3s, et on recommence tant que l'on arrête pas le script avec le bouton SCR) :
 
MSG test_bb67400 #affiche un message sur l'ecran
CMD a8s+v20f0+   #canal a (car 2 canaux par souris), adresse 8, sens +, vitesse 20%, phares allumés
tempo 5          #attend 5s
 
MSG stop
cmd a8s-v0f0-
TEMPOR 5 20      #tempo aléatoire entre 5 et 20s
 
MSG arr
cmd a8s-v20f0+
tempo 5
 
msg stop2
cmd a8s+v0
tempo 2
cmd f0-
tempo 3
 
loop              #recommencer au début du fichier
 
 
** Pilotage par des logiciels PC :
 
La grande force de D17 est de se passer de PC et être simple.
 
Néanmoins, il est possible d'utiliser des logiciels PC pour étendre l'utilisation de D17.
 
D17 est bien adapté pour une utilisation manuelle ou une automatisation légère.
Pour une automatisation plus lourde, il est possible d'utiliser un PC avec un bon logiciel comme RocRail.
 
D17 offre les protocoles et connexions suivant-e-s:
WIFI
    protocole D17
        souris Android, souris potentiomètrique
        logiciel SourisD17 de JM Dubois
        mini-cab
USB
    protocole DCC++ (en fait une version light et adaptée à RocRail) (mettre USB_MODE à 2)
        RocRail
    protocole DCC++ (en fait une version light et adaptée à CDM-Rail) (mettre USB_MODE à 5)
        CDM-Rail
    protocole DesktopStation (mettre USB_MODE à 3)
        DesktopStation
 
 
- logiciel RocRail:
 
Le logiciel RocRail peut être utilisé pour piloter D17 par USB en utilisant le protocole DCC++. (En fait D17 implémente une version light et adapté à RocRail).
Ce logiciel nécessite le cantonnement du réseau avec idéalement 2 détecteurs par canton (un en début et un en fin de canton).
Il propose un mode manuel, un mode semi-automatique ou l'on glisse une loco d'un canton sur un autre et un mode automatique avec lequel les horaires peuvent être utilisées.
 
Rocrail
 
Malheureusement la DLL de RocRail qui gère DCC++ joue avec le signal RTS ce qui reset le Wemos.
Il est possible de résoudre ce problème en utilisant un câble USB-Série (ex: FDTI 3.3V) à la place de l'USB du Wemos.
 
Wemos fdti
 
Une annexe dans la documentation traite de RocRail plus en détail.
 
Le logiciel CDM-Rail devrait aussi être utilisable dans le futur car l'auteur m'a dit qu'il supporterai le protocole DCC++ prochainement.
 
Je ne sais pas encore si je modifierai le logiciel Free-DCC 2017 pour supporter le protocole DCC++ et donc la centrale D17 ...
 
 
- logiciel Desktop CDM-Rail:
 
Le logiciel CDM-Rail peut être utilisé pour piloter D17 par USB en utilisant le protocole DCC++. (En fait D17 implémente une version light et adapté à CDM-Rail, mettre USB_MODE à 5).
CDM-Rail est très utile pour concevoir un réseau car il permet de dessiner le plan des voies en utilisant de vraies références de voies puis de simuler la circulation des trains. Une fois que vous êtes content, vous pouvez construire votre réseau puis le piloter manuellement avec des souris virtuelles ou automatiquement (mode RUN). Il est utilisé en exploitation par des particuliers et surtout des clubs. Son automatisation supporte des séquences denses basées sur des routes (appelées itinéraires dans CDM-Rail) et des événements (par exemple un train qui rentre en coulisse peut en faire partir un autre). La documentation est très complète et il y a de nombreux tutoriaux vidéos. Ce logiciel open source est développé par un passionné Français bien sympathique, raison de plus de l'utiliser ... 
 
Layout1 decor m
 
Cdm1
 
Malheureusement la DLL de communication de CDM-Rail qui gère DCC++ joue avec le signal RTS (ce qui reset le Wemos) et active le DTR (ce qui est incompatible avec le driver USB CHR341 du Wemos). Il est possible de résoudre ce problème en utilisant un câble USB-série (ex: FDTI 3.3V) à la place de l'USB du Wemos (comme pour RocRail) (testé par JM). Comme je ne je ne trouve plus mon câble, en attendant j'ai utilisé un Arduino UNO officiel (pour avoir le driver U2 qui supporte RTS), pour connecter CDM-Rail à D17, mais la manip est un peu compliquée ...
 
 
- logiciel Desktop Station:
 
Le logiciel Desktop Station permet de conduire les locos avec ses souris logicielles, commander les accessoires, voir l'état des capteurs sur le S88, propose un TCO et un mode script.
Il n'y a certes pas de nouvelles fonctionnalités par rapport à ce qui existe sous D17, mais il est bien fait, agréable a utiliser et intuitif.
Il tourne sur Windows et se connecte à D17 par USB (bientôt par WIFI aussi).
Contrairement à RocRail il ne joue pas avec la ligne DTR, nous pouvons donc utiliser directement la connexion USB de l'Arduino sans passer par un câble spécial.
Pour que cela fonctionne, il faudra utiliser le dernier programme Arduino pour la D17 et sélectionner le bon protocole: #define USB_MODE 3  // 3 protocole Desktop station
lien: https://desktopstation.net/play.html
 
Ds
 
Exemple de configuration pour se connecter à D17 (mettez votre port série) :
 
Ds conf
 
 
- logiciel mini-cab:
 
     Le projet mini-cab permet de conduire les locomotives à partir de cabines modélisée (voir onglet mini-cab sur ce site)
 
Cc 6500 capture2
 
 
- logiciel SourisD17 de JM Dubois:
 
SourisD17 est un logiciel de commande pour Windows, Linux et OS-X, il apporte la conduite simultanée de 4 trains et avec D17++, une extension de D17, le calibrage et la régulation automatique de la vitesse par zone, le Block Automatique Lumineux, etc.
 
Sourisd17 1
 
JM Dubois (alias BugKiller) m'a bien aidé pour le développement et mise au point de D17. Je tiens à le remercier !
Pour une utilisation basique de SourisD17, le code standard de la centrale d17 suffit. Pour utiliser les fonctionnalités avancées de SourisD17, il faut utiliser un code spécifique de la centrale disponible sur la page web de JM Dubois... 
 
 
** Compatibilité :
 
La centrale est compatible avec les décodeurs de locos DCC, les décodeurs d'accessoires DCC et les modules de rétrosignalisation S88.
La centrale n'est pas compatible avec tout ce qui est propriétaire comme les bus XpressNet, LocoNet ...
Elle ne supporte que ses propres souris.
Comme le montre le diagramme suivant, vous pouvez mixer des éléments du commerce, de mon cru ou d'autres projets ouverts.
 
D17 compatibilitee
 
 
** En savoir plus :
 
Cette page n'est qu'une présentation de la centrale. Pour en savoir plus merci de lire la documentation. Vous y trouverez mon e-mail si vous avez des questions.
Une petite communauté s'est formé autour de cette centrale sur le forum de loco-revue ou vous pouvez discuter: http://forum.e-train.fr/viewtopic.php?f=3&t=84400
 
PS: Une petite photo de votre réalisation fait toujours plaisir ...
test

Créer un site gratuit avec e-monsite - Signaler un contenu illicite sur ce site