LOCODUINO

Parlons Arduino => Vos projets => Discussion démarrée par: lebelge2 le juillet 18, 2024, 01:37:43 pm

Titre: Upgrade de La Box pour compatibilité RailCom.
Posté par: lebelge2 le juillet 18, 2024, 01:37:43 pm
Bonjour.

Pour les détenteurs de la centrale DCC nommée : La Box, une légère modification hardware et software est possible pour la rendre compatible RailCom.

Les trames DCC produites par l’ESP32 sont d’une très grandes précisions grâce au module RMT.
Le CutOut est généré très précisément 29µs après le bit de stop.

Modification hardware.

La Box utilise un L6203 comme driver.
L’entrée IN1 reçois le signal DCC et l’entrée IN2 reçois le signal DCC inversé.
Les concepteurs de La Box ont utilisé un transistor pour inverser le signal, or ce signal inversé est disponible notamment sur la pin n°27 de l’ESP32.
On simplifie le montage en supprimant T1, R1, R2.  et relier la Pin n°27 à IN2. (voir schéma modifié et photo)

Modification software.

-   Créer le symbole RMT du CutOut et l’insérer dans la trame.
-   Utiliser un Timer en mode scheduler pour adapter les signaux de sorties.

Les fichiers suivants sont à modifier ou à remplacer :

-   CommandStation-EX-LaBox.ino
-   DCCPRMT.cpp
-   DCCPRMT.h
-   config.h

Toute la doc. pour upgrader votre Box se trouve sur mon GitHub :

https://github.com/Lebelge2/Upgrade-La-Box
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: CATPLUS le juillet 18, 2024, 02:40:11 pm
Bonjour Mr Lebelge 2

Bravo & merci de cette upgrade.

Cordialement
Marcel

Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Dominique le juillet 18, 2024, 03:44:49 pm
Merci Lebelge2
Il me reste 1 ou 2 circuits imprimés non équipés. J’espère tester prochainement cette modification.

As-tu contacté les développeurs de DCC-EX sur Discord pour leur soumettre cette modification du RMT ?
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: lebelge2 le juillet 18, 2024, 11:00:19 pm
Dominique, la modif CutOut est postée sur le forum de DCC-EX, ça a l'air d'intéresser d'autres personnes et demande de modif pour le LMD18200T
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Dominique le juillet 19, 2024, 06:18:33 pm
Bonsoir lebelge2,

Pourrais-tu me donner le lien vers le forum DCC-EX qui traite du sujet (Railcom et cutout), source de ta publication sur Github et de cette contribution.

J’en était resté à un abandon du Railcom sur ESP32 par l’équipe DCC-ex, mais j’avoue que je n’ai pas suivi leurs discussions sur discord depuis un bon moment.

En tout cas merci d’avoir déniché ça 🎉

Cette évolution “purement” logicielle, en complément de la suppression du transistor inverseur et l’utilisation de la pin io27 de l’esp32, rend complètement obsolète l’intégration d’un ATtiny proposée par ailleurs.

D’où l’importance de tester à fond puis de faire une mise à niveau des articles  sur LaBox après intégration et validation.

Qu’en pense Thierry ?
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Brunotoutsimple le juillet 19, 2024, 08:56:00 pm
Merci @lebelge2 pour cet excellent travail.
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: lebelge2 le juillet 20, 2024, 02:36:57 pm
Dominique; Tu devrais rentrer dans le forum et ton compte avec ce lien:
https://discord.com/channels/@me
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Dominique le juillet 20, 2024, 06:10:56 pm
Ok j’ai un compte.
J'ai vu ta question d'hier "Good morning . I inserted the CutOut into the DCC RMT frames for RailCom. I would like to show it to you. Do you agree ?
See my GitHub:
https://github.com/Lebelge2/Upgrade-La-Box"

