Railuino-MFX-Loco

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Intro

Nous allons nous faire nos premiers tests de contrôle de locomotive MFX.

Le plus simple c'est de commander la fonction d'éclairage... cela permet de s'assurer que:

  1. La communication est correcte pour Arduino + CanDIY + boitier 60113 + Rail + Loco MFX
  2. Que l'adresse de la loco est correctement assignée par la Mobile Station 2
  3. Que l'adresse de la loco est correcte.
  4. Qu'une fonction primaire soit accessible... ne restera plus qu'à se lancer dans les autres exemples.

Montage

Choisissez votre Loco MFX, nous avons opté pour cette jolie loco MFX.

Materiel-Marklin-Loco-MFX.jpg

Rassemblez votre matériel et faites vos branchements.

Railuino-Brancher-MFX-02.jpg

Utilisez ensuite votre Mobile Station 2 pour fixer l'adresse de la Loco MFX.

Materiel-Marklin-MS2.jpg

Cette loco dispose maintenant de l'adresse 5 que nous pouvons utiliser.

Vous pouvez maintenant débrancher votre Mobile Station 2, nous n'en aurons plus besoin.

Branchez votre Arduino sur votre PC et démarrez l'environnement Arduino IDE (assurez vous d'avoir installé la bibliothèque Railuino).

Assurez-vous que votre boitier de connexion 60133 est bien sous tension.

Et c'est parti!!!

Précision sur les exigences matérielles

Sept. 2018 : Desktop Station à bien évolué depuis l'écriture de ce tutoriel en 2014. Il est donc important de nuancer les exigences matérielles.

Il n'est pas indispensable d'utiliser une Mobile Station. En effet, dans le cadre d'une installation utilisant "Desktop Station" de Yaasan + shield CANBus-DIY + boîtier Märklin 60113, il est possible de contrôler son réseau Marklin sans la présence d'un Mobile Station.

En effet, Thierry D. (qui se reconnaîtra), pilote son réseau avec "Desktop Station" de Yaasan, un Arduino Uno + shield CANBus-DIY et un boîtier Märklin 60113. Il n'a qu'une seule loco MFX, la 2302 de Van Biervliet (Loksound ESU V4). Elle a été reconnue par Desktop Station en effectuant quelques manipulations (lecture des CV en DCC, la loco étant seule sur le réseau) ; le n° UIC du décodeur est alors apparu en bas à gauche de l'écran Desktop Station. Il a suffi de l'entrer dans l'éditeur de locos et à présent la 2302 est instantanément reconnue au démarrage, même après plusieurs semaines hors tension.

Voilà, en espérant que ces commentaires soient utiles et qu'ils pourront aider la communauté.

Commander l'eclairage

Ce qu'il y a de bien, c'est que la fonction d'éclairage est universel et porte toujours le numéro 0. Bien pratique pour faire une vérification.

Dans votre environnement Arduino, ouvrez l'exemple Fichier > Exemples > Railuino > Controller > Headlight

