LOCODUINO

Parlons Arduino => Le logiciel DCC++ => Discussion démarrée par: nopxor le août 16, 2020, 02:55:44 pm

Titre: DCC++ EX
Posté par: nopxor le août 16, 2020, 02:55:44 pm
Bonjour,
Utilisez-vous DCC++ EX ?
Qu'en pensez-vous ?

https://dcc-ex.com/
Titre: Re : DCC++ EX
Posté par: msport le août 16, 2020, 06:15:13 pm
Bonjour,

toujours intéressant de voir une communauté qui relève le flambeau derrière Gregg Berman.

les intentions semblent louables au vu du site et les échanges sont nombreux sur TrainBoard. Mais sur le site, il est signalé que DCC++ EX est en phase de réécriture du code et celui-ci n'est pas stabilisé. Et l'optimisation atteinte par Gregg Berman ne permet pas beaucoup de fantaisies sur des plateformes comme le UNO. D'où une prise en compte de l'ESP8266 mais c'est une plateforme instable qu'il vaut mieux oublier au profit de l'ESP32 (n’est-ce pas ?) Et ce dernier ne semble pas encore au programme.

La question de la lecture des CV est un sujet majeur sur TrainBoard pour DCC++ EX, mais LA solution aurait-elle été trouvée de ce coté de l'atlantique ?

Donc à suivre, à mon avis un peu tôt pour y investir du temps. D'autres avis sur les sujets abordés ? Ils semblent vouloir proposer des pcb. (?)