Mais je ne vois pas de réponse des gars de DCC-EX (peut-être Mike d'Atanysoft, mais je ne comprend pas tout).

Je comprends donc que c'est toi qui a trouvé cette implémentation du cutout, pas les gars de DCC-EX. Si oui bravo, bravo 👍
Me trompe-je ?
Titre: Re : Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Thierry le juillet 24, 2024, 08:49:37 am
D’où l’importance de tester à fond puis de faire une mise à niveau des articles  sur LaBox après intégration et validation.

Qu’en pense Thierry ?

Effectivement, ça mérite de mettre à jour le soft, peut etre le hard, et les articles pour que tout soit clair. J'attends juste la validation du bon fonctionnement par des gens équipés Railcom comme Christophe, Marcel ou toi, et je ferai une nouvelle version Labox avec les modifications.
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: bobyAndCo le août 06, 2024, 07:41:39 pm
Bonsoir à tous,

Dominique m'a envoyé de quoi réaliser une nouvelle laBox selon les modifications préconisées par leBelge.

J'ai pu tester quatre locos, dont une avec adresse longue et je vous confirme que cela fonctionne !

Bravo tout d'abord à leBelge ! Et je pense que beaucoup d'entre nous attendions cela avec intérêt. Cela va en particulier débloquer d'autres projets comme celui des satellites autonomes avec le pilotage en CAN.

Je pense que cela devrait aussi relancer la modification du PCB pour pouvoir disposer des toutes nouvelles versions.

Y a plus qu'à.

Christophe
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: bobyAndCo le août 07, 2024, 10:01:02 am
L'analyse des trames DCC générées pas le montage de Lebelge se révèle à mons sens favorable avec environ 7% de trames hors spécification NMRA. Certe avec un DCC-Ex "natif", 100% des trames sont dans les clous. A titre de comparaison, la centrale que j'avais réalisée avec le Railcom avait environ 25% des trames hors spécification et pourtant, toutes les locomotives fonctionnaient parfaitement.
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: laurentr le août 07, 2024, 12:04:26 pm
Bonjour

Excellente nouvelle!
Peut être même que les 7/100 sont encore challengeables en ajustant certains des timings?

A défaut c est déjà opérationnel.

Ltr
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Dominique le août 07, 2024, 12:07:39 pm
a quoi correspond le tableau dcc-sniffer3 ?

Peut-être que le 522 bit > 140 µS correspondent aux cutout qui durent plusieurs stops et la perte de synchro bit qui va avec ?
Ca correspond à peu près aux 488 paquets valides détectés, avec quelques bits de plus sans doute parce que le sniffer ne détecte pas les cutouts
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: bobyAndCo le août 07, 2024, 12:12:14 pm
Grosso modo le tableau 2 montre les trames autour de 56us (bit1) et le troisième tableau autour de 100us (bit 0)
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Thierry le août 09, 2024, 09:12:52 pm
Une branche 'Labox-Railcom' a été créée sur Github, et les modifications Railcom sont poussées. J'y ai apporté ma touche personnelle, surtout pour isoler toute la partie Railcom dans un Railcom.cpp accompagné d'un Railcom.h . De nouveaux define sont apparus dans config.h pour utiliser Railcom (ENABLE_RAILCOM) et pour en configurer les broches. Ca compile avec ou sans Railcom, mais je n'ai pas testé le fonctionnement. J'espère ne pas avoir fait de bétises...
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: bobyAndCo le août 09, 2024, 09:31:32 pm
@Thierry, je vais tester ton code sans doute avant la fin du WE et je te redis.

Merci à tous pour le travail réalisé

Christophe
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: lebelge2 le août 11, 2024, 12:47:49 am
Bonjour.
Il y a quelques lignes à ajouter ou modifier     (Voir les commentaires : Ajouté ou Modifié)
(Les deux premières corrections sont indispensables si on n'utilise pas RailCom  //#define ENABLE_RAILCOM)

-  Dans le fichier : config.h       (écrire 27 au lieu de UNUSED_PIN)
#define LABOX_MAIN_MOTOR_SHIELD F("LABOXMAIN"), \
 new MotorDriver(32, 33, 27, UNUSED_PIN, 36, 0.80, 2500, UNUSED_PIN)        // Modifié

#define LABOX_PROG_MOTOR_SHIELD F("LABOXPROG"), \
 NULL, \
 new MotorDriver(32, 33, 27, UNUSED_PIN, 36, 0.80, 2500, UNUSED_PIN)        // Modifié

-  Dans le fichier: DCCRMT.cpp
RMTChannel::RMTChannel(pinpair pins, bool isMain) {
  byte ch;
  byte plen;
  byte dp;                                                                  // * Ajouté
  if (isMain) {
    ch = 0;
    plen = PREAMBLE_BITS_MAIN;                                    // 16
  } else {
    ch = 2;
    plen = PREAMBLE_BITS_PROG;                                    // 22
  }

  // preamble
  preambleLen = plen + 2; // plen 1 bits, one 0 bit and one EOF marker
  preamble = (rmt_item32_t*)malloc(preambleLen * sizeof(rmt_item32_t));
  dp = 0;                                                                        // * Ajouté
#ifdef ENABLE_RAILCOM
  dp = 1;                                                                        // * Ajouté
  setDCCBitCutOut(preamble);                                    // * Symbole CutOut
#endif
  for (byte n = dp; n < plen; n++)                                  // * Modif
    setDCCBit1(preamble + n);       // preamble bits

-  Dans le fichier:    Railcom.cpp
void IRAM_ATTR timer_isr_CutOut() {
  p++;
  switch (p) {
    case 1:
      break;
    case 2:
      gpio_matrix_out(RAILCOM_PININV, 0x100, false, false);                   
      gpio_set_level(RAILCOM_PININV, 1);                                         
      break;
    case 3:
      gpio_matrix_out(RAILCOM_PININV, RMT_SIG_OUT0_IDX + rmt_channel, true, false);   
      gpio_matrix_out(RAILCOM_PIN, RMT_SIG_OUT0_IDX + rmt_channel, true, false);   
      break;
    default:
      gpio_set_level(RAILCOM_PIN, 1);                                         // * Ajouté
      gpio_matrix_out(RAILCOM_PIN, RMT_SIG_OUT0_IDX + rmt_channel, false, false);   
      timerAlarmWrite(TimerCutOut, 160, false);                             
      break;
  }
}
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Thierry le août 11, 2024, 09:54:08 am
Corrections poussées dans la version 2.5.1 .
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: bobyAndCo le août 11, 2024, 10:25:02 am
Bon, je venais juste de faire le test de la version que tu as publiée le 9 aout. Pourtant tout fonctionnait bien avec !!!

Je vais donc charger la nouvelle version.

Qu'apporte- t'elle de plus ???

Christophe
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Thierry le août 11, 2024, 10:57:30 am
Juste les corrections demandées plus haut, qui permettent notamment de fonctionner correctement si le Railcom n'est pas activé. Les autres corrections concernent la génération du signal qui ne devait pas être optimal et pour lesquelles je laisserai lebelge répondre.
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: lebelge2 le août 11, 2024, 10:58:35 am
Tout fonctionne correctement si on utilise RailCom

Si on coupe RailCom ( //#define ENABLE_RAILCOM), il y a un grave dysfonctionnement.

Vu les corrections mais manque toujours celle-ci dans fichier :
 config.Labox.h    (écrire 27 au lieu de UNUSED_PIN)
#define LABOX_MAIN_MOTOR_SHIELD F("LABOXMAIN"), \
 new MotorDriver(32, 33, 27, UNUSED_PIN, 36, 0.80, 2500, UNUSED_PIN)        // Modifié

#define LABOX_PROG_MOTOR_SHIELD F("LABOXPROG"), \
 NULL, \
 new MotorDriver(32, 33, 27, UNUSED_PIN, 36, 0.80, 2500, UNUSED_PIN)        // Modifié



Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: bobyAndCo le août 11, 2024, 11:07:26 am
Bon, pour ce qui me concerne, c'est à dire avec ENABLE_RAILCOM, je confirme que le lis bien les adresses (4 locos testées) que le comportement des loco est parfait et que le sniffer DCC me donne environ 5% de trames hors spécification ce qui me semble très satisfaisant.

J'ai passé la moitié de la matinée à me mélanger les pinceaux avec les différentes versions, maintenant je pars à la plage, il fait déjà 28° !

Christophe
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Thierry le août 11, 2024, 11:36:59 am
Et je viens de pousser la modif de config.labox.h . J'avais bien fait la modif dans mon config.h et j'ai zappé la version labox...
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Dominique le août 11, 2024, 04:54:46 pm
Mais est-ce que j’ai bien compris dans la version 2.5.1 (dernière) ?:
1) soit on est en mode RAILCOM et alors il faut utiliser la GPIO27 connectée au IN2 du L6203, ça c’est clair.

2) soit on n’est pas en mode RAICOM et il y a 2 cas de figure :
-a- le cas où la GPIO27 est connectée au IN2 du L6203 (evolution à faire du PCB)
-b- le cas où le IN2 est relié à l’inverseur à transistor (version 2c3 actuelle du PCB)

Dans quel cas 2a ou 2b la version 2.5.1 fonctionne ?
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: lebelge2 le août 11, 2024, 06:19:58 pm
Les deux cas fonctionneront.
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: CATPLUS le août 12, 2024, 07:07:39 am
Bonjour
Vous pourriez svp donner le raccourcis pour accéder au programme.
Titre: Re : Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Brunotoutsimple le août 12, 2024, 07:52:17 am
Bonjour
Vous pourriez svp donner le raccourcis pour accéder au programme.
Bonjour
Voici le liens:
https://github.com/Locoduino/CommandStation-EX-LaBox/tree/Labox-Railcom (https://github.com/Locoduino/CommandStation-EX-LaBox/tree/Labox-Railcom)
Titre: Re : Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Dominique le août 12, 2024, 03:36:21 pm
Et je viens de pousser la modif de config.labox.h . J'avais bien fait la modif dans mon config.h et j'ai zappé la version labox...

Petits détails mineurs (du genre tétracapilosectomie !) :

Je viens de compiler cette dernière version sans fichier "config.h" pour voir si le fichier "config.labox.h" est utilisé à la place.
Je n'ai aussi changé aucune option de cette configuration, donc avec Railcom et en mode AP (WIFI_FORCE_AP true) avec le SSID "Labox" et password "YourPassword" parceque je trouve que c'est le meilleur jeu d'options possible pour quelqu'un qui démarre "sans échec".

Et bien l'IDE me dit :

exit status 1

Compilation error: #error Your config.h must include a LABOX_MAIN_MOTOR_SHIELD and a LABOX_PROG_MOTOR_SHIELD definition. If you see this warning in spite not having a config.h, you have a buggy preprocessor and must copy config.example.h to config.h


Je pense qu'il faut remplacer "config.example.h" par "config.labox.h"
Je n'ai pas retrouvé l'endroit ou il est écrit que si le config.h est absent, alors le config.example.h est pris à la place, ce qui génére cette erreur.
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: lebelge2 le août 12, 2024, 06:35:44 pm
Il faut renommer le fichier: config.labox.h en config.h
C'est écrit ici:

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

Configuration
Vous avez maintenant une version installée du projet, mais vous devez y apporter votre touche. Rien de bien compliqué, rassurez vous.
Le seul fichier que vous devez créer est le config.h . Ce fichier contient la configuration de CommandStation-EX. Quelles broches, quel wifi, quelles options... Pour vous simplifier la tâche un fichier d’exemple est inclus, config-labox.h, qui contient déjà l’essentiel du paramétrage bien configuré. Copiez le sous le nom config.h au même endroit. Ouvrez le avec un notepad ou assimilé, et configurez le Wifi comme vous le souhaitez ...
Titre: Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Thierry le août 13, 2024, 03:09:56 pm
Oui c'est écrit dans l'article, mais si quelqu'un récupère le code sur Github, autant qu'il sache quoi en faire... Dans la prochaine version les config.example.h sont renommés en config.Labox.h . D'autre part, J'ai modifié le readme pour y ajouter en prélude une partie Labox, avec cette même manip expliquée. On pourra le voir sur la page principale du Github de Labox. J'essaie aussi de maintenir les branches CAN et Railcom au même niveau.
Titre: Re : Re : Upgrade de La Box pour compatibilité RailCom.
Posté par: Dominique le août 14, 2024, 04:33:54 pm
Les deux cas fonctionneront.


Après avoir attendu la livraison des résistances de 500mΩ que j'avais oubliées à la maison (commandées chez Manomano pour avoir 10 résistances pour 11€ port compris et livrées en 3 jours, via RS qui ne prend commande que par grosses quantités, ou Aliexpress en 3 semaines ou TME avec 10€ de port, c'est bon à savoir), je confirme donc que ça marche bien :

testé sans Railcom (//#define ENABLE_RAILCOM)
- carte modifiée IN2/6203 relié à l'IO27
- carte non-modifiée (l'IO27 n'est pas connecté mais le transistor inverse l'IO33 pour l'IN2)

testé avec Railcom (#define ENABLE_RAILCOM)
- carte modifiée IN2/6203 <-> IO27
- carte non-modifiée (l'IO27 n'est pas connecté mais le transistor inverse l'IO33 pour l'IN2)

pour les tests du Railcom avec du matériel Railcom, il faut se référer aux tests de Christophe

Bien-entendu c'est avant tout un test de non-régression.
Bravo à lebelge2  ;D pour ce progrès décisif et à Thierry  ;D pour l'intégration.