Railuino-Théorie
Un peu de théorie
Avant de se lancer tête baissée dans montage, assemblage et commande de train, nous allons réviser quelques éléments fondamentaux.
La plupart des hobbyistes Marklin expérimentés n'aurons aucun problème avec ces notions.
Les autres trouverons des informations fort utiles...
A tout le moins, ces informations servirons également à faire le lien avec les exemples Railuino.
DCC, MM2, MFX
Derrière ces lettres bizarres se cache les différentes technologies utilisé pour la commande de train digitaux au fil du temps.
DCC
DCC ou Digital Command Control est un protocole conçu par les Américains et destiné aux trains à deux voies.
Le protocole DCC permet d'accéder à des fonctions nettement plus nombreuses que les décodeurs Märklin. Construire des décodeurs DCC nécessite l'usage d'un microcontrôleur.
Ce tutoriel ne s'interresse pas au protocol DCC.
Pour plus d'informations sur DCC, vous pouvez vous penchez sur le site de Benoit Bouchez.
Vous pouvez consulter le projet Railuino sur GoogleCode pour savoir si DCC est supporté (et comment).
MM2 (Motorola 2)
MM2 est le protocole de 2ième génération utilisé par les trains Marklin. Le protocol de première génération (simplement appelé Motorola) est maintenant considéré comme désuet.
Nos premiers exemples et tests Railuino sont réalisés avec du matériel Marklin Digital MM2.
Loco Marklin, protocol Motorola 2 (MM2), 3 rails
Le protocole MM2 à les caractéristiques suivantes:
- Les adresses sont statiques!
Signifiant qu'elle sont connue d'avance et fixée dans le matériel (voyez l'aiguillage ci-dessous et les dip switch de configuration d'adresse). - Les fonctions des modules digitaux de commande (les décodeurs) sont également limités.
Cela se résume en:- Une fonction de direction (Loco marche avant ou marche arrière).
- Quatre fonctions auxiliaires (ex: allumage des feux).
- La communication se fait dans un seul sens.
Les instructions sont envoyés de la centrale (ou CanDIY shield) vers le train/aiguillage. Le train ne renvoi aucune information. - Le contrôle d'erreur est géré en renvoyant une deuxième fois le message de commande.
Aiguillage Marklin, protocol Motorola 2 (MM2), Avec dip switch pour configurer l'adresse.
Ces caractéristiques fixe aussi les limites des compositions de réseau Marklin avec:
Caractéristiques | Limite |
Nbre de décodeurs | 80 |
Commande d'appareil de voie | 316 moteurs d'aiguille |
Nombre de vitesses | 14 ou 15 selon décodeur |
Fonctions spécifique décodeur |
1 commande par direction + 4 fonctions auxiliaires |
MFX
MFX est le successeur de Motoral 2. Ce protocole est appelé à le remplacer car il présente plusieurs avantages.
Pour commencer, le champs d'adressage à été étendu (pour supporter plus d'éléments intelligents sur le réseau.
Il supporte également la communication dans les deux sens... ce qui permet d'obtenir des informations depuis la Loco et autres appareils branchés sur le réseau.
Puisque la communication s'effectue dans les deux sens:
- La Loco reçoit une adresses dynamiquement lorsqu'elle est déposée sur les voies. Rien à voir avec l'adresse statique du protocole MM2... avec Railuino, il n'y a pas moyen de passer à côté.
- Le décodeurs intelligents sont capable d'énumérer leur CV et de renvoyer l'information vers un Mobile Station 2 ou CanDIY.
Les CV sont des sortes de "registres" dont les valeurs peuvent être lues et modifiées. Cela permet par exemple d'ajouter des fonctions comme le "son", la "montée d'un pantographe", etc.
Railuino et MM2
La bibliothèque Railuino, vous pouvez commander tous les éléments d'un réseau MM directement avec la bibliothèque Railuino.
Les adresses étant statiques (fixée et connue d'avance), l'utilisation de CanDIY + Railuino + Arduino est un vrai jeu d'enfant.
Vous n'aurez pas besoin d'un Mobile station 2 branché sur votre boitier de connexion 60113... le seul CanDIY shield suffira.
Utilisation Standard
Le fonctionnement générale se résume comme suit:
Votre PC servira à programmer votre Arduino, surveiller et déboguer votre programme.
Une fois votre programme prêt, votre Arduino sera complètement autonome, vous n'aurez plus besoin de connexion PC.
Utilisation étendue
Grâce à Arduino, vous pouvez également étendre les fonctionnalités d’interfaçage de votre Circuit Marklin.
Voici quelques idées, la seule vraie limite étant celle de votre imagination:
Dans l'exemple ci-dessus:
- Vous pouvez utiliser le convertisseur USB/Série de votre carte Arduino pour permettre à votre application PC de communiquer directement avec votre programme Arduino.
Vous pouvez ainsi écrire des logiciel répondant directement et exactement à votre besoin. C'est le cas, de Desktop Station de Yaasan - Utiliser une interface Bluetooth pour Arduino et écrire votre propre application de gestion sur Android. Voir le document "Slides from Maker Faire Hannover 2013" disponible sur le site du projet Railuino.
Dans l'exemple ci-dessus, nous établissons une liaison série matérielle entre Arduino (broches 0 et 1 pour RX/TX) et le port série matériel d'un Raspberry Pi.
Ce qui permet un dialogue structuré entre Arduino et Raspberry-Pi. Un Raspberry supportant un système d'exploitation de type Linux, il est possible d'écrire des applications de très hauts niveaux (nettement plus sophistiquées) déléguant la base besogne de communication (et contrôle primaire) Marklin à Arduino.
Ni disposons d'ailleurs de tutoriel mettant en oeuvre le port série matériel du Raspberry Pi dans le cadre d'une application GPS et d'une application GSM/GPRS
L'exemple ci-dessus met un oeuvre un bus I2C (supporté aussi bien sur Raspberry qu'Arduino) pour commander/coordonner plusieurs circuits Marklin... voire même supporter des périphériques I2C supplémentaires... comme des afficheurs, voire même des servo-moteurs donnant plus de vie à la scène.
L'adressage
L'adressage dans Railuino se fait assez simplement à partir de constantes... et du numéro d'identification de votre machine.
Par exemple, pour la machine identifiée par le numéro 78 et fonctionnant sur le réseau Motorola 2 (MM2) nous utiliserons la déclaration.
const word LOCO = ADDR_MM2 + 78;
Notez l'usage de ADDR_MM2 identifiant la méthode d'adressage et l'identification de la loco (78).
Autre exemple, pour l'aiguillage identifier sous le numéro 3.
const word TURN = ADDR_ACC_MM2 + 3;
Notez dans ce cas, que l'adresse Motorola 2 (MM2) commence par ADDR_ACC_MM2 (pour les accessoires).
Railuino et MFX
L'utilisation d'une loco MFX avec railuino nécessite une manipulation avec une centrale station... La raison découle de l'initialisation plus complexe d'une loco MFX.
Initialisation MFX sous le capot
Voici ce que nous avons appris sur l'initialisation des machines et addresses MFX (Merci à Goeffroy qui se reconnaîtra).
Les décodeurs MFX supportent différents protocoles... du plus évolué vers le moins évolué. C'est forcement le protocole le plus évolué qui s'initialise avec ses propres spécificités dynamiques. Le protocole MM2 est également actif mais en second plan (après l'activation MFX), ce détail à son importance si l'on veux comprendre les interactions avec CanDIY.
Apparemment, les boîtiers de connexion Marklin enverraient des micro-coupures sur le circuit. Ces micro-coupures passent totalement inaperçu sur les machines normales qui sont équipées de capacités pour assurer la stabilité de leur propre source d'alimentation. Par contre, ces micro-coupures sont attendues et détectées par les machines MFX. Si la machine n'a pas encore d'adresse, elle commence sa phase d'initialisation et initie un protocole d'échange avec un Mobile Station 2 qui gère le protocole d'assignation et attribue dynamiquement l'adresse à la Loco MFX.
En attribuant cette adresse MFX, votre loco dispose également d'une adresse MM2 à partir de laquelle il sera possible de commander la loco MFX.
Mobile Station 2 <-> MFX (adresse dynamique) <-> MM2 (adresse fixe) <-> CanDIY .
Comment faire?
Pour l'heure, et a cause du système d'adressage dynamique, il faut connecter une Mobile Station 2 sur le module de connexion et sniffer (écouter) les échanges de données entre la "Mobile Station" et la Loco pour découvrir l'adresse dynamique assignée au vol (par la Mobile Station).
Voici une marche à suivre:
- vous branchez votre CanDIY et le programme "Railuino > Misc. > Sniffer" et espionner les communications.
- Vous branchez ensuite votre Mobile Station 2 (assurez vous d'avoir un emplacement libre, dans l'espace d'adressage MM2, permettant l'enregistrement de votre Loco MFX).
- Vous déposez votre Loco MFX sur les rails et attendez la détection et initialisation de celle-ci.
- Votre Mobile Station doit avoir assigné une adresse dynamiquement à votre machine MFX, adresse que vous devriez pouvoir retrouver dans les trames de communication à l'aide du Sniffer.
- Débranchez votre Mobile Station, votre LOCO MFX dispose d'une adresse fixe jusqu'à sa prochaine reconfiguration (initié par une "Mobile Station 2").
Vous pouvez maintenant utiliser cette "adresse fixée" assignée dynamiquement avec CanDIY et vos programmes Arduino.
En effet, comme déjà précisé, l'adresse d'une machine MFX est réellement fixée dynamiquement par le module "Mobile Station 2"... rien à voir avec le protocole MM2 où l'identification est fixe et statique (dans la machine).
Durée de validité de l'adresse
Comme indiqué, la "Mobile Station 2" permet d'assigner une adresse que vous pouvez utiliser ensuite avec CanDIY.
Cette adresse est "permanente" mais reste d'une certaine façon temporaire.
Lorsque vous mettez votre circuit hors tension, la Loco MFX préserve cette adresse pendant un certain temps. Mais au bout d'un moment cette adresse n'est plus "valide".
Si vous rebrancher votre "Mobile Station 2" sur le circuit, cette dernière se souvient de l'adresse initialement donnée à la loco... et réactive la même adresse adresse pour la Loco.
Note:
Le temps de préservation de l'adresse est inconnu, notre Loco était restée hors tension pendant plus d'une semaine lorsque nous nous sommes aperçu de la perte d'adresse.
L'adressage
Par la suite, vous commandez votre Loco MFX en utilisant la constante ADDR_MFX et l'adresse connue.
L'adressage des machines MFX dans Railuino se fait aussi simplement qu'avec les décodeurs MM2. Il suffit d'utiliser la bonne constante... et du numéro d'identification de votre machine MFX.
Par exemple, pour la machine identifiée par le numéro 83 et fonctionnant sur le réseau MFX nous utiliserons la déclaration.
const word LOCO = ADDR_MFX + 83;
Notez l'usage de ADDR_MFX identifiant la méthode d'adressage et l'identification de la loco (83).
Meilleur support MFX
Joerg Pleumann (créateur de Railuino) à l'intention de se pencher sur une meilleure détection et assignation de l'identifiant MFX.
Yaasan, créateur de Desktop Station propose la manipulation suivante traduite ci-dessous.
Q9. Railuino ne fonctionne pas avec les motrices mfx.
Nous avons analysé le boitier de connexion digital marklin 60113. 60113 envoi beaucoup de paquets inconnus vers Arduino lorsqu'une loco mfx est placée sur les rails. Essayez les opérations suivantes en guise de solution temporaire. La loco MFX retiendra/maintiendra une configuration (some configuration) pour fonctionner avec une MS2.
- Faite fonctionner votre LocoMFX avec une Mobile Station 2 Marklin (MS2).
- Arrêtez votre locomotive MFX.
- Coupez toutes les fonctions.
- Pressez le bouton Stop sur la MS2.
- Eteignez votre MS2 et 60113.
- Essayez de nouveau avec Railuino.
Documentation réalisée par Meurisse D. pour MCHobby.be.
Source: Projet Railuino de Joerg Pleumann, CanDIY Shield de Watterott.
Traduction et documentation réalisées avec l'autorisation expresse de Joerg Pleumann et Stephan Watterott - Documentation and translation built with authorization of Joerg Pleumann and Stephan Watterott.
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.