Titre: Re : DCC++ EX
Posté par: Dominique le février 19, 2022, 09:56:49 pm
Je viens d’installer DCC-EX (release 4 : https://dcc-ex.com/download/commandstation.html) avec succès dans le UNO+Carte Va et vient avec Oled et encodeur.
ça marche mais il occupe 90% de la mémoire (l’Oled bouffe plus) et il faut faire un fichier config.h adapté.
J’ai hate de recevoir mes circuits pour tester sur MEGA car il y aura un strap pour choisir UNO pu MEGA.

Comme il n’y a qu’une seule voie dans cette carte, j’ai testé alternativement la voie MAIN ou la voie PROG (il suffit de permuter 2 lignes dans config.h).

Évidemment les boutons ne sont pas (encore) interfacés donc il faut commander via le port USB (le terminal de lIde).

Résultats:

Fonctionnement nickel sur Main.

Très bonne surprise sur la voie Prog:
CommandStation-EX arrive à lire l’adresse de mon ABJ Renault que je n’avais jamais pu lire jusqu’à présent  ;D
Sur la voie PROG:en mode debug on voit ce qui se passe:
<D ACK ON><R>

réponse :
Ack diag on
<* ACK baseline=10/29mA Threshold=30/89mA Duration between 4000us and 8500us *>
<* VB cv=19 value=0 *>
<* ACK after 63mS max=42/125mA pulse=5576uS samples=196 gaps=1 *>
<* V0 cv=29 bit=5 *>
<* ACK after 56mS max=39/116mA pulse=5744uS samples=91 gaps=0 *>
<* V0 cv=1 bit=6 *>
<* ACK after 54mS max=39/116mA pulse=5332uS samples=94 gaps=0 *>
<* V0 cv=1 bit=5 *>
<* ACK after 54mS max=41/122mA pulse=5516uS samples=94 gaps=1 *>
<* V0 cv=1 bit=4 *>
<* NO-ACK after 148mS max=14/41mA pulse=0uS samples=148 gaps=0 *>
<* V0 cv=1 bit=3 *>
<* ACK after 55mS max=39/116mA pulse=4872uS samples=91 gaps=0 *>
<* V0 cv=1 bit=2 *>
<* NO-ACK after 150mS max=14/41mA pulse=0uS samples=148 gaps=0 *>
<* V0 cv=1 bit=1 *>
<* ACK after 55mS max=41/122mA pulse=5452uS samples=109 gaps=0 *>
<* V0 cv=1 bit=0 *>
<* ACK after 65mS max=41/122mA pulse=5624uS samples=238 gaps=0 *>
<* VB cv=1 value=20 *>
<* ACK after 37mS max=42/125mA pulse=5568uS samples=170 gaps=0 *>
<* Callback(20) *>
<r 20>

C’est bien l’adresse 20 !!

On voit qu’il teste le CV19
Puis le 29 bit 5
Puis le 1 (adresse courte)
il trouve la fenêtre du ACK tout seul = c’est ce que je préconisait : bravo !
Titre: Re : DCC++ EX
Posté par: dmskd le février 19, 2022, 11:02:26 pm
Bonsoir,

Le fait de remplacer DCCpp par DCC-EX sur ma centrale à base de Nano a résolu mes problèmes de lecture de CV sur mes décodeurs.
Titre: Re : DCC++ EX
Posté par: msport le février 20, 2022, 10:16:34 am
Bonjour,
effectivement les décodeurs Doehler & Haass (D&H) font partie des récalcitrants avec DCC++ que DCC-EX a les moyens de faire parler.
Sauf erreur, ce sont ceux qui équipent Fleischmann, donc pas si exotiques que cela. (CV 8 = 97)
Mais comme dit Dominique, DCC-EX avec oled consomme 90% de la mémoire sur les 328P (UNO, Nano, Mini, ...), ce qui laisse moins de place à la créativité.
Titre: Re : DCC++ EX
Posté par: Dominique le février 20, 2022, 10:46:06 am
90% c'est sur une première prise de contact.

Il y a surement des optimisations posibles, d'autant q'il faudra ajouter la gestion des boutons et donc des commandes par l'application, en plus du protocole sériel DCC++.

J'ai noté d'ailleurs l'impossibilité de piloter une loco sur la voie Prog, avec le registre 0 (<t 0 3 25 1>).
Par contre la commande <R> fait tout le travail de la lecture d'adresse.

Par aileurs, EX-Rail est une belle opportunité de réaliser des petits (ou grands) automatismes en liaison avec des capteurs, mais nécessite de passer sur MEGA ou Teensy : mon va et vient avec DCCpp sur 328P a encore de l'avenir !

Egalement l'intégration des commandes via le bus CAN est, pour moi, une nécessité, sans tomber dans la complexité de LCC pour le moment.
Titre: Re : DCC++ EX
Posté par: dmskd le février 20, 2022, 10:54:28 am
Citer
Mais comme dit Dominique, DCC-EX avec oled consomme 90% de la mémoire sur les 328P (UNO, Nano, Mini, ...), ce qui laisse moins de place à la créativité.

Dans mon cas, dès le départ j'avais décidé de consacrer le Nano à la gestion du signal DCC pour éviter toute perturbation.
Le Nano ne fait donc que recevoir des commandes et générer le signal DCC correspondant. Tout autre traitement se fait sur un autre élément Arduino.
Titre: Re : DCC++ EX
Posté par: Dominique le février 20, 2022, 11:00:57 am
OK dmsk,

C'est aussi le cas dans mon architecture :
- une centrale dédiée pour programmer
- une centrale dédiée pour piloter, cette dernière étant entièrement commandée par le pius Can en plus des potentiomètres de vitesse, boutons et leds de direction, et panneau de configuration. Là le MEGA s'est avéré nécessaire.

https://forum.locoduino.org/index.php?topic=290.msg4005#msg4005 (https://forum.locoduino.org/index.php?topic=290.msg4005#msg4005)
Titre: Re : DCC++ EX
Posté par: Dominique le février 20, 2022, 02:07:08 pm
Pour le moment je teste dans la plus petite centrale possible, avec Oled 128*64, un encodeur et 3 boutons pour la configuration et les fonctions de contrôleur, une seule voie de 3A sur L6203, à brancher sur UNO ou MEGA. L'interface série-USB reste active avec une connexion sans fil possible par module radio, donc par des contrôleurs externes.

(https://forum.locoduino.org/index.php?action=dlattach;topic=1048.0;attach=4517;image)

Design du circuit by msport.
Titre: Re : DCC++ EX
Posté par: Dominique le février 22, 2022, 01:59:14 pm
Autre test sur un UNO : la qualité des timings des signaux DCC n'est pas nickel !

En utilisant le sniifer DCCInspector-EX sur ESP32, je trouve des écarts par rapport à la norme NMRA qui sont équivalents à ceux de LaBox sur ESP32.
Environ 20% de bits hors norme.
Cela n'empêche pas le fonctionnement des locos puisque les commandes sont répétées.

(https://forum.locoduino.org/index.php?action=dlattach;topic=1048.0;attach=4526;image)
Titre: Re : DCC++ EX
Posté par: Remi le mars 01, 2022, 05:28:44 pm
Bonjour à tous,
juste pour information, je reprends ici le sujet commencé sur un autre fil https://forum.locoduino.org/index.php?topic=843.msg14751#msg14751 (https://forum.locoduino.org/index.php?topic=843.msg14751#msg14751), car cela concerne directement DCC_EX  (Comparaison de lecture des CV entre DCCpp_uno et DCC_Ex).

Après avoir modifié le fichier de configuration de DCC_Ex (définition des pins entrée/sorties) pour devenir compatible avec le hardware de la carte Pololu comme dans les articles de locoduino https://www.locoduino.org/spip.php?article187 (https://www.locoduino.org/spip.php?article187), je peux maintenant poursuivre les essais de lecture des CV avec les 2 logiciels.

Le banc de test est composé d'un PC avec JMRI, une carte Mega avec le shield Pololu, une loco de test avec décodeur Marklin MLD/3, une seconde loco de test avec décodeur ESU V4, une lecture du courant d'alimentation de la carte Pololu, et une lecture de tension sur la broche M1FB et M2FB (Image du courant sur la voie principale et la voie de programmation).

Le principe du test est simple. Je charge DCCpp_Uno sur l'arduino et j'essaye de lire /détecter la nouvelle Loco avec JMRI. Ensuite, je charge DCC_EX et je recommence la lecture des CV.

Test 1 (DCCpp_Uno) : 
Décodeur Marklin : Pas de lecture du décodeur,  pas d'acquittement en retour (Stopping due to error, pas de confirmation loco (308) ).
Décodeur Esu-V4 : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI.

Test 2  (DCC_Ex) :
Décodeur Marklin : Pas de lecture du décodeur,  pas d'acquittement en retour (Stopping due to error, pas de confirmation loco (308) ).
Décodeur Esu-V4 : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI.

Dans la documentation DCC_Ex, la carte Polulu n'est pas recommandée pour la lecture des CV. La sensibilité de lecture du courant est donnée pour environ 500mV/A sur les broches M1FB et M2FB. Je décide de modifier la voie de programmation (M2FB) sur la carte Pololu en augmentant la résistance en sortie du miroir de courant. Je remplace la 220Ω par une 470Ω, soit à peu prés le double.
Je vérifie que cela fonctionne en traçant la courbe V (M2FB) en fonction du courant de l'alimentation. le résultat est:

I (ma) alimentation      18   160   250   683   780   915   1115
M1FB (mv) R = 220 Ω   0,1   1,36   21,9   262   314   390   502
M2FB (mv) R = 470Ω    0,1   2,74   39,3   537   651   810   1032

J'ai bien sur M2FB une tension en sortie du miroir de courant de l'ordre de 1V/A, soit une sensibilité double par rapport à la sortie M1FB qui n'est pas modifiée.  je reprends les tests comme précédemment.

Test 3 (DCCpp_Uno) : 
Décodeur Marklin : Pas de lecture du décodeur,  pas d'acquittement en retour (Stopping due to error, pas de confirmation loco (308) ).
Décodeur Esu-V4 : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI.

Test 4  (DCC_Ex) :
Décodeur Marklin : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI   :).
Décodeur Esu-V4 : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI.

Apparemment, pour la même configuration matérielle, il y a bien une différence de comportement entre DCCpp_Uno et DCC_Ex pour le même montage et avec les mêmes conditions de mesure.

Vue mes connaissances en informatique, je ne sais pas expliquer pourquoi, mais maintenant je peux lire les CV  (carte Pololu et DCC_EX) sur mes décodeurs Marklin qui bien que du matériel récent, etait non lisible avec DCCpp_Uno .

J'ai quand même réalisé une mesure relative pour essayer de comprendre la différence entre les 2 décodeurs même si le principe de mesure n'est pas très "déontologique". j'ai mesuré en mode Min/Max le pic de courant observé lors de la lecture des CV. Celui-ci est de 124ma pour le décodeur Esu et seulement de 68ma pour le décodeur Marklin. C'est peut être un début d'explication  :D.

Ce commentaire est simplement un constat, il sera peut être utile pour certains des lecteurs propriétaires d'une carte Pololu.

Banc de test :(http://)
Titre: Re : DCC++ EX
Posté par: bobyAndCo le mars 01, 2022, 10:09:49 pm
Je suis impressionné par la rigueur du test et très heureux d’avoir (enfin) un résultat positif. Je suis d’autant plus heureux que je viens d’acheter d’occasion une loco TRIX pour laquelle je n’arrive pas à lire les CVs alors que je n’avais jamais eu de problèmes jusque là avec les décodeurs TRIX (Marklin).

Par ailleurs, j’ai une configuration toute prête avec la carte Pololu et aussi une autre avec un LMD18200, il me sera assez facile de tester et d’essayer de corroborer ces résultats.

Par contre je ne comprends pas bien comment faire pour cela :


Je décide de modifier la voie de programmation (M2FB) sur la carte Pololu en augmentant la résistance en sortie du miroir de courant. Je remplace la 220Ω par une 470Ω, soit à peu prés le double.
Je vérifie que cela fonctionne en traçant la courbe V (M2FB) en fonction du courant de l'alimentation. le résultat est:

I (ma) alimentation      18   160   250   683   780   915   1115
M1FB (mv) R = 220 Ω   0,1   1,36   21,9   262   314   390   502
M2FB (mv) R = 470Ω    0,1   2,74   39,3   537   651   810   1032


Titre: Re : DCC++ EX
Posté par: Christian M le mars 01, 2022, 11:45:01 pm
Bonsoir,

je viens de tester sur une mega avec un moteur shield arduino basique -JMRI et sur "COM", sans modifications particulières par rapport à ce qu'il y déjà écrit sur le site, il est vrai que la lecture de CV et le fonctionnement est vraiment excellent sauf....... pour les décodeurs Laisdcc (kungfu) avec power pack, ou heureusement que j'avais des butoirs sinon je satellisais mes locos, bon ce sont de vieilles locos analogiques digitalisées à moindre frais, je suis tout de même arrivé à dompter ces décodeurs, ça devrait le faire...

est ce que quelqu'un a pu tester avec un moteur L9110S?? et si oui quelle config pour les Pins?

merci


Titre: Re : DCC++ EX
Posté par: Remi le mars 02, 2022, 10:25:21 am
Bonjour Christophe,

La mesure est effectué en 2 temps.
Une série de mesure sur la voie principale afin de relever la tension sur M1FB
Une série de mesure sur la voie de programmation afin de relever la tension sur M2FB
le montage de mesure est le suivant:
un ampèremètre placé en série dans l'alimentation de la carte Pololu me donne le courant consommé.
Un millivoltmètre pour la mesure de la tension d'abord sur M1FB, puis sur M2FB.
Un résistance de charge placé en sortie sur voie principale, puis sur voie programmation. Cette résistance de charge est composée de plusieurs résistances de puissance mise en série (ce que j'avais dans mes tiroirs), et  je me connecte à tous les points intermédiaires afin d'avoir plusieurs valeurs de charge.

L’alimention délivre en sortie une tension de l'ordre de 18V. le tableau précédent est complété par les différentes valeurs de R-charge.

Résistance Charge Ω    ∞    75      50      25     21,5  18,3  15
I (ma) alimentation      18    160    250    683   780   915   1115
M1FB (mv) R = 220 Ω   0,1   1,36   21,9   262   314   390   502
M2FB (mv) R = 470Ω    0,1   2,74   39,3   537   651   810   1032

Le premier point de ce relevé donne la consommation de la carte au repos, sans charge.

En souhaitant que cette explication aide à la compréhension de la méthode, n'hésite pas s'il y a d'autres questions.
A+  Rémi





Titre: Re : DCC++ EX
Posté par: msport le mars 02, 2022, 10:59:42 am
Bonjour,

il est normal que tous les stay-alive et autres power packs rendent la lecture des CV difficile, en effet les petits pics de courant qu'il faut lire sont absorbés (fournis). par les condensateurs ou les super caps. Il suffit (!) de débrancher ce dispositif le temps de la lecture.

Pour la carte moteur à L9110S, si DCC-EX a respecté DCC++ et comme il a prévu dans config.h
#define MOTOR_SHIELD_TYPE STANDARD_MOTOR_SHIELD par défaut
le câblage de l'article
https://www.locoduino.org/spip.php?article253 ,
repris de celui de l'article :
https://www.locoduino.org/spip.php?article187 
devrait convenir pour UNO ou MEGA.
Titre: Re : DCC++ EX
Posté par: Dominique le mars 02, 2022, 01:52:49 pm
Ne pas oublier que dans la configuration de DCC -EX il y a les pins du la carte moteur à déclarer et aussi les coefficients de la lecture du courant.
Titre: Re : DCC++ EX
Posté par: msport le mars 02, 2022, 03:10:07 pm
On peut vérifier dans MotorDrivers.h :

// MotorDriver(byte power_pin, byte signal_pin, byte signal_pin2, int8_t brake_pin, byte current_pin,
//             float senseFactor, unsigned int tripMilliamps, byte faultPin);
//
// If the brakePin is negative that means the sense
// of the brake pin on the motor bridge is inverted
// (HIGH == release brake)
//
// Arduino standard Motor Shield
#define STANDARD_MOTOR_SHIELD F("STANDARD_MOTOR_SHIELD"),                                                 \
                              new MotorDriver(3, 12, UNUSED_PIN, UNUSED_PIN, A0, 2.99, 2000, UNUSED_PIN), \
                              new MotorDriver(11, 13, UNUSED_PIN, UNUSED_PIN, A1, 2.99, 2000, UNUSED_PIN)

CommandStation-EX fonctionne avec Ma première centrale DCC -> https://www.locoduino.org/spip.php?article304
Titre: Re : DCC++ EX
Posté par: Christian M le mars 02, 2022, 03:47:59 pm
Bonjour,

Citer
il est normal que tous les stay-alive et autres power packs rendent la lecture des CV difficile, en effet les petits pics de courant qu'il faut lire sont absorbés (fournis). par les condensateurs ou les super caps. Il suffit (!) de débrancher ce dispositif le temps de la lecture.

Ok merci pour cette information, je fait le nécessaire à l'avenir, j'ai un banc d'essai je vais surement configurer le décodeur avant.


Citer
Pour la carte moteur à L9110S, si DCC-EX a respecté DCC++ et comme il a prévu dans config.h
ça aussi je vais tester et comme je suis sur ethernet, j'en profite pour faire un double test.

merci pour vos réponses et pour votre site, mon réseau avance tranquillement grâce à vos articles et vos cartes électroniques.

Bien à vous

Christian
Titre: Re : DCC++ EX
Posté par: bobyAndCo le mars 02, 2022, 06:33:36 pm
Bonsoir à tous,

Tout d'abord pour les stay alive, c'est connu et documenté. ESU par exemple à introduit un peu d'électronique pour isoler ses PowerPack lors de la  lecture de CV et recommande de "débrancher" le stay alive quand ils ne sont pas de sa marque et donc pas compatibles avec ses décodeurs.

Pour la lecture des CV, je m'étais mélangé les pinceaux dans mes configurations. A la longue, au travers de tous les tests réalisés, je fini par m'y perdre. Ma loco TRIX a acceptée de "cracher" ses informations et de se laisser modifier une fois que mes paramètres étaient bons !

La configuration :

Arduino Mega + DCC Ex + LMB18200 + INA190 (que je n'avais pas encore testé).

Toutes mes locos habituellement reconnues se laissent lire et écrire. Mon autorail Picasso Mistral X3800, refuse toujours la lecture et l'écriture.
Titre: Re : DCC++ EX
Posté par: Thierry le mars 12, 2022, 04:55:55 pm
J'ai moi aussi étudié un peu cette application, et je ne la trouve pas si mal.
Une branche de l'ancienne version 3.0 permet d'utiliser un ESP32... J'ai donc récupéré cette branche et fait en sorte que ça marche sur la carte LaBox. Et ça marche ! Enfin pas tout de suite parce que le postulat du fichier ino est que si aucun fichier config.h n'est présent, il prend celui fourni de config_example.h . Ca doit fonctionner sur un IDE tout neuf ou presque, mais sur nos machines très chargées en projets et librairies, il en trouve plus que nécessaire des fichiers config.h ! Une fois réglé ce problème via une moche modification (maintenant il cherche configaaaa.h !), ça fonctionne : le DCC (géré par RMT), Le Wifi en mode point d'accès, et même l'écran Oled, mais il affiche à l'envers... On peut pas tout avoir !
L'implémentation WiThrottle n'est pas parfaite. Avec EngineDriver elle marche un peu puis semble perdre la connexion. En tout cas j'ai pu déplacer ma loco en avant et arrière. Pour en faire plus, il faudra d'abord régler cette histoire de timeout qui perd la connexion parce que c'est pénible... Si vous avez pu tester sur un Mega/Wifi ou avec l'appli WiThrottle, est ce que ça fait la même chose ?
La partie lecture/écriture de CV a bien été mise à jour, mais je ne l'ai pas testée. Et il faudrait aussi regarder la conformité des timings DCC qui devraient être bien mieux avec RMT.
Titre: Re : DCC++ EX
Posté par: msport le mars 12, 2022, 08:39:28 pm
Chez moi erreur de compilation sur :
#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(4,2,0)
#error wrong IDF version
#endif

une mise à jour ou une installation à faire ?
Titre: Re : DCC++ EX
Posté par: Thierry le mars 12, 2022, 08:46:59 pm
Il y a une version 4.2.3 disponible, mais je n'ai pas l'impression de l'avoir installé. Dans l'IDE mon gestionnaire de carte parle d'un ESP32 2.0.2 d'Expressif systems...
Titre: Re : DCC++ EX
Posté par: msport le mars 12, 2022, 09:48:29 pm
On a bien la même référence : le git https://github.com/espressif/arduino-esp32 qui dit

Latest Stable Release 2.0.2 pour l'Arduino Core

mais là c'est l' ESP-IDF 4.2 dont il est question et le git en est au 4.4 .

comme je ne vois pas ce qu'il y a faire, je vais faire sauter le contrôle.
Titre: Re : DCC++ EX
Posté par: msport le mars 12, 2022, 10:18:33 pm
J'aurais du regarder plus haut, il y a un problème de bibliothèque à résoudre :
Error while detecting libraries included by C:\Users\miche\AppData\Local\Temp\arduino_build_905517\sketch\DCCRMT.cpp
Titre: Re : DCC++ EX
Posté par: Dominique le mars 12, 2022, 11:37:05 pm
Je n’ai rien pour tester avant 8 à 10 jours  :(

Faut-il l’esp-idf?
Titre: Re : Re : DCC++ EX
Posté par: Thierry le mars 13, 2022, 01:22:26 pm
Faut-il l’esp-idf?

Ben non puisque je ne l'ai pas, en tout cas je ne le trouve pas dans les applications installées, et que ça marche...
Titre: Re : DCC++ EX
Posté par: Thierry le mars 13, 2022, 06:26:33 pm
J'ai effectivement le problème lorsque je tente de compiler avec Platform.IO et Visual Studio Code, mais tout va bien si je compile avec l'IDE.
Titre: Re : DCC++ EX
Posté par: msport le mars 13, 2022, 09:35:50 pm
... j'ai inversé le test pour le neutraliser :

#if ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(4,2,0)
#error wrong IDF version
#endif

et ça compile et téléverse gentiment.

J"ai effectivement l'oled inversé mais pas de HMI, donc je ne sais pas ce que font les boutons.
Donc pas de lecture d'adresse. Je testerai via le serial.
Pas encore regardé le Wifi.
Par contre OK pour les commandes via le serial, ça roule donc.
Titre: Re : DCC++ EX
Posté par: Thierry le mars 14, 2022, 09:19:29 am
Oui, quand je dis que ça marche sur LaBox, c'est juste le CommandStationEx de base, sans aucune autre adaptation que les broches de pilotage et l'écran. Donc pas de HMI, pas de boutons, rien que le lien série et WiThrottle/EngineDriver.
J'essaie de faire en sorte que EngineDriver ne perde pas la connexion au bout de dix secondes, mais j'ai du mal. Une fois cela réglé, je brancherai un bouton sur une lecture de CV 1.
Titre: Re : DCC++ EX
Posté par: msport le mars 14, 2022, 11:27:16 am
Un petit passage au sniffer ...
Titre: Re : DCC++ EX
Posté par: msport le mars 14, 2022, 11:45:00 am
J'ai tenté ma chance avec <R 1 123 123>, on m"a répondu <r123|123|1 -2> Pas de mouvement.

et avec <r 1 123 123> :
<* Opcode=r params=3 *>
<* p[0]=1 (0x1) *>
<* p[1]=123 (0x7B) *>
<* p[2]=123 (0x7B) *>
<X>
Titre: Re : DCC++ EX
Posté par: msport le mars 14, 2022, 12:32:05 pm
Même punition : déconnexion d'Engine driver au bout d'une minute environ et tentative de reconnexion toutes les 100 ms.

Affichage de :  max locos atteint sur le smartphone.

Diagnostics joints.



Titre: Re : DCC++ EX
Posté par: Dominique le mars 14, 2022, 01:34:35 pm
Tu veux montrer qu’une commande sur 4 est conforme à la norme  NMRA ?

Cela rend rédhibitoire une lecture de CV qui demande plusieurs commandes DCC pour provoquer une réponse.

Pour le mouvement des machines, avec les répétitions, les commandes arrivent à passer à la longue.

Est-ce bien l’utilisation du RMT ?
Titre: Re : Re : DCC++ EX
Posté par: Dominique le mars 14, 2022, 01:46:27 pm
J'ai tenté ma chance avec <R 1 123 123>, on m"a répondu <r123|123|1 -2> Pas de mouvement.

Peux tu essayer avec le diagnostic ACK (voir doc) ?
<D ACK ON><R>
Titre: Re : DCC++ EX
Posté par: Dominique le mars 14, 2022, 02:32:56 pm
C’est pour ça qu’il faut lire la doc de DCC++ex : je l’ai fait (voir ma réponse #2).
Je vais regarder tout à l’heure (je ne m’en souviens plus).
C’est très important pour voir ce qui se passe.
Titre: Re : DCC++ EX
Posté par: Dominique le mars 14, 2022, 02:44:14 pm
Voir ici :
 https://dcc-ex.com/reference/software/diagnostic-d-ack-command.html?highlight=ack%20diagnostic (https://dcc-ex.com/reference/software/diagnostic-d-ack-command.html?highlight=ack%20diagnostic)

C’est <D ACK ON> puis <R>
Titre: Re : DCC++ EX
Posté par: Thierry le mars 14, 2022, 02:49:55 pm
A noter aussi que dans le .ino, la déclaration de la configuration matérielle avec les broches réclame aussi un facteur à appliquer pour la mesure de courant. J'ai laissé le facteur récupéré du copié/collé d'une autre déclaration, mais c'est très probablement à revoir...
Titre: Re : DCC++ EX
Posté par: Dominique le mars 14, 2022, 03:07:44 pm
Dans mes essais sur Uno j’ai essayé divers facteurs pour finalement garder ceux par défaut qui marchaient pour la lecture de CVs.
Mais je n’ai pas été fichu de lire la valeur du courant en cours de déplacement de la loco: la lecture que j’ai trouvée et affichée sur oled est restée fantaisiste.
Titre: Re : Re : DCC++ EX
Posté par: msport le mars 14, 2022, 07:19:25 pm
Voir ici :
 https://dcc-ex.com/reference/software/diagnostic-d-ack-command.html?highlight=ack%20diagnostic (https://dcc-ex.com/reference/software/diagnostic-d-ack-command.html?highlight=ack%20diagnostic)

C’est <D ACK ON> puis <R>

Si j'ai bien lu, c'est <D ACK ON> puis <R 1 1 1> qu'il faut utiliser pour lire l'adresse, le CV 1 :

J'ai obtenu la réponse correcte une fois et n'ai pu l'avoir de nouveau depuis :

<r1|1|1 -2>


Par contre au sniffer, j'ai maintenant un taux de paquets en erreur entre 5 et 10%.

Titre: Re : DCC++ EX
Posté par: Christian M le mars 15, 2022, 11:51:16 pm
Bonsoir,


Dcc++ EX sur la centrale   https://www.locoduino.org/spip.php?article253 (https://www.locoduino.org/spip.php?article253), testé sur un moteur shield L9110S, avec la déclaration des Pins de l'article pour carte Mega sachant que je n'ai pas de voie de programmation sur cette centrale
je créer la liste des locos et la programmation et j'importe et je l'exporte entre  deux centrale et deux config de JMRI

carte Mega, avec Ethernet connexion avec JMRI sur un ovale pour les test, cela marche impeccable. il me reste à régler le pb des Power pack de Laidcc sur mes vielles locos sinon ce n'est plus du modélisme ferroviaire, mais du modélisme spatial :D :D :D.

après des heures et des heures de lecture de vos articles et des tutos sur internet j'avance sur mon projet, Merci vraiment beaucoup messieurs pour vos articles merci à Dominique pour sa réponse lors de ma présentation, moi le chaudronnier, qui ne suis, ni informaticien ni électronicien ;D, l'étape suivante pour moi c'est la détection des locos sur les cantons grâce à votre PCB et votre article http://forum.locoduino.org/index.php?topic=558.msg8312#msg8312 (http://forum.locoduino.org/index.php?topic=558.msg8312#msg8312), j'ai reçu les PCB et les composants, pour l'instant je soude  :D
prochaine étape la gestion des servos moteurs pour les aiguillages, mais j'ai déjà commencé à bosser dessus, je ferai passer dans qq temps un montage d'impression 3D pour guider la corde à piano entre moteur et aiguille sous circuit, c'est en rodage pour l'instant je veux que le système soit sûr.
le projet est une gestion aller-retour de deux voies représentant un ligne en Hom entre le quartier de Trinquetaille à Arles (13) et les Salins de giraud, ligne ouverte en 1868 et fermée en 1957, cette ligne était en voie métrique.
je pense en avoir pour quelques mois, je continu à lire vos articles, je ne pense pas pouvoir être d'un grand support, mais ce qui est sûr c'est que vous l'êtes pour moi.
Avec toute ma reconnaissance
Cordialement
Christian


Titre: Re : DCC++ EX
Posté par: Dominique le mars 16, 2022, 09:19:53 am
Merci Christian pour ces chaleureux remerciements  ;D

Notre passion et le temps qu’on emploie à partager nos connaissances a bien servi et cela nous fait vraiment plaisir.

Juste pour la forme, au début cela concerne DCC++EX qui fonctionne : ce serait intéressant de partager votre Macro de déclaration des moteurs dans MotorDrivers.h, telle que (par exemple):
#define STANDARD_MOTOR_SHIELD F("STANDARD_MOTOR_SHIELD"),                                                 \
                              new MotorDriver(3, 12, UNUSED_PIN, UNUSED_PIN, A0, 2.99, 2000, UNUSED_PIN), \
                              new MotorDriver(11, 13, UNUSED_PIN, UNUSED_PIN, A1, 2.99, 2000, UNUSED_PIN)


Et enfin, tout ce qui concerne les capteurs n’est pas à traiter dans ce sujet, mais une présentation de votre projet global serait intéressante dans la rubrique “Vos Projets” .

Merci encore
Titre: Re : DCC++ EX
Posté par: Christian M le mars 16, 2022, 10:38:00 pm
Bonsoir,

Suite à mon message d'hier

Je n'ai pas créé de config.h, car s'il n’existe pas commandeStation-EX va chercher automatiquement config.example.h, c'est le fichier que j'ai modifié

#if __has_include ( "config.h")
  #include "config.h"
#else
  #warning config.h not found. Using defaults from config.example.h
  #include "config.example.h"
#endif

dans le fichier

config.example.h

mis en commentaire tout ce qui est en correspondance avec le WIFI
sauf
52 #define IP_PORT 2560et modifié,
107 #define ENABLE_ETHERNET true112 #define IP_ADDRESS { 192, 168, 1, 140 }adresse IP à 140 car ma box bloque par défaut à partir de 150 et je n'ai pas voulu changer les paramètres, c'est la même adresse IP que j'identifie dans JMRI

j'ai conservé et n'ai pas cherché à rajouter un L9110S même si cela devrait être plus propre et plus pro,

47#define MOTOR_SHIELD_TYPE STANDARD_MOTOR_SHIELD
Dans le fichier
motorDrivers.h bien celui avec le "s" à la fin de Drivers

ligne 49 pour une méga les paramètres des pins suivant:
#define STANDARD_MOTOR_SHIELD F("STANDARD_MOTOR_SHIELD"),                                                 \
                              new MotorDriver(3, 12, UNUSED_PIN, UNUSED_PIN, A0, 2.99, 2000, UNUSED_PIN), \
                              new MotorDriver(11, 2, UNUSED_PIN, UNUSED_PIN, A1, 2.99, 2000, UNUSED_PIN)// config d'origne MotorDriver(11, 13, UNUSED_PIN, UNUSED_PIN, A1, 2.99, 2000, UNUSED_PIN)
même si je n'ai pas de voie de programmation sur la ligne gérée sur Ethernet, j'ai mes 2 leds pour les deux voies qui s'éclairent lorsque je met mes voies sous tension avec JMRI.
je fonctionne pour l'instant avec un max471 mais lorsque je vais monter mon réseau je vais faire évoluer pour avoir un peu d'intensité sur ma ligne principale.

voilà pour les modifications pour Dcc++EX  sur mon système.
Je pense qu'on peut faire beaucoup mieux, je ne suis pas trés sûr de mon coup en programmation donc j'y vais par petites touches, mais le résultat c'est que ça marche.
pour finir. la centrale est connectée cablée en RJ45.
JMRI fonctionne sur un PC en WIFI

les essais avec le serveur WtThrottle de JMRI  et la commande des locos avec Engine Driver sur mon téléphone fonctionnent aussi
pour mon projet je ferai un petit récap dès que j'aurais avancé sur le réseau

Cordialement

Christian


Titre: Re : DCC++ EX
Posté par: Thierry le mars 17, 2022, 09:02:55 am
Petit essai après avoir rechargé mon vieil iPhone, ça ne semble pas couper le réseau avec WiThrottleLite, seulement avec EngineDriver...
Titre: Re : DCC++ EX
Posté par: Dominique le mars 17, 2022, 09:45:27 am
Est-ce que le driver RMT est utilisé pour générer le DCC ?
Sur ESP32.
Je ne vous pas bien dans quel fichier cela se voit !
Titre: Re : DCC++ EX
Posté par: Thierry le mars 17, 2022, 05:30:37 pm
Dans DCCWaveform.cpp, beaucoup d'appels à RMT...
Titre: Re : DCC++ EX
Posté par: Thierry le mars 18, 2022, 09:24:41 pm
Nouvelle version, cette fois avec EngineDriver qui ne se déconnecte pas, et qui fonctionne de concert avec WiThrottle...
Titre: Re : DCC++ EX
Posté par: Thierry le mars 20, 2022, 04:32:55 pm
Autre version, cette fois pour tester la lecture de CV. Pour l'instant, CommandStationEx ne sait que lire et écrire les CVs sur la voie de programmation qui n'est pas implémentée sur LaBox. J'ai donc paramétré le .ino pour n'avoir QUE la voie de programmation, et ajouté l'utilisation du bouton 'Select' pour activer le courant, lire la CV29, puis 1, et enfin couper le courant, ce que fait la fonction DCC::getLocoId(). C'est la fonction callback fournie en argument qui reçoit la valeur et l'affiche sur la console.
Titre: Re : DCC++ EX
Posté par: msport le mars 20, 2022, 09:40:07 pm
Bonsoir,

pour CommandStation-EX LaBoxProg.zip

même modification pour compiler
sur la même base matérielle que le précédent test :
le <1> sur le serial allume le DCC
mais aucun bouton n'a d'effet
et les commandes via le serial ne passent pas.
Titre: Re : DCC++ EX
Posté par: msport le mars 20, 2022, 10:09:02 pm
pour CommandStation-EX LaBox2.zip

même modification pour compiler
sur la même base matérielle que le précédent test :
la mise sous tension d'EngineDriver allume le DCC
les commandes de vitesse et de sens fonctionnent bien.
Il n'y a plus d'à-coups dans l'avancement comme auparavant
A-coups qui semblent subsister avec la commande via le serial (à petite vitesse).
Titre: Re : Re : DCC++ EX
Posté par: Dominique le mars 23, 2022, 07:49:58 pm
Autre version, cette fois pour tester la lecture de CV. Pour l'instant, CommandStationEx ne sait que lire et écrire les CVs sur la voie de programmation qui n'est pas implémentée sur LaBox. J'ai donc paramétré le .ino pour n'avoir QUE la voie de programmation, et ajouté l'utilisation du bouton 'Select' pour activer le courant, lire la CV29, puis 1, et enfin couper le courant, ce que fait la fonction DCC::getLocoId(). C'est la fonction callback fournie en argument qui reçoit la valeur et l'affiche sur la console.

Test essayé ce soir : echec avec une loco qui se laisse lire d'habitude
<* Button pressed ! Cv1 read on prog track. *>
<* Auto Prog power on *>
<* ACK baseline=82/245mA Threshold=102/304mA Duration between 4000us and 8500us *>
<* VB cv=19 value=0 *>
<* NO-ACK after 151mS max=121/361mA pulse=295uS samples=184 gaps=20 *>
<* VB cv=19 value=128 *>
<* NO-ACK after 149mS max=362/1082mA pulse=90183uS samples=152 gaps=7 *>
<* V0 cv=19 bit=7 *>
<* NO-ACK after 145mS max=166/496mA pulse=55uS samples=81 gaps=9 *>
<* V0 cv=19 bit=6 *>
<* NO-ACK after 148mS max=160/478mA pulse=84179uS samples=117 gaps=3 *>
<* V0 cv=19 bit=5 *>
<* NO-ACK after 145mS max=160/478mA pulse=1163uS samples=81 gaps=8 *>
<* V0 cv=19 bit=4 *>
<* NO-ACK after 147mS max=161/481mA pulse=81923uS samples=117 gaps=2 *>
<* V0 cv=19 bit=3 *>
<* NO-ACK after 147mS max=170/508mA pulse=130068uS samples=117 gaps=7 *>
<* V0 cv=19 bit=2 *>
<* NO-ACK after 149mS max=170/508mA pulse=76754uS samples=153 gaps=6 *>
<* V0 cv=19 bit=1 *>
<* NO-ACK after 148mS max=160/478mA pulse=102429uS samples=117 gaps=7 *>
<* V0 cv=19 bit=0 *>
<* NO-ACK after 149mS max=163/487mA pulse=68749uS samples=153 gaps=1 *>
<* VB cv=19 value=255 *>
<* NO-ACK after 143mS max=148/442mA pulse=115518uS samples=95 gaps=3 *>
<* V0 cv=29 bit=5 *>
<* NO-ACK after 147mS max=328/980mA pulse=0uS samples=117 gaps=0 *>
<* V0 cv=17 bit=7 *>
<* NO-ACK after 145mS max=147/439mA pulse=144791uS samples=81 gaps=10 *>
<* V0 cv=17 bit=6 *>
<* NO-ACK after 147mS max=160/478mA pulse=63246uS samples=117 gaps=4 *>
<* V0 cv=17 bit=5 *>
<* NO-ACK after 147mS max=304/908mA pulse=110484uS samples=117 gaps=5 *>
<* V0 cv=17 bit=4 *>
<* NO-ACK after 150mS max=352/1052mA pulse=120766uS samples=153 gaps=3 *>
<* V0 cv=17 bit=3 *>
<* NO-ACK after 147mS max=358/1070mA pulse=12657uS samples=117 gaps=8 *>
<* V0 cv=17 bit=2 *>
<* NO-ACK after 149mS max=272/813mA pulse=3500uS samples=153 gaps=7 *>
<* V0 cv=17 bit=1 *>
<* NO-ACK after 150mS max=263/786mA pulse=115uS samples=153 gaps=3 *>
<* V0 cv=17 bit=0 *>
<* ACK after 140mS max=301/899mA pulse=4058uS samples=55 gaps=9 *>
<* VB cv=17 value=254 *>
<* NO-ACK after 145mS max=139/415mA pulse=55uS samples=81 gaps=0 *>
<* LCD0:Retry 17 2 Sum=9 *>
<* ACK baseline=79/236mA Threshold=99/296mA Duration between 4000us and 8500us *>
<* VB cv=19 value=0 *>
<* NO-ACK after 151mS max=135/403mA pulse=455uS samples=184 gaps=8 *>
<* VB cv=19 value=128 *>
<* NO-ACK after 149mS max=141/421mA pulse=43667uS samples=153 gaps=2 *>
<* V0 cv=19 bit=7 *>
<* NO-ACK after 145mS max=140/418mA pulse=278uS samples=81 gaps=8 *>
<* V0 cv=19 bit=6 *>
<* NO-ACK after 147mS max=137/409mA pulse=31575uS samples=117 gaps=2 *>
<* V0 cv=19 bit=5 *>
<* NO-ACK after 145mS max=142/424mA pulse=110776uS samples=81 gaps=14 *>
<* V0 cv=19 bit=4 *>
<* NO-ACK after 147mS max=139/415mA pulse=56uS samples=117 gaps=1 *>
<* V0 cv=19 bit=3 *>
<* NO-ACK after 147mS max=201/600mA pulse=8580uS samples=117 gaps=9 *>
<* V0 cv=19 bit=2 *>
<* ACK after 8mS max=135/403mA pulse=8437uS samples=100 gaps=0 *>
<* V0 cv=19 bit=1 *>
<* NO-ACK after 147mS max=162/484mA pulse=76788uS samples=184 gaps=2 *>
<* V0 cv=19 bit=0 *>
<* NO-ACK after 149mS max=160/478mA pulse=714uS samples=153 gaps=7 *>
<* VB cv=19 value=251 *>
<* NO-ACK after 143mS max=157/469mA pulse=0uS samples=45 gaps=0 *>
<* V0 cv=29 bit=5 *>
<* NO-ACK after 148mS max=375/1121mA pulse=519uS samples=117 gaps=14 *>
<* V0 cv=17 bit=7 *>
<* NO-ACK after 145mS max=112/334mA pulse=115uS samples=81 gaps=1 *>
<* V0 cv=17 bit=6 *>
<* NO-ACK after 147mS max=148/442mA pulse=114uS samples=117 gaps=2 *>
<* V0 cv=17 bit=5 *>
<* NO-ACK after 147mS max=333/995mA pulse=114uS samples=117 gaps=16 *>
<* V0 cv=17 bit=4 *>
<* ACK after 47mS max=288/861mA pulse=5570uS samples=10 gaps=10 *>
<* V0 cv=17 bit=3 *>
<* NO-ACK after 147mS max=319/953mA pulse=17182uS samples=117 gaps=8 *>
<* V0 cv=17 bit=2 *>
<* NO-ACK after 150mS max=295/882mA pulse=55uS samples=153 gaps=8 *>
<* V0 cv=17 bit=1 *>
<* NO-ACK after 149mS max=305/911mA pulse=290uS samples=153 gaps=16 *>
<* V0 cv=17 bit=0 *>
<* NO-ACK after 151mS max=317/947mA pulse=114uS samples=189 gaps=9 *>
<* VB cv=17 value=239 *>
<* NO-ACK after 145mS max=129/385mA pulse=178uS samples=81 gaps=4 *>
<* LCD0:Retry 17 1 Sum=10 *>
<* ACK baseline=91/272mA Threshold=111/331mA Duration between 4000us and 8500us *>
<* VB cv=19 value=0 *>
<* NO-ACK after 151mS max=148/442mA pulse=8934uS samples=184 gaps=4 *>
<* VB cv=19 value=128 *>
<* NO-ACK after 149mS max=139/415mA pulse=179uS samples=152 gaps=2 *>
<* V0 cv=19 bit=7 *>
<* ACK after 48mS max=129/385mA pulse=7085uS samples=4 gaps=1 *>
<* V0 cv=19 bit=6 *>
<* NO-ACK after 147mS max=106/316mA pulse=0uS samples=117 gaps=0 *>
<* V0 cv=19 bit=5 *>
<* ACK after 82mS max=137/409mA pulse=7782uS samples=121 gaps=5 *>
<* V0 cv=19 bit=4 *>
<* NO-ACK after 147mS max=111/331mA pulse=0uS samples=117 gaps=0 *>
<* V0 cv=19 bit=3 *>
<* ACK after 87mS max=130/388mA pulse=7491uS samples=190 gaps=3 *>
<* V0 cv=19 bit=2 *>
<* NO-ACK after 150mS max=113/337mA pulse=55uS samples=23 gaps=0 *>
<* V0 cv=19 bit=1 *>
<* ACK after 80mS max=128/382mA pulse=6974uS samples=112 gaps=2 *>
<* V0 cv=19 bit=0 *>
<* NO-ACK after 150mS max=112/334mA pulse=115uS samples=153 gaps=0 *>
<* VB cv=19 value=85 *>
<* NO-ACK after 147mS max=158/472mA pulse=15202uS samples=117 gaps=5 *>
<* V0 cv=29 bit=5 *>
<* NO-ACK after 147mS max=309/923mA pulse=14057uS samples=117 gaps=5 *>
<* V0 cv=17 bit=7 *>
<* ACK after 77mS max=130/388mA pulse=7041uS samples=65 gaps=1 *>
<* V0 cv=17 bit=6 *>
<* NO-ACK after 147mS max=112/334mA pulse=55uS samples=117 gaps=0 *>
<* V0 cv=17 bit=5 *>
<* ACK after 83mS max=303/905mA pulse=7490uS samples=146 gaps=2 *>
<* V0 cv=17 bit=4 *>
<* NO-ACK after 149mS max=310/926mA pulse=14297uS samples=153 gaps=5 *>
<* V0 cv=17 bit=3 *>
<* NO-ACK after 147mS max=363/1085mA pulse=115uS samples=117 gaps=1 *>
<* V0 cv=17 bit=2 *>
<* NO-ACK after 150mS max=365/1091mA pulse=14160uS samples=153 gaps=1 *>
<* V0 cv=17 bit=1 *>
<* NO-ACK after 149mS max=312/932mA pulse=14461uS samples=153 gaps=7 *>
<* V0 cv=17 bit=0 *>
<* NO-ACK after 151mS max=370/1106mA pulse=14691uS samples=189 gaps=2 *>
<* VB cv=17 value=95 *>
<* ACK after 67mS max=128/382mA pulse=7730uS samples=211 gaps=6 *>
<* V0 cv=18 bit=7 *>
<* NO-ACK after 145mS max=313/935mA pulse=55uS samples=81 gaps=1 *>
<* V0 cv=18 bit=6 *>
<* NO-ACK after 145mS max=333/995mA pulse=22113uS samples=81 gaps=7 *>
<* V0 cv=18 bit=5 *>
<* NO-ACK after 147mS max=320/956mA pulse=14227uS samples=117 gaps=3 *>
<* V0 cv=18 bit=4 *>
<* NO-ACK after 148mS max=399/1193mA pulse=14460uS samples=117 gaps=3 *>
<* V0 cv=18 bit=3 *>
<* ACK after 7mS max=138/412mA pulse=6848uS samples=80 gaps=1 *>
<* V0 cv=18 bit=2 *>
<* NO-ACK after 147mS max=411/1228mA pulse=12202uS samples=156 gaps=0 *>
<* V0 cv=18 bit=1 *>
<* NO-ACK after 149mS max=307/917mA pulse=54uS samples=153 gaps=4 *>
<* V0 cv=18 bit=0 *>
<* NO-ACK after 150mS max=337/1007mA pulse=12702uS samples=153 gaps=5 *>
<* VB cv=18 value=247 *>
<* NO-ACK after 145mS max=97/290mA pulse=0uS samples=81 gaps=0 *>
<* Auto Prog power off *>
<* Callback(-1) *>
<* Loco id not found ! *>
J'ai eu le temps de capturer les écrans de l'inspector qui montre que les timings sont assez corrects en général, mais la liste des commandes doit être incomplète car l'inspector n'est vu dans Safari qu'avec quelques secondes de retard..

Avec une autre loco ce n'est pas mieux et elle arrive à faire 1/4 de tour de mon bout de réseau de test tellement il y a de commandes !!
Titre: Re : DCC++ EX
Posté par: Thierry le mars 26, 2022, 08:33:09 pm
Après quelques discussions avec Ash, responsable de la branche ESP32 de DCC++EX, et Steve Todd, createur de EngineDriver, sur l'opportunité de reporter les modifications faites par mes soins dans leur code pour faire marcher EngineDriver, voici la réponse de Ash:

Citer
@Trusty77 I see that you are using branch ESP32-Ash. I also had the problem. So I added your 5-line fix to exclude the heartbeat in my local copy. And it worked for me.

Keep in mind that ESP32-Ash is not ready for anything more than testing. I am told that the waveform is somewhat jittery, although I don't know how to confirm it. I made a few changes which eliminated the errors I saw with logic analyzer, and am able to reliably read CVs. I'd suggest you join the discussion on discord where we can discuss your implementation, etc.: https://discord.gg/PuPnNMp8Qf

Perhaps Steve will see something in your log. He is also on discord.

Current path forward on ESP32 development will include testing with Engine Driver, so that there is no disconnect/reconnect problem.

Ou si je traduis :

Citer
Je vois que vous utilisez la branche ESP32-Ash. J'ai aussi le problème. J'ai ajouté vos modifications pour exclure le heartbeat (fonction interne qui vérifie à intervalle régulier que la Throttle est toujours connectée) de ma copie locale. Et pour moi ça marche.

Gardez à l'esprit que ESP32-Ash n'est pas pour faire autre chose que du test. On m'a dit que la forme du DCC était un peu flottante, bien que je ne puisse le confirmer. J'ai fait quelques changements pour éliminer les erreurs vues par mon analyseur logique, et suis capable de lire des CV d'une manière fiable.  Je vous suggère de rejoindre Discord où nous pourrions discuter de votre implémentation, etc.

Peut être Steve verra t-il quelque chose dans votre log (je leur ai envoyé un fichier log qui montre les déconnections d'EngineDriver...). Il est aussi sur Discord.

Le travail en cours vers une version ESP32 inclura des tests avec EngineDriver, aussi il n'y aura plus de problèmes de déconnection/reconnection.

Plutôt de bonnes nouvelles.
Titre: Re : Re : DCC++ EX
Posté par: Juan le juin 10, 2022, 09:22:09 am
Pour le moment je teste dans la plus petite centrale possible, avec Oled 128*64, un encodeur et 3 boutons pour la configuration et les fonctions de contrôleur, une seule voie de 3A sur L6203, à brancher sur UNO ou MEGA. L'interface série-USB reste active avec une connexion sans fil possible par module radio, donc par des contrôleurs externes.

(https://forum.locoduino.org/index.php?action=dlattach;topic=1048.0;attach=4517;image)

Design du circuit by msport.

Pourriez-vous télécharger sur le forum le sketch correspondant pour charger dans la centrale minimale ave arduino Uno ?
Titre: Re : DCC++ EX
Posté par: msport le juin 10, 2022, 12:44:59 pm
Bonjour,

je ne pense pas qu'il ait eu d'autres sketches que CommandStation-EX LaBox2.zip :

https://forum.locoduino.org/index.php?topic=1048.msg15149#msg15149

Le team DCCpp-EX ne semble pas intéressé par les propositions de Thierry.
Titre: Re : DCC++ EX
Posté par: Juan le juin 10, 2022, 01:03:52 pm
Et cette version s'adapte-t-elle à un Arduino Uno ? Telle est la question.
Titre: Re : Re : DCC++ EX
Posté par: Juan le juin 10, 2022, 01:22:56 pm
Pour le moment je teste dans la plus petite centrale possible, avec Oled 128*64, un encodeur et 3 boutons pour la configuration et les fonctions de contrôleur, une seule voie de 3A sur L6203, à brancher sur UNO ou MEGA. L'interface série-USB reste active avec une connexion sans fil possible par module radio, donc par des contrôleurs externes.
Plus précisément, ce que je recherche, c'est la version DCC-EX de Dominique qui s'adapte à la UNO+Carte Va et vient avec Oled et encodeur.
Titre: Re : DCC++ EX
Posté par: Dominique le juin 10, 2022, 01:26:56 pm
Je vais rechercher…
Titre: Re : DCC++ EX
Posté par: UKBloke le août 20, 2022, 06:22:36 pm
Dear Locoduino Friends,

Please allow me to apologize for writing in English. I'm sure Google Translate will do a better job than my school French from 55 years ago.

I have taken the liberty of reading your DCC++EX discussions with interest as I am the person responsible for the initial design of DCC++EX (now called DCC-EX).

I can see from the discussions above that there are a few misunderstandings about the differences between DCC++ and DCC-EX and therefore also with Locoduino.

In no particular order:

1) we have managed to resolve the Withrottle timeout issues. We were interested in Thierry's fix but we realized that this did not solve the problem for all processors and was specific to a particular problem in our ESP32 experiments.

2) DCC-EX works best on a Mega or better as we have so much to offer that will not reasonably fit on a UNO either for PROGMEM or RAM. However there are a number of DCC-EX features which do add considerably to a UNO environment.
For example:
   - Reading CVs and program track actions do not block throttles on the main track.
   - CV reading diagnostics are available (as you have seen) that allow us to discover why certain decoders cause problems and we have commands to tune the ACK algorithm to handle out-of-spec decoders.
   - We have high-level program commands such as <R> which will detect the address that can be used to drive a loco. This may come from a consist, a long address or short address. We also have a <W locoid> command that will also manage the long/short address issue.
   - We manage PROG track power automatically, and we allow the PROG track to be automatically joined to the main track (perhaps as a siding) so you can drive a loco from the prog track onto the main track.

3)  We issue function reminders and have new commands that make functions easier to invoke.
 
4) Our DCC signal generation on nano/uno/mega uses hardware timers for high accuracy by default on a Mega and can be achieved with configuration and jumpers on a UNO.


5) We ae currently working on ESP32 and other processors. Sometimes this is not easy because the newer processors introduce additional hardware signal generation techniques that are wildly incompatible and sometimes much harder to use than the  basic AVR processors.
Strangely, the faster processors are often less able to generate high quality signals from portable code.

6) We also have EXRail, which provided a vast range of automation possibilities without having to learn C++ or Arduino environment. Our latest builds are able to do some of this on a UNO.       

If you do have problems or wish to discuss DCC-EX with those of us who wrote it, or you would like to contribute your expertise, please join our Discord group (invitation on the website) where you may write in any language and we will do our best to help.

Best Regards,
 Chris Harlow  On Discord as UKBloke (AKA Chris)
   
Titre: Re : DCC++ EX
Posté par: msport le août 21, 2022, 04:09:26 pm
Hi Chris,

it is a good practice to write in english, so we can check that what we undersatnd complies with what you write.
Chrome is a reasonable translator and I post its translation hereunder. (with small improvements)

Moreover, thankyou for sharing and post an overview of the DCC-EX development and focus on EXRail.


Chers amis de Locoduino,

Permettez-moi de m'excuser d'avoir écrit en anglais. Je suis sûr que Google Translate fera un meilleur travail que mon français scolaire d'il y a 55 ans.

J'ai pris la liberté de lire vos discussions DCC++EX avec intérêt car je suis la personne responsable de la conception initiale de DCC++EX (maintenant appelé DCC-EX).

Je peux voir d'après les discussions ci-dessus qu'il y a quelques malentendus sur les différences entre DCC++ et DCC-EX et donc aussi avec Locoduino.

Sans ordre particulier :

1) nous avons réussi à résoudre les problèmes de délai d'attente Withrottle. Nous étions intéressés par le correctif de Thierry mais nous avons réalisé que cela ne résolvait pas le problème pour tous les processeurs et était spécifique à un problème particulier dans nos expériences ESP32.

2) DCC-EX fonctionne mieux sur un Mega ou mieux car nous avons tellement à offrir qui ne s'adaptera pas raisonnablement sur un UNO que ce soit pour PROGMEM ou RAM. Cependant, il existe un certain nombre de fonctionnalités DCC-EX qui ajoutent considérablement à un environnement UNO.
Par exemple :
   - La lecture des CV et le programme des actions de voie ne bloquent pas les manettes sur la voie principale.
   - Des diagnostics de lecture de CV sont disponibles (comme vous l'avez vu) qui nous permettent de découvrir pourquoi certains décodeurs causent des problèmes et nous avons des commandes pour régler l'algorithme ACK pour gérer les décodeurs hors spécifications.
   - Nous avons des commandes de programme de haut niveau telles que <R> qui détecteront l'adresse qui peut être utilisée pour conduire une locomotive. Cela peut provenir d'une unité multiple, d'une adresse longue ou d'une adresse courte. Nous avons également une commande <W locoid> qui gérera également le problème des adresses longues/courtes.
   - Nous gérons automatiquement la mise sous tension de la voie PROG, et nous permettons à la voie PROG d'être automatiquement jointe à la voie principale (peut-être en tant que voie d'évitement) afin que vous puissiez conduire une locomotive de la voie prog à la voie principale.

3) Nous émettons des rappels de fonction et avons de nouvelles commandes qui facilitent l'appel des fonctions.
 
