LOCODUINO

Parlons Arduino => Le logiciel DCC++ => Discussion démarrée par: msport le décembre 26, 2016, 10:23:51 pm

Titre: JRMI avec un booster BaseStation DCC++
Posté par: msport le décembre 26, 2016, 10:23:51 pm
Qui aurait déjà utilisé l'application JRMI avec un booster DCC++ ? (la recherche de "JRMI" sur le forum ne renvoie que quelques résultats)
je viens de tenter l'expérience (DecoderPro) avec un succès limité à la mise sous tension et l'extinction de la voie. J'ai eu un démarrage involontaire d'une loco sur la voie principale. Liaison par un port USB du PC Windows.
Je n'ai pas câblé la voie de programmation mais la programmation est prévue par JRMI sur la voie principale.
J'ai tenté d'ajouter une loco (+Nouvelle Loco) et de "Lire le type depuis le décodeur" mais aucune réaction. J'ai le DCC_Uno.ino BaseStation non modifié dans le booster standard à MAX471 (qui avec la version VV de Dominique lit bien l'adresse de la loco, non testé sur place, je suis loin de mes bases).
Quelques idées pour me faire gagner du temps de recherche ? Merci d'avance.
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: patrick le décembre 27, 2016, 01:06:51 am
"Lire le type depuis le décodeur" mais aucune réaction.

J'ai une expérience limitée avec JMRI.

Lorsque tu ecris: aucune réaction, est-ce que tu obtiens un message d'erreur ou quelque chose?

En règle générale, lorsqu'on a du mal à communiquer avec un décodeur au moment de la programmation, on ajoute une résistance en série avec la loco/décodeur (120Ohm 2W). Peux-tu essayer cela?

Sinon, je ne peux pas trop parler pour JMRI. Je n'ai jamais eu de problème avec le DecoderPRO.

Patrick
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: CATPLUS le décembre 27, 2016, 07:47:44 am
Bonjour
Je vais t'aider dés que possible

En attendant
http://teamtrack.soforums.com/t1242-JMRI-1.htm?q=jmri

De plus je me serre d'un MEGA2560 comme interface (uniquement pour les entrées (24) et sorties (48)) et le Sprog 2 pour les tests
Cordialement

Titre: Re : Re : JRMI avec un booster BaseStation DCC++
Posté par: msport le décembre 27, 2016, 10:10:44 am
Lorsque tu ecris: aucune réaction, est-ce que tu obtiens un message d'erreur ou quelque chose?

C'est vraiment aucune réaction : message d'attente indéfiniment dans la barre inférieure. La loco ne frémit même pas.
Mais la communication est bien assurée puisque j'allume et éteint le signal DCC.

Merci pour vos réponses. Je n'ai pas de matériel sous la main, mais j'ai bien noté.

Je penserai également à regarder si le booster répond via la console série. Et également via un sniffer ce qui passe  sur la voie.
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: msport le janvier 02, 2017, 07:34:05 pm
J'ai donc tenté de passer les commandes depuis la console série :
tout va bien avec :
<1> mise sous tension
<0> mise hors tension
<t1 03 10 1> loco 03 en avant vitesse 10

par contre réponse r 123 123 1 -1 avec <R1 123 123> en recâblant (PMW/DIR/MAX471 de 3/10/A0 en 11/5/A1) pour passer en voie de programmation (il y a eu le petit frémissement bien connu à la première tentative mais sans suite)

j'aimerais aussi pouvoir réaffecter l'adresse de mes locos. Est ce que :
<w 03 1 08> sur la voie de programmation est correct pour passer l'adresse de la loco 03 à 08 ?
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: bobyAndCo le janvier 03, 2017, 09:38:45 am
Bonjour msport,

Effectivement, <w 03 1 08> est le bon code pour passer l'adresse de 3 en 8.

