LOCODUINO

Parlons Arduino => Bibliothèques => Discussion démarrée par: AmadeusHF le mars 14, 2021, 12:02:37 pm

Titre: DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 14, 2021, 12:02:37 pm
Bonjour à tous

Je vous propose ci-dessous deux bibliothèques permettant de réaliser des montages notamment autour du DCC.

Pourquoi de nouvelles bibliothèques diront certains ?

Tranchons dans le vif une fois pour toute quant à cette question :
a) C'est un loisir, moi ça m'amusait de le faire, alors je l'ai fait et c'est ce qui compte le plus !
b) J'ai considéré que les bibliothèques existantes, issues de DCC++ de Gregg E Berman avait quelques lacunes, et j'ai souhaité proposer une approche beaucoup plus structurée et flexible.

Tout ceci n'enlève rien au travail de Gregg ni, plus encore, à celui de Thierry ici présent : j'ai juste une approche différente, chacun choisira la voie qui lui convient le mieux. Enfin notez que j'ai bien intégré à la fois Gregg et Thierry dans le README / Remerciements car je considère leur travail comme très important ET qu'il m'a servi de base de comparaison / reflexion / compréhension de pas mal de choses.

Ceci étant posé (je n'y reviendrait pas : je ne suis pas là pour pinailler), parlons de choses concretes !

Ces deux librairies vous proposent des classes relativement abouties pour gérer :

Installation des bibliotheques

Pour le moment elles ne sont pas dans le gestionnaire officiel (ça viendra). Vous pouvez les télécharger en pièce joint de ce message. Je mettrais un rappel dans les messages suivants qui pointera vers celui-ci.

Une fois ces bibliothèques installées, vous pouvez les ajouter à votre projet.

Il y a déjà pas mal de choses implémentées MAIS pour le moment je suis en phase de test de la partie échanges DCC sur la voie. Notamment : j'ai besoin de tests significatifs de lecture de CV.

Voici un sketch qui fait le job, à adapter selon votre matériel :

#include <SignalGenerator.h>
#include <TrackDriver.h>

#include <ACS712CurrentSensor.h>
#include <Max471CurrentSensor.h>

// Create a current sensor reading on A0 with VCC = 5.0 volts
ACS712CurrentSensor currentSensor(A0, 5000);
//Max471CurrentSensor currentSensor(A0, 5000);

// Create a signal generator using timer 1, and pin 12, allowed to issue service command
SignalGenerator generator(1, 12, true);

// Create a track driver using output pin 11 and previous generator & current sensor
TrackDriver driver(11, &generator, &currentSensor);

void readCV(byte cv)
{
 byte value = 0;
 bool result = driver.readCV(cv, &value);
 Serial.print("CV ");
 Serial.print(cv);
 Serial.print(" = ");
 Serial.print(value);
 if (result)
    Serial.println(" : OK");
 else
    Serial.println(" : Failed to read !");
}

void setup()
{
  Serial.begin(115200);
  Serial.println("Initializing !");

  // Start all the stuff : DCC signal is there and running starting from here
  driver.start();

  Serial.println("Initialization done !");
}

int x = 1;
bool up = true;

void loop()
{
  delay(2000);

  if (up)
    readCV(x++);
  else
    readCV(x--);

  if (x <= 1)
    up = true;
  if (x >= 140)
    up = false;
}

Notez bien les broches utilisées :

L'usage de la sortie 12 dépend du timer utilisé. Il faut dans tous les cas utiliser le signal OUTPUT COMPARE B du timer concerné. Sur le MEGA, OC1B est sur la sortie 12. Si vous changez de timer ou d'arduino il peut y avoir besoin d'ajuster le code.

L'usage de la sortie 11 pour faire le ON/OFF de génération du signal électrique est par contre un choix arbitraire, sans relation avec des contraintes du matériel. Ca marchera avec n'importe quelle sortie digitale pour peu que vous branchiez le fil sur la pin dont le numéro est passé en parametre lors de l'instanciation de l'objet TrackDriver.

Si vous utilisez une mesure de courant à base de MAX, vous devez utiliser la bonne classe de CurrentSensor, faute de quoi ça va délirer complètement. Pour le moment ce code fonctionne chez moi avec :

Titre: Re : DccToolkit / SystemToolkit
Posté par: Dominique le mars 14, 2021, 01:29:19 pm
Très intéressant Sébastien,

Depuis que j’ai commencé à m’intéresser aux centrales DCC en DIY (ca fait bien 5 ans), l’eau a pas mal coulé sous les ponts.

Apres CmdrArduino, DCC++, Flexitimer, DCCpp, DCC++EX, LaBox ESP32, voici un nouveau candidat que j’ai hâte de regarder.

Cela prouve la grande vitalité de Locoduino !
Titre: Re : DccToolkit / SystemToolkit
Posté par: msport le mars 14, 2021, 05:16:48 pm
Bravo pour cette première implémentation.

Un retour concernant la compilation :
j'ai du modifier dans dcctoolkit-master :

dans TrackDriver.h

#include "../SystemToolkit/SystemToolkit.h" par #include "SystemToolkit.h"

Par ailleurs le Mega semble obligatoire compte tenu des timers utilisés.
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 14, 2021, 05:39:35 pm
Oui j'ai déjà commit la meme correction.

Normalement tu peux utiliser autre chose qu'un mega : il y a les éléments de compilation conditionnelle qui vont bien.
Titre: Re : DccToolkit / SystemToolkit
Posté par: msport le mars 14, 2021, 07:36:03 pm
J'ai ça avec un UNO  : conflit avec d'autres cartes ?
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 14, 2021, 08:28:50 pm
Non, une erreur de ma part : sur un UNO, le timer 1  n'implémente pas le COMPARE "C", seulement compare A et B.
Je vais corriger ça. ;)
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 15, 2021, 09:36:31 am
Je vous met en pièce jointe deux nouvelles release améliorées des bibliothèques, qui integrent pas mal de correctifs et de nouvelles fonctions. Il y a notamment un premier morceau d'implémentation du protocole de commande DCC++ ce qui permet, en assemblant les classes comme il faut, d'utiliser DecoderPro pour dialoguer avec l'équipement.

Voici les deux sketchs utiles mis à jour :

Test de lecture des CV
#include <SignalGenerator.h>
#include <TrackDriver.h>

#include <ACS712CurrentSensor.h>
#include <Max471CurrentSensor.h>

// Create a current sensor reading on A0 with VCC = 5.0 volts
//ACS712CurrentSensor currentSensor(A0, 5000);
Max471CurrentSensor currentSensor(A0, 5000);

// Create a signal generator using timer 1, allowed to issue service command
SignalGenerator generator(1,12, true);

// Create a track driver using previous generator & current sensor
TrackDriver driver(11,&generator, &currentSensor);