4) Notre génération de signal DCC sur nano/uno/mega utilise les timers matériels pour une grande précision par défaut sur un Mega et peut être obtenue avec une configuration et des cavaliers sur un UNO.


5) Nous travaillons actuellement sur ESP32 et d'autres processeurs. Parfois, ce n'est pas facile car les nouveaux processeurs introduisent des techniques de génération de signaux matériels supplémentaires qui sont extrêmement incompatibles et parfois beaucoup plus difficiles à utiliser qu'avec les processeurs AVR de base.
Étrangement, les processeurs les plus rapides sont souvent moins capables de générer des signaux de haute qualité à partir de code portable.

6) Nous avons également EXRail, qui offre une vaste gamme de possibilités d'automatisation sans avoir à apprendre l'environnement C++ ou Arduino. Nos dernières versions sont capables de faire une partie de cela sur un UNO.       

Si vous rencontrez des problèmes ou souhaitez discuter de DCC-EX avec ceux d'entre nous qui l'ont écrit, ou si vous souhaitez apporter votre expertise, veuillez rejoindre notre groupe Discord (invitation sur le site Web) où vous pouvez écrire dans n'importe quelle langue et nous ferons de notre mieux pour vous aider.

Cordialement,
 Chris Harlow On Discord en tant que UKBloke (AKA Chris)