Pour ceux que ça intéresse, vous trouverez sur le lien  (Github de DCC++) https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation (https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation) tous les codes pour la programmation. Le code de la page SerialCommand.cpp de DCC++ est aussi intéressant à consulter car il est bien documenté (même si on maitrise peu l'anglais ou le C).

J'ai moi même un problème avec certains décodeurs et toutes les fonctions sur la voie de programmation sont indisponibles pour ces décodeurs alors que tout fonctionne parfaitement avec d'autres décodeurs. J'ai le message que tu reportes <R1 123 123> qui renvoie <r 123 123 1 -1> avec le -1 qui indique une erreur. Et cela est vrai également bien sûr pour <R2 123 123>,  <R3 123 123>, <Rn 123 123>...

Dominique a eu aussi un moment le problème mais je ne sais pas s'il a trouvé la solution.
Il serait intéressant si nous sommes plusieurs dans ce cas de faire des recoupements (marque du décodeur, modèle etc...) pour essayer de cerner le problème.

Dans tous les cas, avant de tout bousculer, il est vraisemblable que tu n'ais pas fait d'erreur et que le problème soit dans DCC++. Il faudrait aussi se reporter aux posts sur http://www.trainboard.com/ (http://www.trainboard.com/) pour ceux qui n'ont pas trop de problèmes avec l'anglais !


A suivre donc...

Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: msport le janvier 03, 2017, 10:00:53 pm
Bonsoir bobyAndCo,

résultat de mes tentatives :

d'abord la résistance de 120 ohms ne change rien, ni en mieux, ni en pire ...

ensuite le sniffer sur la voie de programmation ne voit rien passer pour : <w 03 1 08> editet pour cause, ce n'est pas la bonne syntaxe, <w 1 08 123 123> devrait aller !

par contre, pour <R1 123 123> il voit bien la question, mais j'imagine pas les réponses éventuelles puisqu'elles sont sous forme de courant et non de code, Dominique qui a écrit le sniffer pourra probablement décoder ...

Le décodeur est un Lenz (probablement un mini puisque dans le petit locotracteur V36).
J'avais également fait une tentative avec une loco numérisée avec un décodeur Lenz standard V2 avec les mêmes résultats.
Le programme du booster est le BaseStation V1.2.1+

Merci de vos aides.
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: bobyAndCo le janvier 04, 2017, 08:28:29 pm
Bonsoir msport,

Attention à la rédaction de tes messages adressés à DCC++. Tout d'abord, <w 03 1 08> est bien le bon message pour changer l'adresse d'une loco sur la voie principale.

/***** WRITE CONFIGURATION VARIABLE BYTE TO ENGINE DECODER ON MAIN OPERATIONS TRACK  ****/

    case 'w':      // <w CAB CV VALUE>
      /*
            writes, without any verification, a Configuration Variable to the decoder of an engine on the main operations track

            CAB:  the short (1-127) or long (128-10293) address of the engine decoder
            CV: the number of the Configuration Variable memory location in the decoder to write to (1-1024)
            VALUE: the value to be written to the Configuration Variable memory location (0-255)

            returns: NONE

Sur la voie de programmation le message est <W 1 08 123 123> (W en majuscule et non minuscule)

/***** WRITE CONFIGURATION VARIABLE BYTE TO ENGINE DECODER ON PROGRAMMING TRACK  ****/

    case 'W':      // <W CV VALUE CALLBACKNUM CALLBACKSUB>
      /*
            writes, and then verifies, a Configuration Variable to the decoder of an engine on the programming track

            CV: the number of the Configuration Variable memory location in the decoder to write to (1-1024)
            VALUE: the value to be written to the Configuration Variable memory location (0-255)
            CALLBACKNUM: an arbitrary integer (0-32767) that is ignored by the Base Station and is simply echoed back in the output - useful for external programs that call this function
            CALLBACKSUB: a second arbitrary integer (0-32767) that is ignored by the Base Station and is simply echoed back in the output - useful for external programs (e.g. DCC++ Interface) that call this function

            returns: <r CALLBACKNUM|CALLBACKSUB|CV Value)
            where VALUE is a number from 0-255 as read from the requested CV, or -1 if verificaiton read fails

Tu parles d'une resistance de 120 ohms mais je ne vois pas à quoi tu fais référence et il n'y a effectivement pas besoin de resistance. Par contre, je crois me souvenir qu'il faut que A0 (voie principale) et A1 (voie de programmation) soient alimentées (mesure du courant à partir du/des MAX471).

Normalement <w 03 1 08> doit fonctionner sur la voie principale même si ton décodeur ne réagit pas sur la vie de programmation.

Si tu as encore des soucis, donne nous ta config (UNO ou MEGA).

Bon courage.

Christophe
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: msport le janvier 04, 2017, 10:10:56 pm
Bonsoir à tous,
désolé pour mes messages "corrigés" tardivement ...

la résistance de 120 ohms était proposée dans la réponse de Patrick du 27/12.

ma bible est :
https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation
mais en fin de soirée, j'ai un peu de mal à lire. (j'ai rendez-vous chez l'ophtalmo vendredi)
et effectivement j'ai mélangé voie principale et voie de programmation. Merci de l'avoir pointé du doigt.

je m'y remets dès que possible. Merci de l'aide.

Mon booster est sur Uno + MAX 471 + LMD18200.

Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: bobyAndCo le janvier 05, 2017, 12:41:50 am
msport,

Vérifie bien tes câblages, surtout si tu changes pour passer de la voie de programmation à la voie principale. On a vite fait de se tromper et câble bien aussi A0 et A1 comme précisé dans mon post précédent.

A toutes fins utiles, voici le câblage pour ta config.

Bien à toi

Christophe

Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: msport le janvier 05, 2017, 10:53:38 pm
Merci Christophe pour le schéma, c'est bien celui que j'utilise (et que je revérifie à chaque fois). Et que je teste en faisant tourner la loco avec <t 1 37 10 1> (loco 37)

Ce soir je suis resté avec sur voie principale et ai retenté de modifier l'adresse de la loco 37 en 08 avec <w 37 1 08> sans résultat.
le sniffer a vu passer 5 paquets mais pas pour l'adresse 37 : il m'a affiché : 5@37EC [ avec <w 03 1 08> , c'est 5@3EC ]
pour les paquets vitesse, il affiche, par exemple 232@37>0 (237 paquets vitesse 0 sens 1 pour la loco 37)
Y a t il une question d'adresse courte et d'adresse longue et il faudrait compléter 37 ou 03 et 08 sous forme d'adresses longues ?
J'essaierai demain sur la voie de programmation.
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: bobyAndCo le janvier 05, 2017, 11:12:29 pm
msport,

Je ne crois pas que cela puisse être une question d'adresse courte ou longue. Tu peux essayer mais je n'y crois pas. Tu pilotes bien la traction, je suis étonné que tu ne puisses pas changer l'adresse sur la voie principale. Cela me fait beaucoup plus penser à une compatibilité de décodeur comme je te le disais au début de nos échanges. Peux-tu te procurer une autre loco avec un autre décodeur ESU par exemple et faire la même expérience ?

On va bien trouver !
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: Dominique le janvier 06, 2017, 09:41:35 am
Il faudrait justement identifier les décodeurs qui posent problème et regarder leur doc.

Ainsi que ceux qui fonctionnent et servent de référence.
Personellement les décodeurs Fleischmann ne me posent pas de problème, mais je n'ai pas encore testé toutes les fonctions de DCC++

A suivre ...
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: msport le janvier 06, 2017, 11:24:00 pm
Pour l'instant, je n'ai testé qu'avec des Lenz.
J'ai aussi un LAISDCC (non monté) A voir sur mon mini banc.
et peut-être d'autres (à découvrir quand ils me répondront avec leur CV 8)

Mais Dominique, pourquoi le moniteur 1.0.b3 voit passer une adresse 37EC alors qu'on envoie une interrogation à l'adresse 37 ?
Petit souci de décodage du moniteur ou erreur du booster ?
Autre question : est-ce DCC_UnoVV.ino a un autre algorithme de détection de courant que le DCC_Uno.ino original ?

Faut-il ajouter 127 à une adresse courte pour avoir une adresse longue ? ou c'est deux codes sans rapport ?
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: msport le janvier 15, 2017, 11:57:20 am
Bonjour,

finalement, j'ai monté un petit banc avec un moteur 5V de récupération d'un lecteur de DVD pour éliminer autant que possible les faux contacts. J'ai utilisé un booster avec DCC_Uno.ino et un motor shield à L298 sur un arduino Uno (ça simplifie drôlement le câblage en particulier si on alimente en 12V depuis le shield).
J'ai pu lire et programmer sur la voie de programmation. Par contre je n'ai rien pu faire sur la voie principale en dehors de faire tourner le moteur (donc pas lire le CV1, mais ça ne figure pas dans la bible).
J'ai utilisé des décodeurs LAISDCC et des LENZ V2.
Ma conclusion : se méfier des faux contacts et des filtres divers (alimentation des voies et sur les locos)
A suivre quand j'aurais maitrisé un peu mieux l'utilisation des divers CV et programmé les locos.

Merci Christophe pour tes encouragements.
Titre: Re : Re : JRMI avec un booster BaseStation DCC++
Posté par: Dominique le janvier 15, 2017, 02:38:17 pm
Bonjour msport,

Bonjour,
J'ai pu lire et programmer sur la voie de programmation. Par contre je n'ai rien pu faire sur la voie principale en dehors de faire tourner le moteur (donc pas lire le CV1, mais ça ne figure pas dans la bible).
J'ai utilisé des décodeurs LAISDCC et des LENZ V2.
Ma conclusion : se méfier des faux contacts et des filtres divers (alimentation des voies et sur les locos)
A suivre quand j'aurais maitrisé un peu mieux l'utilisation des divers CV et programmé les locos.

Tout d'abord un rappel des possibilités de DCC++ BaseStation (de base) :

Donc ce que tu expliques est normal sur la voie de programmation et, sur la voie principale, tu devrais pouvoir programmer certains CV avec la commande "w" qui intègre l'adresse DCC du décodeur .

Maintenant, ce qui n'est pas expliqué dans DCC++, que nous cherchons à documenter (lentement mais surement), c'est pourquoi certains décodeurs ne satisfont pas ces principes.

Personnellement j'en ai un (livré avec un ABJ Renault, dont je n'ai pas encore regardé la marque et le type) qui va me servir à rechercher la réponse...

Cela dit, il me parait normal  de ne pas pouvoir programmer le CV1 (l'adresse courte en DCC) ainsi que d'autres CV "stratégiques" sur la voie principale. Mais ceci demande plus d'éclaircissement.
.
Malheureusement tous les décodeurs ne se ressemblent pas à 100% et il faut lire leur documentation au minimum. Nous espérons pouvoir lister les cas intéressants à connaitre.

Amicalement
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: msport le janvier 20, 2017, 09:57:27 pm
Merci Dominique pour cette synthèse. J'avoue que j'ai été perturbé par ton programme DCC_UnoVV qui lit d'entrée l'adresse, le CV1, de la loco présente sur la voie principale ...
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: Dominique le janvier 20, 2017, 10:22:33 pm
J'irai même jusqu'à dire que mon algo de recherche d'adresse DCC est plus complet que ça :

- lecture du CV29, bit 5
- si bit 5 == 1 alors lecture de l'adresse longue en CV17 & 18
- sinon lecture de l'adresse courte en CV1


///////////////////////////////////////////////////////////////////////
// RECHERCHE ADRESSE DCC DE LA LOCO
///////////////////////////////////////////////////////////////////////

int trouveAdresseDCC() {
  int  areponse = -1;
  SerialCommand::getCV29();
  areponse = mainRegs.valeurCV;
  if ((areponse != -1) && (bitRead(areponse, 5))) {
    // adresse longue : lire CV#17 et CV#18
    SerialCommand::getCV18();
    areponse = mainRegs.valeurCV;
    if (areponse != -1) {
      SerialCommand::getCV17();
      if (mainRegs.valeurCV != -1) {
        areponse = areponse + ((mainRegs.valeurCV - 192)<<8);
      }
    }
  } else {
    // adresse courte : lire CV#1
    SerialCommand::getCV1();
    areponse = mainRegs.valeurCV;
  }
  return(areponse);
}
Titre: Re : JRMI avec un booster BaseStation DCC++
Posté par: Erik84750 le février 06, 2017, 11:08:56 am
Bonjour,
j'ai, avec succes, installé un base station et controller avec Arduino Uno R3, un motorshield, un décodeur LaisDCC sur un locomotive, et JMRI DecoderPro et PanelPro software. Tout encore en état de test; mais pour une bonne explication de DCC++ et son installation avec Arduino Uno ou Mega et le JMRI interface (en anglais): http://www.clubncaldes.com/2016/02/build-your-own-dcc-command-station-for-8.html

Il faut que je note que pour avoir de bonnes explications sur ce sujet il est quasi nécessaire de s'adresses en anglais.

Pour LaisDCC il est imortant de télécharger les documentations du site; ce décodeur fonctionne bien si l'on prend le type avec courant minimal de 1A. Ce décodeur est un clone de TCS.

Titre: Re : Re : JRMI avec un booster BaseStation DCC++
Posté par: Dominique le février 06, 2017, 11:39:00 am
Bonjour,
j'ai, avec succes, installé un base station et controller avec Arduino Uno R3, un motorshield, un décodeur LaisDCC sur un locomotive, et JMRI DecoderPro et PanelPro software. Tout encore en état de test; mais pour une bonne explication de DCC++ et son installation avec Arduino Uno ou Mega et le JMRI interface (en anglais): http://www.clubncaldes.com/2016/02/build-your-own-dcc-command-station-for-8.html

Il faut que je note que pour avoir de bonnes explications sur ce sujet il est quasi nécessaire de s'adresses en anglais.

Pour LaisDCC il est imortant de télécharger les documentations du site; ce décodeur fonctionne bien si l'on prend le type avec courant minimal de 1A. Ce décodeur est un clone de TCS.

Bravo pour avoir réussi à faire fonctionner DCC++ avec JMRI.

Merci aussi pour ce site que j'ai regardé et qui ne me semble pas apporter plus d'informations que les articles que nous avons publiés (http://www.locoduino.org/spip.php?article182 (http://www.locoduino.org/spip.php?article182), http://www.locoduino.org/spip.php?article185 (http://www.locoduino.org/spip.php?article185), http://www.locoduino.org/spip.php?article187 (http://www.locoduino.org/spip.php?article187)), hormis l'interface Loconet et une version spécifique de DCC++ pour Loconet qui peut intéresser effectivement des modélistes.

Oui la connaissance de la langue anglaise n'est pas inutile notamment si vous voulez suivre le forum de Trainboard (http://www.trainboard.com/highball/index.php?forums/dcc.177/ (http://www.trainboard.com/highball/index.php?forums/dcc.177/)) qui est consacré à DCC++.

Pour les pures francophones, nous essayons de mettre à disposition le maximum d'informations utiles en français sur Locoduino. Cela n'exclut pas que vous puissiez demander des compléments sur les sujets qui vous sont nécessaires dans votre projet. Mais le rédacteur le mieux placé pour fournir l'information est toujours celui qui a réalisé et dispose de l'expérience.

Par conséquent, je vous inviterai à décrire votre expérience  personnelle, notamment ce qui ne vous paraît pas décrit sur Locoduino.
D'avance merci  :D