void readCV(byte cv)
{
  Serial.print("CV ");
  Serial.print(cv);
  Serial.print(" = ");

  byte value;
  if (driver.readCV(cv, &value))
  {
    Serial.println(value);
  }
  else
  {
    Serial.print(value);
    Serial.println(" : Failed to read !");
  }
}

void setup()
{
  Serial.begin(115200);
  Serial.println("Initializing !");

  // Start all the stuff : DCC signal is there and running starting from here
  driver.start();
  driver.powerOn();

  Serial.println("Initialization done !");
}

int x = 1;
bool up = true;

void loop()
{
  delay(500);

  if (up)
    readCV(x++);
  else
    readCV(x--);

  if (x <= 1)
    up = true;
  if (x >= 140)
    up = false;
}

Sketch de test avec DecoderPRO en USB

NOTE 1 : les fonctions sont partiellement implémentées. Ne pas faire d'écriture de CV pour le moment pour ne pas perturber vos décodeurs, "au cas ou" : je n'ai pas encore assez testé cette partie.

NOTE 2 : Le code pour la partie ethernet n'est pas encore au point...mais je bosse dessus...donc ne l'activez pas (compilation conditionnée par les defines DCC_ETHERNET_xxx)

// Do not remove the include below

#include "DuinoBaseStation.h"

#include "SystemToolkit.h"
#include "DccToolkit.h"

// Create a current sensor reading on A0 with VCC = 5.0 volts
//ACS712CurrentSensor currentSensor(A0, 5000);
Max471CurrentSensor currentSensor(A0, 5000);

// Create a signal generator using timer 1, pin 12 which is OUTPUT COMPARE B
// for timer 1 on MEGA for example
SignalGenerator generator(1, 12, true);

// Create a track driver using previous generator & current sensor, also using
// pin 11 to switch track power ON/OFF
TrackDriver driver(11, &generator, &currentSensor);

// Create a command stream using USB serial port
SerialPortCommandStream usbStream;

// Create a command parser using the stream and our single track driver
CommandParser usbParser(&usbStream, &driver, NULL);

#if defined(DCC_ETHERNET_WIZNET_5100_ENABLED) || defined(DCC_ETHERNET_WIZNET_5200_ENABLED) || defined(DCC_ETHERNET_WIZNET_5500_ENABLED)
// Create a command stream using ETHERNET port
SocketCommandStream ipStream;

// Create a command parser using the stream and our single track driver
CommandParser ipParser(&ipStream, &driver, NULL);
#endif

void setup()
{
driver.start();
usbParser.start();
#if defined(DCC_ETHERNET_WIZNET_5100_ENABLED) || defined(DCC_ETHERNET_WIZNET_5200_ENABLED) || defined(DCC_ETHERNET_WIZNET_5500_ENABLED)
ipParser.start();
#endif
}

void loop()
{
usbParser.run();
#if defined(DCC_ETHERNET_WIZNET_5100_ENABLED) || defined(DCC_ETHERNET_WIZNET_5200_ENABLED) || defined(DCC_ETHERNET_WIZNET_5500_ENABLED)
ipParser.run();
#endif
}
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 15, 2021, 12:04:51 pm
Allez, une dernière pour la matinée : les  écritures de CV sont validées ainsi que les commandes de fonctions.
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 19, 2021, 10:13:08 am
Bonjour à tous,

Nouvelle version des bibliothèques intégrant de multiples corrections et ajustements.