Titre: Re : DCC++ EX
Posté par: Dominique le août 22, 2022, 07:05:04 pm
Dear Chris,

I thank you very much for this presentation of important features of DCC-EX which point out the recent progresses. This project is a big team project which is substantially complex to address various processors. I already registered on Discord to have a good vision of this great project. Thanks again to share it with Locoduino.

Avec une traduction en français en italique:
Je vous remercie beaucoup pour cette présentation de DCC-EX qui rappelle les progrès récents et les caractéristiques importantes. Ce projet est un grand projet d'équipe qui est considérablement complexe pour traiter différents processeurs. Je me suis déjà inscrit sur Discord pour avoir une bonne vision de ce super projet. Merci encore de le partager avec Locoduino

We have mainly 2 low cost DCC boards with PCBs and a simple process to build and use them : LaBox and the minimal motor shield which is described here :
 https://www.locoduino.org/spip.php?article311 (https://www.locoduino.org/spip.php?article311).
The minimal board can use a Uno or a Mega and I agree that the Mega is more open to various fonctions than the Uno. For example, I plan to build a simple CV programmer with a smart Oled user interface, due to the better capabilities is DCC-EX. But the managment of the UI is complex and impossible with a Uno.

With LaBox, we have an ESP32 and simple but efficient UI and a Can interface for functions distributions on the Can bus.
We think that LaBox is a good candidate for DCC-EX and we would know if you plan to use it in the future.