{{#Widget:Iframe |url=https://www.youtube.com/embed/xILfx-hVcC0 |width=420 |height=315 |border=0 }}

Nous avons repris l'exemple Railuino, ci-dessous, en ajoutant des commentaires en Français (pour vous aider).

Notez le type d'adressage MFX identifié à l'aide de la constante ADDR_MFX et l'adresse fixée dynamiquement par la Mobile Station (soit 5).

/*********************************************************************
 * Railuino - Hackez votre Märklin
 *
 * Copyright (C) 2012 Joerg Pleumann
 *    https://code.google.com/p/railuino/
 *
 * Cet exemple est un logiciel libre; Vous pouvez le redistribuer et/ou 
 * le modifier sous les termes de licence "Creative Commons Zero 
 * version 1.0", tel que publié par par Creative Commons Organisation.
 * Cela place de fichier dans le domaine publique.
 *
 * Cet exemple est distribué dans l'espoir qu'il soit utile,
 * mais SANS AUCUNE GARANTIE; sans même la garantie implicite de 
 * COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. 
 * Voyez le fichier LICENCE pour plus de détails.
 *
 * ----------------------------------------------------------------
 * Tutoriel Railuino disponible en Français sur 
 *    http://mchobby.be/wiki/index.php?title=Railuino
 *
 * Traduction par MCHobby.be crédit sous CC-SA-BY pour l'effort de traduction
 * Translation by MCHobby.be credit under CC-SA-BY for translation effort
 * 
 */
 
#include <Railuino.h>

// Identification de la Locomotive en utilisant l'adressage MFX
// et en ajoutant le numéro d'identification de la machine (5 dans ce cas) 
const word    LOCO  = ADDR_MFX + 5;
const word    TIME  = 2000; // déclaration d'un délai de 2 secondes 
const boolean DEBUG = true; // activer le débogage

// Créer un contrôleur Railuino
TrackController ctrl(0xdf24, DEBUG);

void setup() {
  // établir une connexion avec le moniteur série d'Arduino IDE
  Serial.begin(115200);
  // Attendre l'établissement de la connexion
  while (!Serial);

  // Démarrer le contrôleur
  ctrl.begin();

  Serial.println("Mise sous tension - Power on");
  ctrl.setPower(true);
}

void loop() {
  byte b;
  
  Serial.println("Allumer - Lights on");
  ctrl.setLocoFunction(LOCO, 0, 1); // mettre la fonction 0 a la valeur 1

  // Interrogation de la fonction 0 de la Loco (si compatible)
  if (ctrl.getLocoFunction(LOCO, 0, &b)) {
    Serial.print("(Les lumieres sont ");
    Serial.println(b ? "allumees)" : "eteintes)");
  }
  
  delay(TIME); // attentre
  
  Serial.println("Eteindre - Lights off"); 
  ctrl.setLocoFunction(LOCO, 0, 0);  // mettre la fonction 0 a la valeur 0

  // Interrogation de la fonction 0 de la Loco (si compatible)
  if (ctrl.getLocoFunction(LOCO, 0, &b)) {
    Serial.print("(Les lumieres sont ");
    Serial.println(b ? "allumees)" : "eteintes)");
  }
  
  delay(TIME); // attendre
}

Le commandes standards

Le code permettant de commander la direction de marche et vitesse sont identiques pour une loco MFX et une Loco MM2.

Pas besoin de s'étendre sur ce point puisqu'il à déjà été abordé dans la section MM2. Pensez seulement à utiliser la constante ADDR_MFX au lieu de ADDR_MM2.

Commander le son

Avant de se lancer dans des fonctions plus avancées, prenons juste le temps de profiter d'une fonction MFX la plus spectaculaire... celle permettant de faire siffler le train (comme en rêve tous les enfants).

La fonction son porte le numéro 3 sur cette loco (nous y reviendrons plus tard). Ne reste plus qu'a l'activer

Dans votre environnement Arduino, ouvrez l'exemple Fichier > Exemples > Railuino > Controller > Headlight

Et modifiez le code suivant:

ctrl.setLocoFunction(LOCO, 0, 1); // mettre la fonction 0 a la valeur 1 

pour appeler la fonction 3... celle du son

ctrl.setLocoFunction(LOCO, 3, 1); // mettre la fonction 3 (son) a la valeur 1 

Note: attention, il faut également modifier la ligne plaçant la valeur de la fonction à 0... sinon le train siffle en continu ;-)

{{#Widget:Iframe |url=https://www.youtube.com/embed/N7MScRbFkL8 |width=420 |height=315 |border=0 }}

Nous avons repris l'exemple Railuino, ci-dessous, en ajoutant des commentaires en Français (pour vous aider).

Notez le type d'adressage MFX identifié à l'aide de la constante ADDR_MFX et l'adresse fixée dynamiquement par la Mobile Station (soit 5).

/*********************************************************************
 * Railuino - Hackez votre Märklin
 *
 * Copyright (C) 2012 Joerg Pleumann
 *    https://code.google.com/p/railuino/
 *
 * Cet exemple est un logiciel libre; Vous pouvez le redistribuer et/ou 
 * le modifier sous les termes de licence "Creative Commons Zero 
 * version 1.0", tel que publié par par Creative Commons Organisation.
 * Cela place de fichier dans le domaine publique.
 *
 * Cet exemple est distribué dans l'espoir qu'il soit utile,
 * mais SANS AUCUNE GARANTIE; sans même la garantie implicite de 
 * COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. 
 * Voyez le fichier LICENCE pour plus de détails.
 *
 * ----------------------------------------------------------------
 * Tutoriel Railuino disponible en Français sur 
 *    http://mchobby.be/wiki/index.php?title=Railuino
 *
 * Traduction par MCHobby.be crédit sous CC-SA-BY pour l'effort de traduction
 * Translation by MCHobby.be credit under CC-SA-BY for translation effort
 * 
 */
 
#include <Railuino.h>

// Identification de la Locomotive en utilisant l'adressage MFX
// et en ajoutant le numéro d'identification de la machine (5 dans ce cas) 
const word    LOCO  = ADDR_MFX + 5;
const word    TIME  = 2000; // déclaration d'un délai de 2 secondes 
const boolean DEBUG = true; // activer le débogage

// Créer un contrôleur Railuino
TrackController ctrl(0xdf24, DEBUG);

void setup() {
  // établir une connexion avec le moniteur série d'Arduino IDE
  Serial.begin(115200);
  // Attendre l'établissement de la connexion
  while (!Serial);

  // Démarrer le contrôleur
  ctrl.begin();

  Serial.println("Mise sous tension - Power on");
  ctrl.setPower(true);
}

void loop() {
  byte b;
  
  Serial.println("Faire siffler - fonction 3");
  ctrl.setLocoFunction(LOCO, 3, 1); // mettre la fonction 3 a la valeur 1

  // Interrogation de la fonction 3 de la Loco (si compatible)
  if (ctrl.getLocoFunction(LOCO, 3, &b)) {
    Serial.print("(La loco siffle t elle? ");
    Serial.println(b ? "OUI)" : "non)");
  }
  
  delay(TIME); // attendre
  
  Serial.println("Arreter de siffler - fonction 3"); 
  ctrl.setLocoFunction(LOCO, 3, 0);  // mettre la fonction 3 a la valeur 0

  // Interrogation de la fonction 3 de la Loco (si compatible)
  if (ctrl.getLocoFunction(LOCO, 3, &b)) {
    Serial.print("(La loco siffle t elle encore? ");
    Serial.println(b ? "oui)" : "non)");
  }
  
  delay(TIME); // attendre
}

Maintenant, si l'on regarde les messages envoyé vers la console série d'Arduino, vous pouvez constater qu'il y a une communication bidirectionnelle entre la Loco MFX et le shield CanDIY.

Il est possible de lire d'interroger la loco MFX pour lire l'état des CV (registre)

==> df24   1b 5 00 00 00 00 11
Mise sous tension - Power on
==> df24   00 7 00 00 00 00 09 00 0d
<== 3b77 R 00 7 00 00 00 00 09 00 0d
==> df24   00 6 00 00 00 00 08 07
<== 3b77 R 00 6 00 00 00 00 08 07
==> df24   00 5 00 00 00 00 01
<== 3b77 R 00 5 00 00 00 00 01
Faire siffler - fonction 3
==> df24   06 6 00 00 40 05 03 01
<== 3b77 R 06 6 00 00 40 05 03 01
==> df24   06 5 00 00 40 05 03
<== 3b77 R 06 6 00 00 40 05 03 01
(La loco siffle t elle? OUI)
Arreter de siffler - fonction 3
==> df24   06 6 00 00 40 05 03 00
<== 3b77 R 06 6 00 00 40 05 03 00
==> df24   06 5 00 00 40 05 03
<== 3b77 R 06 6 00 00 40 05 03 00
(La loco siffle t elle encore? non)
Faire siffler - fonction 3
==> df24   06 6 00 00 40 05 03 01
<== 3b77 R 06 6 00 00 40 05 03 01
==> df24   06 5 00 00 40 05 03
<== 3b77 R 06 6 00 00 40 05 03 01
(La loco siffle t elle? OUI)
...

Les fonctions

Les locomotives MFX supportent 16 fonctions, fonctions accessibles depuis la Mobile Station 2.

Hormis la fonction 0 dédiée à l'éclairage, les autres fonctions peuvent varier d'une machine à l'autre (d'après ce que j'ai compris).

Si l'on se penche sur la "Mobile Station 2", nous pouvons voir les 8 premières fonctions (dont la 3ieme correspondant à une fonction sonore). Les 8 fonctions suivantes étant accessibles par l'intermédiaire de la touche "Shift".

Marklin-MobileStation2-Fonction.jpg

Nous pouvons clairement voir en position 3 la fonction sonore.

Si vous voulez tester les fonctions, vous pouvez simplement modifier l'exemple HeadLight en modifiant les lignes setLocoFunction

ctrl.setLocoFunction(LOCO, 3, 1);

Où:

  • Le premier paramètre est l'identification de la locomotive,
  • Le deuxième paramètre correspond à la fonction (ici la fonction N° 3),
  • Le dernier paramètre l'activation/désactivation (1 ou 0).

Les CV

Un CV est une sorte de registre qui maintient la valeur d'une caractéristique (comme accélération, décélération, ...)

Nous allons maintenant utilisé l'exemple CV pour lire les CV de la locomotive MFX.

Démarrez votre Arduino IDE et ouvrez l'exemple Fichier > Exemples > Railuino > Controller > CV.

Indiquez l'adresse de votre loco dans la ligne

const word    LOCO  = ADDR_MFX + 5;


Téléversez le programme sur votre Arduino et ouvrez le moniteur série (configuré sur 115200 bauds).

Vous obtenez alors la lecture des différents CV

Railuino-MFX-CV-READ.jpg

==> df24   1b 5 00 00 00 00 11
Power on
==> df24   00 7 00 00 00 00 09 00 0d
<== 3b77 R 00 7 00 00 00 00 09 00 0d
==> df24   00 6 00 00 00 00 08 07
<== 3b77 R 00 6 00 00 00 00 08 07
==> df24   00 5 00 00 00 00 01
<== 3b77 R 00 5 00 00 00 00 01
==> df24   07 7 00 00 40 05 00 01 01
<== 0300 R 07 7 00 00 40 05 00 01 14
Register 1 - Address: 20
==> df24   07 7 00 00 40 05 00 02 01
<== 0300 R 07 7 00 00 40 05 00 02 16
Register 2 - Min. Voltage: 22
==> df24   07 7 00 00 40 05 00 03 01
<== 0300 R 07 7 00 00 40 05 00 03 18
Register 3 - Accel. time: 24
==> df24   07 7 00 00 40 05 00 04 01
<== 0300 R 07 7 00 00 40 05 00 04 17
Register 4 - Decel. time: 23
==> df24   07 7 00 00 40 05 00 05 01
<== 0300 R 07 7 00 00 40 05 00 05 15
Register 5 - Max. speed: 21
==> df24   07 7 00 00 40 05 00 06 01
<== 0300 R 07 7 00 00 40 05 00 06 1a
Register 6 - Avg. speed: 26
==> df24   07 7 00 00 40 05 00 07 01
<== 0300 R 07 7 00 00 40 05 00 07 19
Register 7 - Version: 25
==> df24   07 7 00 00 40 05 00 08 01
<== 0300 R 07 7 00 00 40 05 00 08 10
Register 8 - Manufacturer: 16

Pour terminer

Voila qui termine l'introduction à Railuino avec les machines MFX.

Vous trouverez de nombreux autres exemples dans la bibliothèque Railuino (voir le menu Fichier > Exemples > 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.