Vous pouvez récupérer les libs ET le code de test dans le premier message de ce sujet, en pièce jointe.
Il se trouve ICI (https://forum.locoduino.org/index.php?topic=1183.msg12627#msg12627) !

Merci à ceux qui font quelques tests !

Précision : si vous obtenez une lecture partielle de vos CVs, vous pouvez essayer d'ajuster le seuil de sensibilité de l'ack de la façon suivante :

drivers.setAckThresholdCurrent(40);

Cette ligne de code, à mettre apres le driver.start() dans le SETUP, permet de fixer le seuil bas du niveau de courant , en milli-amperes.

Dans les versions précédentes, le seuil était forcé à  60 mA, probablement trop élevé pour des moteurs de petite taille (sur du N par exemple ?).

La valeur par défaut actuelle est de 40 mA.

Bons tests !
Titre: Re : DccToolkit / SystemToolkit
Posté par: msport le mars 19, 2021, 10:20:08 pm
Bonsoir,

résultat variable pour moi (même configuration : LMD18200 + MAX471- testé-, 5V sur PWM)
"sketch qui fait le job" + bibliothèques du 1er message (pas compatible avec le git)

sketch avec Max471CurrentSensor : premier essai pas mal
Initializing !
Initialization done !
CV 1 = 0 : Failed to read ! mais repositionnement loco partie toute seule.
CV 2 = 2 : OK
CV 3 = 4 : OK
CV 4 = 4 : OK
CV 5 = 10 : OK
CV 6 = 1 : OK
CV 7 = 1 : OK
CV 8 = 99 : OK
CV 9 = 255 : OK
CV 10 = 255 : OK
CV 11 = 255 : OK
CV 12 = 255 : OK
CV 13 = 255 : OK
mais le coup d'après :
Initializing !
Initialization done !
CV 1 = 255 : OK
CV 2 = 243 : OK
CV 3 = 147 : OK
CV 4 = 80 : OK
CV 5 = 64 : Failed to read !
CV 6 = 58 : OK
CV 7 = 16 : OK
CV 8 = 32 : Failed to read !
CV 9 = 0 : Failed to read !
CV 10 = 0 : Failed to read !
CV 11 = 0 : Failed to read !
CV 12 = 0 : Failed to read !
Les retours sont donc aléatoires ...Auraient du être :
1 8
2 2
3 4
4 4
5 10
6 1
7 1
8 99
9 255
10 255
11 255
12 255
13 255
Moteur HO mais calibre N, décodeur LENZ d'usine


Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 19, 2021, 10:46:27 pm
Super, merci pour ton retour.
C'est déjà mieux que sur tes premiers tests non ?

Est-ce que tu as fait un essai en réduisant légèrement le seuil de détection, par exemple en passant à 30 mA au lieu des 40 mA ?

En tout cas merci pour ce test qui me rassure : c'est déjà nettement mieux que ta première expérience.

Ce WE je ferais des essais de mon coté avec les Max472 sur la base des montages que tu as posté.
Titre: Re : DccToolkit / SystemToolkit
Posté par: msport le mars 20, 2021, 12:43:32 pm
Avec driver.setAckThresholdCurrent(30); (sans s) c'est très fantaisiste ... (même loco)
Initializing !
Initialization done !
CV 1 = 0 : Failed to read !
CV 2 = 0 : Failed to read !
CV 3 = 0 : Failed to read !
CV 4 = 0 : Failed to read !
CV 5 = 23 : OK
CV 6 = 9 : OK
CV 7 = 48 : OK
Initializing !
Initialization done !
CV 1 = 213 : OK
CV 2 = 100 : OK
CV 3 = 0 : Failed to read !
CV 4 = 0 : Failed to read !
Initializing !
Initialization done !
CV 1 = 109 : OK
CV 2 = 41 : OK
CV 3 = 1 : OK
CV 4 = 86 : OK
CV 5 = 224 : OK
CV 6 = 82 : OK
CV 7 = 28 : OK
CV 8 = 88 : OK
CV 9 = 144 : OK
CV 10 = 61 : OK
CV 11 = 207 : OK
CV 12 = 155 : OK
CV 13 = 85 : OK
CV 14 = 197 : OK
CV 15 = 0 : Failed to read !
CV 16 = 0 : Failed to read !
CV 17 = 0 : Failed to read !
CV 18 = 0 : Failed to read !
CV 19 = 0 : Failed to read !
CV 20 = 0 : Failed to read !
CV 21 = 0 : Failed to read !
CV 22 = 0 : Failed to read !
CV 23 = 0 : Failed to read !
CV 24 = 0 : Failed to read !
CV 25 = 0 : Failed to read !
CV 26 = 0 : Failed to read !
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 28, 2021, 02:32:25 pm
Mise à jour du premier message avec de nouvelles versions comportant quelques corrections & améliorations notamment en ce qui concerne :


Pour rappel, voici le code du sketch à adapter selon votre matériel et le cablage que vous utilisez ,qui permet de tester l'ensemble en lisant en boucle les CVs d'un décodeur :

#include "SystemToolkit.h"
#include "DccToolkit.h"

// Create a current sensor reading on A0 with VCC = 5.0 volts
//ACS712CurrentSensor currentSensor(A0, 5000);
//Max471CurrentSensor currentSensor(A0, 5000);
LM358CurrentSensor currentSensor(A0, 5000);

// Create a signal generator using timer 1, pin 12 which is OUTPUT COMPARE B
// for timer 1 on MEGA for example
SignalGenerator generator(1, 10, true);

// Create a track driver using previous generator & current sensor, also using
// pin 11 to switch track power ON/OFF
TrackDriver driver(11, &generator, &currentSensor);

void setup()
{
Serial.begin(115200);

driver.setAckThresholdCurrent(60);

driver.start();
driver.powerOn();
}

void readCV(byte cv)
{
byte value = 0;
bool result = driver.readCV(cv, &value);
Serial.print("CV ");
Serial.print(cv);
Serial.print(" = ");
Serial.print(value);

if (result)
Serial.println(" : OK");
else
Serial.println(" : Failed to read !");
}

int x = 1;
bool up = true;

void loop()
{
delay(2000);

if (up)
readCV(x++);
else
readCV(x--);

if (x <= 1)
up = true;
if (x >= 140)
up = false;
}

Adaptations à faire :

1 / Ce code utilise le timer 1, présent sur tous les arduinos, donc il n'y a pas de raison de changer.
En revanche, OC1B, la broche utile du timer 1, n'est pas à la meme place sur tous les Arduino.
Sur un UNO c'est la broche D10. Si vous utilisez un autre modele il faut modifier la déclaration du SignalGenerator pour lui passer le bon numéro de broche....et cabler en conséquence.

2 / La broche de sortie du TIMER 1 se connecte à l'entrée DIR du shield moteur

3 / Une seconde broche libre de choix permet de piloter l'entrée PWM du shield moteur. Dans l'exemple ci-dessus c'est la broche 11 que j'ai choisi, le premier parametre de l'objet TrackDriver. Si vous utilisez une autre broche, changez ce paramètre en conséquence

4 / Selon votre capteur de courant, utilisez la bonne ligne et indiquez la bonne entrée (ici A0) pour la déclaration du currentSensor.

5 / Si votre Arduino n'est pas alimenté en 5V il faut adapter aussi sur cette ligne le second parametre (5000) qui donne la tension d'alimentation VCC en millivolts.

Ensuite il suffit de compiler et charger l'arduino.

Si la lecture n'est pas satisfaisante, vous pouvez essayer d'augmenter le SEUIL de courant (ou de le baisser) via la ligne :
driver.setAckThresholdCurrent(60);
qui se trouve au début du SETUP

La valeur passée est le seuil recherché, ici 60 mA, valeur de la norme DCC
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 28, 2021, 03:30:40 pm
Précision importante : la classe LM358CurrentSensor calcule le courant en appliquant 500 mV par ampere. Si l'échelle est différente (changement de la résistance comme évoquée par msport par ailleurs), il faut adapter le code de la classe en surchargeant la méthode convertSample.
Titre: Re : DccToolkit / SystemToolkit
Posté par: Dominique le mars 28, 2021, 04:20:56 pm
premier test avec tes biblios sur UNO avec la carte L6203-LM358 mais avec une loco très encrassée:

CV 1 = 16 : Failed to read ! pas loin c'est 18 !
CV 2 = 0 : Failed to read !
CV 3 = 0 : Failed to read !
CV 4 = 8 : OK
CV 5 = 93 : Failed to read !
CV 6 = 0 : OK
CV 7 = 14 : Failed to read !
CV 8 = 126 : Failed to read !
CV 9 = 4 : Failed to read !
CV 10 = 0 : Failed to read !
CV 11 = 0 : OK
CV 12 = 1 : OK
CV 13 = 0 : Failed to read !
CV 14 = 0 : Failed to read !
CV 15 = 0 : Failed to read !
CV 16 = 0 : Failed to read !
CV 17 = 128 : OK
CV 18 = 0 : OK

Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 28, 2021, 04:26:17 pm
Quand il affiche OK, la valeur lue est la bonne ?
Tu peux faire un test avec des roues nettoyées pour voir si ça change significativement le résultat ?
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 28, 2021, 04:54:44 pm
Je viens de faire un test avec la loco remontée : jusqu'à maintenant j'utilisait une liaison filaire directe au décodeur pour éviter les incertitudes liées au contact roues / rail pour la mise au point.

Les roues étant relativement encrassées et sur un vieux rail jouef décapé, j'obtiens ça :
CV 1 = 0 : Failed to read !
CV 2 = 0 : OK
CV 3 = 20 : OK
CV 4 = 20 : OK
CV 5 = 0 : OK
CV 6 = 144 : OK
CV 7 = 0 : Failed to read !
CV 8 = 134 : OK
CV 9 = 0 : OK
CV 10 = 88 : OK
CV 11 = 0 : OK
CV 12 = 0 : OK
CV 13 = 0 : Failed to read !
CV 14 = 255 : OK
CV 15 = 0 : OK
CV 16 = 1 : OK
CV 17 = 205 : OK
CV 18 = 5 : OK
CV 19 = 0 : OK
CV 20 = 0 : OK
CV 21 = 0 : OK
CV 22 = 0 : OK
CV 23 = 0 : OK
CV 24 = 0 : Failed to read !
CV 25 = 0 : Failed to read !

Je nettoie les roues et je refais un test...
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mars 28, 2021, 05:15:01 pm
Apres nettoyage des roues tout est OK :

CV 1 = 3 : OK
CV 2 = 0 : OK
CV 3 = 20 : OK
CV 4 = 20 : OK
CV 5 = 0 : OK
CV 6 = 144 : OK
CV 7 = 4 : OK
CV 8 = 134 : OK
CV 9 = 0 : OK
CV 10 = 88 : OK
CV 11 = 0 : OK
CV 12 = 0 : OK
CV 13 = 255 : OK
CV 14 = 255 : OK
CV 15 = 0 : OK
CV 16 = 1 : OK
CV 17 = 205 : OK
CV 18 = 5 : OK
CV 19 = 0 : OK
CV 20 = 0 : OK
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le avril 06, 2021, 07:05:42 pm
Pour info, j'ai mis au point une nouvelle version (pas encore mise en ligne) qui permet de prendre en charge A LA FOIS l'USB et la connexion IP sur une seule et même configuration (là ou les libs usuelles imposent de choisir l'un ou l'autre).

J'ai encore quelques bricoles à finaliser et je pourrais vous proposer un topo complet pour une Base Station totalement opérationnelle s'appuyant sur ces libs.

A suivre.
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le avril 07, 2021, 03:35:13 pm
Encore quelques nouvelles :

J'ai désormais à ma disposition plusieurs décodeurs avec lesquels j'ai fait des tests, tous concluants :

A chaque fois : fonctionnement normal, lecture et programmation des CV sans problème.
J'ai également pu tester ces décodeurs sur une platine de test ZIMO (celle qui comporte un moteur et une série de leds + un HP) et les résultats sont identiques.

Autre test : utilisation d'un clone chinois à base de LGT8. Mes premiers tests avaient montré que la partie lecture de CV ne marchait pas, bien que la génération de signal DCC soit bonne. Ces tests avaient été réalisés avec le CPU tournant au fond, soit 32Mhz, puisque c'est un des points fort de ce composant.

Il s'avère que c'est aussi cette vitesse qui pose problème : à 16 ou 8 Mhz, tout le code fonctionne et s'adapte à la fréquence d'horloge.

En revanche, à 32 Mhz, la lecture des entrées analogiques retourne des valeurs incohérentes et la détection d'ACK ne fonctionne plus.

D'autres personnes ont aussi des problèmes avec cette partie du composant à cette vitesse, j'ai trouvé quelques sujets sur le NET, sans solution à ce jour.

Quand on y regarde de près, la spécification indique qu'on dispose de sampler à haute vitesse capables de tourner avec une horloge allant entre 300 Khz et 3Mhz. Cette horloge "ADC" est dérivée de l'horloge du CPU par un diviseur.
A 8 Mhz, l'horloge est divisée par 64 pour obtenir 125 Khz
A 16 Mhz, l'horloge est divisée par 128 et donne à nouveau 125 Khz
A 32 Mhz par contre, le diviseur ne peut pas augmenter car 128 est son maximum. Du coup l'horloge des convertisseurs analogiques passe de 125 à 250 Khz, et là plus moyen d'avoir une lecture fiable.

On est pourtant loin des 3Mhz indiqué dans la spec, et meme en deça des 300 Khz donnés comme minimum. Il semblerait que la conception du composant chinois ne suive pas la théorie de la datasheet...et je n'ai trouvé nulle-part d'explication et/ou de solution.

Donc sur ce type de composant, il faut garder le 16 Mhz pour que ça tourne correctement, ce qui fait perdre une partie des avantages par rapport à un Arduino normal. Reste d'autres points forts comme la flash de 48 Ko dont une partie tiens lieu d'EEPROM de taille paramétrable, ce qui permet de repousser à la fois le probleme de taille de l'EEPROM et de nombre limité d'écriture de celle-ci.
Titre: Re : DccToolkit / SystemToolkit
Posté par: Dominique le avril 07, 2021, 06:58:22 pm
Belle étude et tour de la question interessant.

Le fait que la bibliothèque soit en deux morceaux m'a posé des problèmes de compilation vu que j'ai plus de 100-120 bibliothèques installées : je vais refaire la manip et sortir l'erreur
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le avril 07, 2021, 07:30:17 pm
Oui avec l'IDE c'est pénible.
Un autre avantage d'utiliser par exemple un truc comme Sloeber : les bibliothèques sont gérées projet par projet et chaque projet est étanche, ce qui fait qu'on a pas de soucis de collision. ;)
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 04, 2021, 06:20:11 pm
Bonjour,
je suis en train de tester vos librairies. Je dispose d'un arduino méga, d'une carte L9110s et d'un ACS712.