Nous avons principalement 2 cartes DCC avec des PCB et un processus simple pour les construire et les utiliser : LaBox et la carte moteur minimale qui est décrit ici :
 https://www.locoduino.org/spip.php?article311 (https://www.locoduino.org/spip.php?article311).
La carte moteur minimale peut utiliser un Uno ou un Mega et je suis d'accord que le Mega est plus ouvert à diverses fonctions que le Uno. Par exemple, je prévois de construire un programmateur de CV simple avec une interface utilisateur sur Oled, en raison des meilleures performances de DCC-EX. Mais la gestion de l'UI est complexe et impossible avec une Uno.

Avec LaBox, nous avons un ESP32 et une interface utilisateur simple mais efficace et une interface Can pour les distributions de fonctions sur le bus Can.
Nous pensons que LaBox est un bon candidat pour DCC-EX et nous aimerions savoir si vous envisagez de l'utiliser à l'avenir.


I and Thierry will go into further details of your post in an near future.

Best regards
Dominique

Titre: Re : DCC++ EX
Posté par: Juan le décembre 05, 2022, 06:09:12 pm
Bon après-midi,
Je viens de préparer une centrale avec la carte Va-et-vient (avec Oled 128*64, un encodeur et 3 boutons pour la configuration et les fonctions de contrôleur, une seule voie de 3A sur L6203) à monter sur une carte Mega. Et je voudrais essayer avec le DCC-EX. Quel logiciel recommandez-vous ?
Merci beaucoup,
Juan
Titre: Re : DCC++ EX
Posté par: msport le décembre 05, 2022, 06:32:10 pm
Bonsoir,