Qu'entendez-vous exactement par
Citer
5 / Si votre Arduino n'est pas alimenté en 5V il faut adapter aussi sur cette ligne le second paramètre (5000) qui donne la tension d'alimentation VCC en millivolts.

L'arduino est alimenté par le port usb de l'ordinateur, je dois donc laisser 5000. Et si je connect une alimentation de 9 volts à l'arduino, je dois mettre 9000, c'est bien cela ?

En utilisant  driver.setAckThresholdCurrent(40), j'obtiens une lecture de tous les CV. Avec 60 j'ai des échecs.
Par contre j'obtiens des chiffres différents lors de la lecture des CV. Par exemple CV1 une fois à 45, puis à 82, puis à 223, etc.

Auriez-vous une idée ?

Cordialement
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 04, 2021, 06:36:12 pm
L'ACS 712 fourni un lecture du courant centrée sur VCC / 2 (c'est un capteur à effet hall)

De ce fait, effectivement en USB il est alimenté en 5V et il faut l'indiquer lorsqu'on le paramètre avec la valeur en millivolts, soit 5000.

Si vous passez ensuite sur une alimentation du capteur sur 9V, vous devrez effectivement changer la valeur à 9000.

Si cette valeur est mauvaise, la lecture de courant est erronée dans tous les cas.

Le seuil de détection permet ensuite d'ajuster le niveau de courant à mesurer. Pour considérer qu'on est en présence d'un ACK valide sur la ligne. Normalement ce seuil doit etre à 60 si l'on suit la norme. Mais cela dépend aussi de la charge connectée (loco sur la voie de programmation). Idéalement, plus le seuil est haut, mieux c'est....mais il faut pour cela obtenir des valeurs cohérentes en tout point.

Le probleme qui persiste est que la technique de lecture d'un CV est non déterministe : elle suppose que la station de programmation reconnaisse correctement le pic ACK, sans quoi la réponse lue est perturbée.

Pour lire un CV, on doit lire chaque bit 1 par 1 et détecter à chaque fois la présence ou l'absence du ACK....donc on a un signal "moyennement fiable" dans un cas, et pas de signal du tout dans l'autre.

Si la lecture d'ACK est mauvaise, on aura une mauvaise perception des 8 bits qui forment la valeur du CV....et à la fin, quand on fera une vérification de la valeur déduite complète, on fera la meme erreur de lecture de l'ACK et on pourra considérer comme VALIDE une valeur lue qui ne l'est pas.

Donc la seule bonne information provient de votre propre connaissance du décodeur (doc constructeur).
Si avec un jeu de réglages vous obtenez à chaque fois les memes valeurs, et que celles-ci sont bonnes, disons pour les 30 premiers CV, alors vous pouvez considérer que ça marche.

Dans ces 30 CVs vous devez retrouver des valeurs "pivots" dans les CV 1, 7 et 8, 29, etc... : adresse primaire, ID du fabricant du décodeur et version du décodeur...

Quelle version du 712 utilisez-vous ? 5, 10, 20 A ? La valeur lue n'est pas la meme pour tous les modeles....
Titre: Re : DccToolkit / SystemToolkit
Posté par: Dominique le mai 04, 2021, 07:10:45 pm
Il serait surement interesant d'essayer les circuits à base de INA169 dont on peut régler la gamme de mesure et le gain par le jeu des résistances à placer soi-même sur ce breakout.
Voir http://forum.locoduino.org/index.php?topic=943.msg9794#msg9794 (http://forum.locoduino.org/index.php?topic=943.msg9794#msg9794)
Chez Sparfun : https://learn.sparkfun.com/tutorials/ina169-breakout-board-hookup-guide/all (https://learn.sparkfun.com/tutorials/ina169-breakout-board-hookup-guide/all)
Chez Adafruit : https://www.adafruit.com/product/1164 (https://www.adafruit.com/product/1164)

On commence à en trouver à des prix interessants sur eBay:
https://www.ebay.fr/itm/401309797879 (https://www.ebay.fr/itm/401309797879)
https://www.ebay.fr/itm/174381947027 (https://www.ebay.fr/itm/174381947027)
Titre: Re : Re : DccToolkit / SystemToolkit
Posté par: msport le mai 04, 2021, 07:37:57 pm
On commence à en trouver à des prix intéressants sur eBay:
https://www.ebay.fr/itm/174381947027 (https://www.ebay.fr/itm/174381947027)

Si on en croit ce qu'on devine sur les photos (10K et R100), le module GT-169 pourrait bien avoir le rapport 1V/A qui est le standard de DCC++ et donc être utilisé tel quel dans la station DCC complète, polyvalente et économique avec JMRI.

https://www.locoduino.org/spip.php?article253

Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 05, 2021, 10:47:33 am
Je viens de mettre en ligne une nouvelle version de la lib SystemToolkit (premier message de ce fil) qui comporte les modifications suivantes :


La classes ACS712CurrentSensor appliquait jusque là une échelle de 100 mV / A sur la lecture de courant, ce qui correspond aux modèles 10 et 20A. Le modèle 5A ayant une résolution différente (185 mV / A il me semble), il est désormais possible de préciser la résolution dans le 3ème paramètre du constructeur.

Par défaut, le constructeur valorise VCC = 5000 mV et résolution = 100 mV, ce qui correspond aux cas les plus courant pour un ACS 10 ou 20 A. Ainsi l'instanciation sous les formes suivante produit un objet identique :

new ACS712CurrentSensor(analogPinNumber);
new ACS712CurrentSensor(analogPinNumber, 5000);
new ACS712CurrentSensor(analogPinNumber,5000,100);

Si l'on utilise un ACS712 de 5A, il faudra préciser les 3 paramètres. Exemple pour une alimentation VCC = 5 Volts du composant :

new ACS712CurrentSensor(analogPinNumber,5000,185);
Titre: Re : Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 05, 2021, 12:11:49 pm
Merci pour votre réponse détaillée.

Mon ACS712 est un 5A. Je vais donc tester la dernière mise à jour  :)

L'ACS 712 fourni un lecture du courant centrée sur VCC / 2 (c'est un capteur à effet hall)

De ce fait, effectivement en USB il est alimenté en 5V et il faut l'indiquer lorsqu'on le paramètre avec la valeur en millivolts, soit 5000.

Si vous passez ensuite sur une alimentation du capteur sur 9V, vous devrez effectivement changer la valeur à 9000.

Si cette valeur est mauvaise, la lecture de courant est erronée dans tous les cas.

Le seuil de détection permet ensuite d'ajuster le niveau de courant à mesurer. Pour considérer qu'on est en présence d'un ACK valide sur la ligne. Normalement ce seuil doit etre à 60 si l'on suit la norme. Mais cela dépend aussi de la charge connectée (loco sur la voie de programmation). Idéalement, plus le seuil est haut, mieux c'est....mais il faut pour cela obtenir des valeurs cohérentes en tout point.

Le probleme qui persiste est que la technique de lecture d'un CV est non déterministe : elle suppose que la station de programmation reconnaisse correctement le pic ACK, sans quoi la réponse lue est perturbée.

Pour lire un CV, on doit lire chaque bit 1 par 1 et détecter à chaque fois la présence ou l'absence du ACK....donc on a un signal "moyennement fiable" dans un cas, et pas de signal du tout dans l'autre.

Si la lecture d'ACK est mauvaise, on aura une mauvaise perception des 8 bits qui forment la valeur du CV....et à la fin, quand on fera une vérification de la valeur déduite complète, on fera la meme erreur de lecture de l'ACK et on pourra considérer comme VALIDE une valeur lue qui ne l'est pas.

Donc la seule bonne information provient de votre propre connaissance du décodeur (doc constructeur).
Si avec un jeu de réglages vous obtenez à chaque fois les memes valeurs, et que celles-ci sont bonnes, disons pour les 30 premiers CV, alors vous pouvez considérer que ça marche.

Dans ces 30 CVs vous devez retrouver des valeurs "pivots" dans les CV 1, 7 et 8, 29, etc... : adresse primaire, ID du fabricant du décodeur et version du décodeur...