DCC-EX a mis à disposition une déclinaison de la BaseStation de DCC++ : EX-CommandStation
https://dcc-ex.com/reference/software/command-reference.html

que l'on peut télécharger là :
https://dcc-ex.com/download/ex-commandstation.html

J'avoue que j'ai un peu de mal à suivre et que je n'ai pas testé.

Titre: Re : DCC++ EX
Posté par: Juan le décembre 05, 2022, 07:27:42 pm
Merci, Michael.
Mais je pensais à une version de DCC-EX adaptée à la carte Va et Vient, pour profiter de l'encodeur et des boutons poussoirs.
Titre: Re : DCC++ EX
Posté par: Dominique le décembre 05, 2022, 08:57:13 pm
J’ai bien fait tourner DCC-EX sur la carte va-et-vient, mais je n’ai pas pu me servir de l’Oled, l’encodeur et les boutons.

Pensez-vous pouvoir faire le développement ?
Titre: Re : Re : DCC++ EX
Posté par: msport le décembre 06, 2022, 10:36:42 am
Merci, Michael.
Mais je pensais à une version de DCC-EX adaptée à la carte Va et Vient, pour profiter de l'encodeur et des boutons poussoirs.

On peut s’inspirer de la version adaptée à LaBox, mais ça dépasse mes compétences de la modifier.