Quelle version du 712 utilisez-vous ? 5, 10, 20 A ? La valeur lue n'est pas la meme pour tous les modeles....
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 07, 2021, 11:38:17 pm
Les essais ne sont pas concluants. J'obtiens toujours des valeurs différentes lors des lectures. J'ai essayé de déplacer l'ACS712 en le mettant entre la carte L9110S et la motrice (avant il était entre l'alimentation et la L9110s). Cela ne change rien.
Les câbles sont branchés directement a la motrice (ne passe pas par les roues). Il s'agit d'une JOUEF 67001 moteur 5 pôles avec des aimants neufs.
J'ai fait des tests avec un contrôleur LAISDcc 860021 (acheté sur ebay) ainsi que Lokpilot v5 DCC.
Petite précision : lors du test avec le LAISDcc le moteur se met en route alors qu'il ne tourne pas avec le lokpilot. D’ailleurs est-ce normal ?
Ces contrôleurs n'ont jamais été reprogrammés.

Une idée ?
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 08, 2021, 10:00:25 am
Dans tous les cas si le montage est correcte et cohérent avec la configuration du code, vous devez voir bouger la loco (le moteur doit s'activer) pour générer les ACK.

Si ce n'est pas le cas c'est que le problème est avant : d'une façon ou d'une autre le décodeur ne reçoit pas les commandes.

Ici j'ai testé avec succès des décodeurs LAISDcc, LokPilot ESU et Zimo, avec une alimentation de 12v soit via une carte L9110 soit via la carte "all in one" proposée sur Locoduino, et avec des ACS712 de 5, 10 et 20 A, et autres Max / LM de mesure...mais bon : ce code n'a pas encore non plus un vécu énorme...

Lorsque vous envoyez une commande soit de fonction, soit de pilotage moteur, le décodeur réagit ?
Titre: Re : DccToolkit / SystemToolkit
Posté par: msport le mai 08, 2021, 03:31:39 pm
Bonjour,

à vérifier : la tension sur les rails du DCC (+/-) ou du continu ?
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 08, 2021, 05:36:42 pm
Bonjour,
tout d'abord je tenais à vous remercier pour vos réponses. Je débute dans ce domaine et elles me m'aident beaucoup.
Nullement l'idée pour moi de remettre en cause le fonctionnement du code. C'est plutôt mon montage que je soupçonne  :)

Je n'ai pas un super niveau en électronique, mais je vais refaire des tests. Mais je pense effectivement qu'il y a un problème de liaison avec l'arduino car il n'y a qu'une seule des 2 led qui s'allume sur la carte L9110S au lieu des deux avant (test avec DCC++).

Je vais chercher sur le net comment envoyer des commandes.

Encore merci.
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 08, 2021, 05:39:40 pm
Si vous nous précisez quel modele d'arduino vous utilisez et quels branchements vous avez fait, on va pouvoir vous dire ce qui coince. L'affectation des broches est pour une partie imposée, pour l'autre libre. Si vous n'avez qu'une seule LED d'allumée c'est que vous alimentez électriquement le shield moteur, mais que vous n'injectez pas le signal DCC....donc que la broche MOTOR DIR de la carte moteur n'est pas reliée à la bonne brocher de l'Arduino.
Titre: Re : DccToolkit / SystemToolkit
Posté par: msport le mai 08, 2021, 06:24:10 pm
Les commandes DCC++ sont là :
https://dcc-ex.com/reference/software/command-reference.html

En retour, à la mise sous tension de l'Arduino, sur le serial monitor réglé à 115200 bauds, après le message d'identification de la version, il devrait y avoir <p1> qui indique la mise sous tension des rails (ou au moins la tentative de).
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 08, 2021, 06:34:25 pm
Il y avait effectivement un mauvais branchement. Je n'avais pas fait attention que le code copié n'était pas pour le mega (SignalGenerator generator(1, 10, true)  :-\
J'ai bien maintenant les deux led allumées.

Je suis descendu jusqu'à 30 pour driver.setAckThresholdCurrent.
J'ai bien utilisé ACS712CurrentSensor currentSensor(A4, 5000,185);
L'arduino mega est allumé uniquement par le port usb, et l"ACS712 par l'arduino.

J'ai aussi essayé avec un autre moteur récent.
Le moteur s'active bien de temps en temps.  Mais les valeurs sont toujours différentes à chaque lecture.

Par contre l'alimentation est une 18 volts (comme indiqué ici : https://www.locoduino.org/spip.php?article253).

Merci pour les commandes.
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 08, 2021, 06:40:00 pm
J'utilise le code fourni par AmadeusHF dans la première page.
La console de l'arduino IDE indique

<p0><iDCC++ BASE STATION FOR ARDUINO UNO / L9110S / V-1.2.1+ / May  8 2021 / 18:36:17><N0:SERIAL><X><X>
C'est correct ?

<1> allume bien les leds.

Par contre est-ce que le Dcctoolkit/SystemToolkit prend en compte toutes le commandes (je crois avoir compris que non) ?
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 08, 2021, 06:46:15 pm
Si vous avez les deux leds allumées sur le driver moteur et que la loco "gigotte" régulièrement c'est qu'elle reçoit les commandes et réagit.

Dans un premier temps il est préférable de monter l'ACS712 dans le circuit d'alimentation de la carte 9110.

Vous avez bien branché la sortie OUT de l'ACS sur la broche de mesure de votre Arduino, dont vous passez le numéro dans le constructeur de l'objet ? (A4 en l'occurence).

Et l'ACS est alimenté par le VCC de votre arduino, GND relié au GND de votre arduino ?

Petite photo (gros plan) de votre montage ?

L'alimentation 18V est normale pour des locos en HO.
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 08, 2021, 07:01:23 pm
J'ai vérifié et les branchement sont correct.
Il y a de l'amélioration. Avec un réglage à 40,, j'ai réussi à obtenir deux fois de suite :


CV 1 = 3 : OK
CV 2 = 3 : OK
CV 3 = 40 : OK
CV 4 = 40 : OK
CV 5 = 255 : OK
CV 6 = 88 : OK
CV 7 = 255 : OK
CV 8 = 151 : OK
CV 9 = 40 : OK
CV 10 = 0 : OK
CV 11 = 0 : OK
CV 12 = 0 : OK
CV 13 = 1 : OK
CV 14 = 1 : OK
CV 15 = 0 : OK
CV 16 = 0 : OK
CV 17 = 192 : OK
CV 18 = 0 : OK
CV 19 = 0 : OK
CV 20 = 0 : OK
CV 21 = 0 : OK
CV 22 = 0 : OK
CV 23 = 0 : OK
CV 24 = 0 : OK
CV 25 = 32 : OK
CV 26 = 0 : OK
CV 27 = 24 : OK
CV 28 = 131 : OK
CV 29 = 2 : OK
CV 30 = 0 : OK

Puis après plus. Je viens de refaire un test et j'ai obtenu :
CV 1 = 3 : OK
CV 2 = 3 : OK
CV 3 = 40 : OK
CV 4 = 40 : OK
CV 5 = 127 : Failed to read !
CV 6 = 88 : OK
CV 7 = 255 : OK
CV 8 = 151 : OK
CV 9 = 40 : OK
CV 10 = 0 : OK
CV 11 = 0 : OK
CV 12 = 0 : OK
CV 13 = 1 : OK
CV 14 = 1 : OK
CV 15 = 0 : OK
CV 16 = 0 : OK
CV 17 = 192 : OK
CV 18 = 0 : OK
CV 19 = 0 : OK
CV 20 = 1 : OK
CV 21 = 0 : OK
CV 22 = 0 : OK
CV 23 = 0 : OK
CV 24 = 0 : OK
CV 25 = 0 : OK
CV 26 = 128 : OK
CV 27 = 24 : OK
CV 28 = 131 : OK
CV 29 = 2 : OK
CV 30 = 0 : OK

Peut-on utiliser des valeurs intermédiaires entre 40 et 30 ou bien est-ce que cela doit toujours être un multiple de 10 ?
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 08, 2021, 07:03:21 pm
On peut mettre la valeur que l'on veut. Théoriquement le seuil de la norme est 60...donc on devrait utiliser 60 MAIS comme la précision de mesure dépend du composant utilisé, il faut ajuster au besoin.
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 08, 2021, 09:55:52 pm
J'ai remis l'ACS712 entre l'alimentation et la carte L9110S et j'arrive à avoir des lectures satisfaisantes.

Maintenant j'essaye d'utiliser la librairie avec JMRI mais il n'arrive pas a trouver le décodeur. La lecture des CV semble ne plus fonctionner (valeur de 255).
Peut-on l'utiliser avec JMRI ?

J'utilise le code trouvé dans les premières pages

Citer
// Do not remove the include below

#include "DuinoBaseStation.h"

#include "SystemToolkit.h"
#include "DccToolkit.h"

// Create a current sensor reading on A0 with VCC = 5.0 volts
ACS712CurrentSensor currentSensor(A0, 5000,185);
//Max471CurrentSensor currentSensor(A0, 5000);

// Create a signal generator using timer 1, pin 12 which is OUTPUT COMPARE B
// for timer 1 on MEGA for example
SignalGenerator generator(1, 12, true);

// Create a track driver using previous generator & current sensor, also using
// pin 11 to switch track power ON/OFF
TrackDriver driver(11, &generator, &currentSensor);

// Create a command stream using USB serial port
SerialPortCommandStream usbStream;

// Create a command parser using the stream and our single track driver
CommandParser usbParser(&usbStream, &driver, NULL);

#if defined(DCC_ETHERNET_WIZNET_5100_ENABLED) || defined(DCC_ETHERNET_WIZNET_5200_ENABLED) || defined(DCC_ETHERNET_WIZNET_5500_ENABLED)
// Create a command stream using ETHERNET port
SocketCommandStream ipStream;

// Create a command parser using the stream and our single track driver
CommandParser ipParser(&ipStream, &driver, NULL);
#endif

void setup()
{
  driver.start();
  driver.setAckThresholdCurrent(40);
  usbParser.start();
#if defined(DCC_ETHERNET_WIZNET_5100_ENABLED) || defined(DCC_ETHERNET_WIZNET_5200_ENABLED) || defined(DCC_ETHERNET_WIZNET_5500_ENABLED)
  ipParser.start();
#endif
}

void loop()
{
  usbParser.run();
#if defined(DCC_ETHERNET_WIZNET_5100_ENABLED) || defined(DCC_ETHERNET_WIZNET_5200_ENABLED) || defined(DCC_ETHERNET_WIZNET_5500_ENABLED)
  ipParser.run();
#endif
}
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 08, 2021, 10:04:36 pm
J'utilise systématiquement DecoderPro via USB pour mes tests, donc oui ça marche.
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 09, 2021, 11:55:24 am
Dans ce cas est-ce que le code que j'utilise est suffisant pour une utilisation avec JMRI ?
Je rencontre un problème dans la lecture des CV qui ne fonctionne pas : que des valeur à 255.

11:52:38.272:  Prog Read Cmd: CV: 8, Callback Num: 0, Callback Sub: 82
11:52:38.675:  Program Reply: Callback Num: 0, Callback Sub: 82, CV: 8, Value: 255
11:52:38.676:  Prog Read Cmd: CV: 7, Callback Num: 0, Callback Sub: 82
11:52:39.109:  Program Reply: Callback Num: 0, Callback Sub: 82, CV: 7, Value: 255
11:52:39.112:  Prog Read Cmd: CV: 29, Callback Num: 0, Callback Sub: 82
11:52:39.556:  Program Reply: Callback Num: 0, Callback Sub: 82, CV: 29, Value: 255
11:52:39.556:  Read Track Current Cmd
11:52:41.559:  Prog Read Cmd: CV: 1, Callback Num: 0, Callback Sub: 82
11:52:41.952:  Program Reply: Callback Num: 0, Callback Sub: 82, CV: 1, Value: 255
11:52:41.952:  Prog Read Cmd: CV: 17, Callback Num: 0, Callback Sub: 82
11:52:42.386:  Program Reply: Callback Num: 0, Callback Sub: 82, CV: 17, Value: 255
11:52:42.387:  Prog Read Cmd: CV: 18, Callback Num: 0, Callback Sub: 82
11:52:42.829:  Program Reply: Callback Num: 0, Callback Sub: 82, CV: 18, Value: 255
11:52:42.830:  Prog Read Cmd: CV: 19, Callback Num: 0, Callback Sub: 82
11:52:43.271:  Program Reply: Callback Num: 0, Callback Sub: 82, CV: 19, Value: 255
11:52:46.382:  Status Cmd
11:52:46.384:  Power Status: OFF
11:52:46.398:  Status:Station: , Build: , Version: 0.0.0
11:52:46.404:  Comm Type Reply Type: 0 Port: N/A
11:52:46.405:  No Sensor/Turnout/Output Reply
11:52:46.408:  No Sensor/Turnout/Output Reply
11:52:49.456:  Read Track Current Cmd

Il y a aussi le Voltage Meter qui n'indique rien : - - - A

Il s'agit de la version 4.22+R4c4384d74 de JMRI.

Voici les messages générés dans la console par DecoderPro lors du démarrage et du lancement d'une recherche de décodeur :

2021-05-09 11:58:42,327 util.Log4JUtil                        INFO  - ****** JMRI log ******* [main]
2021-05-09 11:58:42,384 util.Log4JUtil                        INFO  - This log is appended to file: /home/christophe/.jmri/log/messages.log [main]
2021-05-09 11:58:42,386 util.Log4JUtil                        INFO  - This log is stored in file: /home/christophe/.jmri/log/session.log [main]
2021-05-09 11:58:42,395 apps.AppsBase                         INFO  - DecoderPro version 4.22+R4c4384d74 starts under Java 1.8.0_292 on Linux amd64 v3.10.0-1160.24.1.el7.x86_64 at Sun May 09 11:58:42 CEST 2021 [main]
2021-05-09 11:58:44,613 gui3.Apps3                            INFO  - Starting with profile Mon_Réseau_JMRI.3eec594e [main]
2021-05-09 11:58:44,707 node.NodeIdentity                     INFO  - Using 0adc91f1-ffaa-462b-876a-5da7604188fc as the JMRI storage identity for profile id 3eec594e [AWT-EventQueue-0]
2021-05-09 11:58:44,828 xml.AbstractSerialConnectionConfigXml INFO  - Starting to connect for "DCC++" [main]
2021-05-09 11:58:44,998 serial.DCCppAdapter                   INFO  - ttyACM0 port opened at 115200 baud with DTR: true RTS: true DSR: false CTS: true  CD: false [main]
2021-05-09 11:58:45,058 dccpp.DCCppInitializationManager      INFO  - DCC++ Initialization Complete with station type 'Unknown', version '0.0.0' and build 'Unknown' [main]
2021-05-09 11:58:45,356 util.FileUtilSupport                  INFO  - File path program: is /home/christophe/Documents/trains électriques/dcc/centrale/JMRI/JMRI/ [main]
2021-05-09 11:58:45,357 util.FileUtilSupport                  INFO  - File path preference: is /home/christophe/.jmri/Mon_Réseau_JMRI.jmri/ [main]
2021-05-09 11:58:45,358 util.FileUtilSupport                  INFO  - File path profile: is /home/christophe/.jmri/Mon_Réseau_JMRI.jmri/ [main]
2021-05-09 11:58:45,358 util.FileUtilSupport                  INFO  - File path settings: is /home/christophe/.jmri/ [main]
2021-05-09 11:58:45,359 util.FileUtilSupport                  INFO  - File path home: is /home/christophe/ [main]
2021-05-09 11:58:45,359 util.FileUtilSupport                  INFO  - File path scripts: is /home/christophe/Documents/trains électriques/dcc/centrale/JMRI/JMRI/jython/ [main]
2021-05-09 11:58:46,138 dccpp.DCCppReply                      ERROR - DCCppReply 'iDCC++ BASE STATION FOR ARDUINO UNO / L9110S / V-1.2.1+ / May  8 2021 / 21:48:06' not matched by '' [AWT-EventQueue-0]
2021-05-09 11:58:46,138 dccpp.DCCppCommandStation             INFO  - Station Type set to '' [AWT-EventQueue-0]
2021-05-09 11:58:46,139 dccpp.DCCppReply                      ERROR - DCCppReply 'iDCC++ BASE STATION FOR ARDUINO UNO / L9110S / V-1.2.1+ / May  8 2021 / 21:48:06' not matched by '' [AWT-EventQueue-0]
2021-05-09 11:58:46,140 dccpp.DCCppCommandStation             INFO  - Build set to '' [AWT-EventQueue-0]
2021-05-09 11:58:46,140 dccpp.DCCppReply                      ERROR - DCCppReply 'iDCC++ BASE STATION FOR ARDUINO UNO / L9110S / V-1.2.1+ / May  8 2021 / 21:48:06' not matched by '' [AWT-EventQueue-0]
2021-05-09 11:58:48,231 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: T consecutive timeouts = 0 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:58:50,232 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: Z consecutive timeouts = 1 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:58:52,233 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: S consecutive timeouts = 2 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:58:54,235 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: c consecutive timeouts = 3 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:58:56,236 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: T consecutive timeouts = 4 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:58:58,237 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: Z consecutive timeouts = 5 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:00,238 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: S consecutive timeouts = 6 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:02,239 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: T consecutive timeouts = 7 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:04,240 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: c consecutive timeouts = 8 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:06,242 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: Z consecutive timeouts = 9 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:08,243 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: S consecutive timeouts = 10 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:10,244 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: T consecutive timeouts = 11 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:12,245 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: Z consecutive timeouts = 12 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:14,247 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: c consecutive timeouts = 13 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:16,249 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: S consecutive timeouts = 14 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
2021-05-09 11:59:16,739 dccpp.DCCppReply                      ERROR - DCCppReply 'iDCC++ BASE STATION FOR ARDUINO UNO / L9110S / V-1.2.1+ / May  8 2021 / 21:48:06' not matched by '' [AWT-EventQueue-0]
2021-05-09 11:59:16,739 dccpp.DCCppReply                      ERROR - DCCppReply 'iDCC++ BASE STATION FOR ARDUINO UNO / L9110S / V-1.2.1+ / May  8 2021 / 21:48:06' not matched by '' [AWT-EventQueue-0]
2021-05-09 11:59:16,740 dccpp.DCCppReply                      ERROR - DCCppReply 'iDCC++ BASE STATION FOR ARDUINO UNO / L9110S / V-1.2.1+ / May  8 2021 / 21:48:06' not matched by '' [AWT-EventQueue-0]
2021-05-09 11:59:17,141 symbolicprog.CombinedLocoSelTreePane  WARN  - Found mfg 255 version 255; no such manufacturer defined [AWT-EventQueue-0]
2021-05-09 11:59:17,142 decoderdefn.IdentifyDecoder           INFO  - Decoder returns mfgID:255;modelID:255;productID:-1 [AWT-EventQueue-0]
2021-05-09 11:59:20,463 jmrix.AbstractMRTrafficController     WARN  - Timeout on reply to message: c consecutive timeouts = 0 in serial.SerialDCCppPacketizer [serial.SerialDCCppPacketizer Transmit thread]
^C2021-05-09 11:59:25,123 managers.DefaultShutDownManager       INFO  - Normal termination complete [Thread-2]

Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 09, 2021, 11:58:13 am
Dans DecoderPro vous devez mettre la voie sous tension avant d'envoyer des commandes de lecture : il ne le fait pas seul. Vous l'avez fait ? Votre loco 'gigote" ?
Titre: Re : DccToolkit / SystemToolkit
Posté par: kortex77 le mai 09, 2021, 12:05:00 pm
Oui. Le moteur bouge une seule fois avant l'affichage de "Found mfg 255 version 255; no such manufacturer defined".

J'ai modifié mon ancien post avec les sorties sur la console de DecoderPro. Il y a des erreurs qui ne sont peut être pas normales.
Titre: Re : DccToolkit / SystemToolkit
Posté par: AmadeusHF le mai 27, 2021, 04:54:59 pm
Image rare d'une trame IDLE générée par la librairie DccToolkit passant sur un bus....

 ;D  ;) :D 8)