https://forum.locoduino.org/index.php?topic=922.msg15959#msg15959
Titre: Re : DCC++ EX
Posté par: Juan le décembre 06, 2022, 11:32:31 am
Citer
Pensez-vous pouvoir faire le développement ?
Uuufff, je trouve cela très difficile Dominique. Ma connaissance de la programmation Arduino se limite à la modification et à l'adaptation d'autres programmes.
Avec votre aide, je pourrais essayer de faire quelque chose, comme le suggère Michael, en partant de la version LaBox...
Mais je pense qu'il faudrait d'abord connaître la fonction de l'encodeur et des boutons-poussoirs. Bien que je pense que l'un d'eux devrait être le bouton on/off. Je pourrais commencer à faire des tests, pour voir si je peux apprendre comment "envoyer/recevoir" les codes <1> et <0> dans le même sketch .ino !
Le truc de l'encodeur est plus difficile pour moi (encore !).
Quant à l'écran Oled, il fonctionne déjà, c'est automatique lors de l'installation de la CommandStation-EX !
(http://)
Titre: Re : DCC++ EX
Posté par: Juan le décembre 07, 2022, 11:50:01 am
Premiers essais, premiers échecs. Comment dois-je modifier le config.h pour l'adapter à mon centrale : Arduino Mega avec L6203 ?