Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Dominique

Pages: 1 ... 50 51 [52] 53 54 ... 187
766
Vos projets / Re : Re : projet centrale "LaBox" wifi DCC++ Can
« le: septembre 14, 2021, 09:50:37 am »
En revanche, en émission, il possède un mode à buffer CIRCULAIRE qui permet d'injecter un flux en continu dans le système...avec une interruption levée quand une fraction du buffer est consommée (ce qui permet de le recharger).

Je n'ai pas essayé ce mode....mais ça doit le faire.

Merci Sébastien : c’est dans ce mode émission que la solution aux problèmes de timing de LaBox devrait se trouver.
J’ai vu qu’il existe des bibliothèques Arduino à base de RMT. Je n’ai pas pu essayer mais cela doit pouvoir s’implémenter dans l’environnement Arduino.

767
Présentez vous ! / Re : Bonjour à tous
« le: septembre 12, 2021, 06:32:26 pm »
Bravo  ;D

Et pourquoi n’avez-vous pas choisi DCCpp qui offre quelques fonctions supplémentaires ?

768
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: septembre 09, 2021, 06:36:26 pm »

769
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: septembre 09, 2021, 06:25:07 pm »
UN rapide coup d'oeil sur les exemples montre l'utilisation de l'ESP-IDF.

Comment intégrer un driver RMT dans le code Arduino ?


770
Vos projets / Re : Re : projet centrale "LaBox" wifi DCC++ Can
« le: septembre 09, 2021, 02:39:14 pm »
Si effectivement on arrive pas à générer un signal stable directement avec l'ESP, oui il faut confier ça à un composant externe. Plutot qu'un FPGA j'aurais tendance à garder un petit CPU 8 bits facilement sourçable et que tout le monde sait programmer....

Un petit ATtiny pourrait être retenu (ou un modèle compact plus approvisionnable a moyen/long terme).
Le fait  que le principe des registres dans DCC++ et DCCpp permet de construire et mettre en file d’attente les commandes DCC. Le transfer dans le microcontroleur annexe sans contrainte de temps réel (celui-ci émet des IDLE quand son tampon est vide) soulagerait l’ESP32. Évidemment une nouvelle version du PCB serait à faire.

Dans une version antérieure du projet que j’avais tenté avec un ESP8266, j’utilisais un Nano avec un DCCpp minimal alimenté par des commandes DCC++ via I2C. Là ce serait encore plus simple, je pense. 

771
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: septembre 09, 2021, 10:06:09 am »
La question reste posée: comment obtenir cette précision avec l’ESP32, sachant que les moyens de mesures fiables et précis existent maintenant ?
Avec un grand merci à vous deux.

Idéalement la génération des bits devrait se faire à l’extérieur de l’ESP32, avec une sorte de registre à décalage “serie-serie” chargé en I2C, I2S ou PCI, avec un doublement des bits 0 pour conserver une période de 55 uSec partout et un pattern d’IDLE quand le truc n’est pas chargé ou vide. Il faudrait aussi un marqueur de fin de commande car elles ont dès longueurs variable.

Une sorte de FPGA sur mesure ou alors la même fonction a l’intérieur de l’ESP32 mais à l’abri du RTOS.

Qu’en pensez-vous ?

772
Présentez vous ! / Re : Bonjour.
« le: septembre 07, 2021, 08:53:04 am »
 Bienvenue Antonio  :D

773
Vos projets / Re : projet de reseau etagere analogique
« le: septembre 06, 2021, 09:35:09 pm »
Vous pouvez regarder ce sujet tout frais :
https://forum.locoduino.org/index.php?topic=1219.msg13803#msg13803

notamment le programme Configurateur

774
Vos projets / Re : Re : projet de reseau etagere analogique
« le: septembre 06, 2021, 08:34:14 pm »
Bonjour Dominique

J'ai vraiment des lacunes concernant le CAN entre le filtre et l'id
OUI

Citer
Pour moi, le filtre est utilisé pour inhiber la réception de messages inutiles pour le controleur.
OUI

Citer
Par exemple Si j'ai un masque 0x7FF et un filtre à 0x7A0 , je ne recevrai que les messages dont l'id sera 0xA0, toute autre valeur d'id sera ignorée
OUI mais ausi 7A0

Citer
Dans votre exemple
const ACAN2515Mask masque = extended2515Mask (0x1FFFFFFF) ; // For filter #0 and #1
  const ACAN2515AcceptanceFilter filtres [] = {
    {extended2515Filter (0x1FFFFF7A), messageCmd},
    {extended25l15Filter (0x1FFFFF7B), messageCmd},
  } ;
les filtres refletent les ID 0x7A et 0x7B
NON : il n'acceptent que les Ids de messages longs 1FFFFF7A et 1FFFFF7B mais n'émettent surtout pas de messages avec ces Ids

Citer
Si je reprend mon tableau
Le master a pour IDs 01/03/05/07/09/0A/0F (les MASTER_XXXX)
Le tableau des filtres implanté dans le master sera le suivant
const ACAN2515Mask masque = 0x7FF);
  const ACAN2515AcceptanceFilter filtres [] = {
    {0x701, messageAlert}, // Réception alertes depuis les contrôleurs
    {0x703, messageErr},   // notification d'erreurs depuis les contrôleurs
    {0x705, messageOrdre}, // réception des ordres depuis le TCO
    {0x707, messageAck},  // notifications d’acquittement depuis les controleurs
    {0x709, messageAccessoire}, // réception des ordres pour les accessoires
    {0x70A, messageFini}, // notifications de fin d'opérations pour les ordres "longs" (par exemple déplacement d'aiguille)
    {0x70F, messageInfo} // messages d'informations depuis les contrôleurs
} ;

Le TCO a pour Ids 0xF0 (TCO_AFFICHAGE)
Le tableau des filtres implanté dans le TCO sera le suivant
const ACAN2515Mask masque = 0x7FF);
  const ACAN2515AcceptanceFilter filtres [] = {
    {0x7F0, messageAffichage} // Réception commandes d'affichage
} ;
NON: le MASTER, comme le TCO ne reçoit jamais de messages avec les Ids des messages qu'il envoie : 2 entités (noeuds) ne peuvent émettre avec le même Id.
Quand vous écrivez "Le master a pour IDs 01/03/05/07/09/0A/0F ", ça veut dire quoi ? Qu'il envoie des messages avec ces Ids ou qu'il en reçoit avec ces Ids ?

Citer
Le meme principe est appliqué pour les autres types de controleurs :
C'est bien ça qui est à revoir !


Citer
les filtres adaptés en fonction des ID pouvant être reçus par le controleur implanté
OUI ça c'est vrai



Citer
Maintenant, la ou je ne suis pas sur c'est comment doit etre effectué le dialogue dans le programme:
Par exemple le TCO pour transmettre un ordre au master va utiliser la commande CAN.sendMsgBuf en envoyant le message au Master sur l'id MASTER_ORDRE
Mais doit il utilisé l'ID (0x05) ou la valeur de masque (0x705) pour envoyer le message ?
l'Id uniquement (le masque c'est en réception seulement)

Vous n'arrivez pas à séparer l'Id d'un message émis et le filtre d'un message reçu  >:( >:(
Le meilleur moyen est de laisser tomber les masques et filtres tant que vous n'avez pas bien saisi le rôle des Ids

Reprenez votre exemple
Citer
Premier exemple, action sur aiguillage depuis le TCO
utilisateur   TCO   message   MASTER   message   SOLENOIDE
modifie position aiguille n° 7   envoi de l'information au MASTER   ==> MASTER_ORDRE   convertit le numéro de l'aiguille en couple contrôleur/sortie et envoie l'info au contrôleur de solénoide   ==> SOLENOIDE_ORDRE   réception du message
Affichage clignotant de l'aiguille   <== TCO_AFFICHAGE   réception du ACK et demande d'affichage (aiguille en attente)   <== MASTER_ACK   Mise en liste d'attente de la commande (pas d'activation simultanée de solénoïdes)
Affichage fixe de l'aiguille   <== TCO_AFFICHAGE   modification aiguille terminée. On affiche le résultat final sur le TCO   <== MASTER_FINI   L'aiguille a été actionnée
et mettez les valeurs des Ids dans les messages

Montez donc un test comme j'ai proposé, sans utiliser de filtre/masque : vous verrez plus clair ensuite.

Cdt
.

775
Vos projets / Re : projet de reseau etagere analogique
« le: septembre 06, 2021, 12:47:16 pm »
N’oubliez pas qu’il n’y a que 6 filtres par module.

776
Vos projets / Re : projet de reseau etagere analogique
« le: septembre 06, 2021, 10:51:12 am »
Bonjour Pascal,

Je m'inquiète: toujours pas d' Ids, ni dans le tableau, ni surtout dans les exemples où c'est vraiment nécessaire.
Ces filtres ne correspondent pas aux Ids du tableau du message du septembre 05, 2021, 12:47:41 am

Le système peut fonctionner sans masque (vous le rendez inefficace ici) et sans filtres, mais pas sans Ids.
D'ailleurs la bibliothèque (ACAN et autres) ne propose que 2 masques et 6 filtres en tout donc je ne vois pas comment vous allez implémenter toute votre liste.

Je vous encourage de faire un test en réel entre 3 Arduinos simulant un MASTER, un TCO et un SOLENOIDE.
Vous commencez sans masque ni filtre, puis vous les introduisez progressivement : vous verrez que ce n'est pas trivial.

Concernant le programme des détecteurs RFID, il faut bien lire l'article.
Je n'utilise pas la fonction controleurCAN.dispatchReceivedMessage() qui passe la main à la fonction messageCmd dans les filtres, mais j'explique seulement ce qu'on peut faire.
De plus l'exemple utilise les Ids longs pour l'exemple seulement.
Et on ne la retrouve donc pas dans la loop où d'autres fonctions d'émission sont utilisées.


777
Vos projets / Re : Re : projet de reseau etagere analogique
« le: septembre 05, 2021, 07:41:10 am »

Un échange type sera le suivant :
<action> TCO MASTER_ORDRE -> MASTER demande d'action (aiguille, dételeur,vitesse) <vérification possible> SOLENOIDE_ORDRE-> SOLENOIDE <verification possible et mise en pile commande>  MASTER_ACK -> MASTER  TCO_AFFICHAGE-> TCO (clignotement)
Une fois l'aiguille positionnée SOLENOIDE MASTER_FINI-> MASTER TCO_AFFICHAGE-> TCO (nouvelle position)
autre exemple
SECTION détection en fin de section MASTER_ALERTE-> MASTER (vérification suivant libre ou occupé) si occupé SECTION_ARRET-> SECTION vitesse nulle ou coupure section d'arrêt (arrêt)  MASTER_ACK-> MASTER  TCO_AFFICHAGE-> TCO affichage vitesse


Bonjour Pascal,

Pour que je comprennes bien, peux tu indiquer l’ID des messages dans ces deux exemples, pour bien voir celui qui l’émet et qui le reçoit (et filtre) ?

CDT
Dominique

778
Bus CAN / Re : ACAN ESP32
« le: septembre 04, 2021, 09:17:39 pm »
msport a raison, je peux en dire plus  :D :D :D

J'utilise effectivement la bibliothèque due_can que je joins en PJ

Une bonne initiation est donnée dans ce programme CAN_trafficSniffer.ino

Il y a une définition très interessante dans ACAN que vous pouvez utiliser dans votre programme pour manipuler les 8 octets de données :
public : union {
    uint64_t data64        ; // Caution: subject to endianness
    uint32_t data32 [2]    ; // Caution: subject to endianness
    uint16_t data16 [4]    ; // Caution: subject to endianness
    float    dataFloat [2] ; // Caution: subject to endianness
    uint8_t  data   [8] = {0, 0, 0, 0, 0, 0, 0, 0} ;
  } ;
Cela permet de lire et écrire directement différents types de variables dans ces 8 octets selon vos besoins et sans programme de conversion de type à écrire.

Attention "Caution: subject to endianness" signifie que cela peut ne pas marcher lorsque votre système ne place pas les octets dans le bon ordre... debugguer avec des Serial.print permet de détecter le problème.

Dans mon projet j'ai 2 Due, l'un pour le gestionnaire global du réseau que je publierai prochainement et l'autre pour un testeur et aide à la mise au point qui utilise un écran graphique et quelques boutons permettant de construire des modules de test comme on veut. Je le joins dans son état actuel, en chantier et plein de promesses, mais pas fini  >:(

L'essentiel de la gestion Can se trouve dasn le fichier canmessages.h


779
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: septembre 01, 2021, 10:44:02 am »
D'ailleurs l'auteur du sniffer ESP32 a constaté aussi des glitch dans la génération du code DCC sous interruptions:

Example ESP32 Monitoring DCC++ EX 3.0.4 (5V, 6N137 Optocoupler, Main Track, Strict NMRA)

When the DCC signal is generated within interrupt handling code within the Command Station, the accuracy of the signal cannot be maintained to such a high accuracy. Below, we can see that the pulse length varies over a range of around 14us.
This would mean that some packets are outside of the NMRA specification and may be ignored by the loco decoder. The analyser reports 81 packets as out of spec and 351 in-spec, i.e. around 20% are out of spec. This is not normally a problem on a DCC layout as each packet is transmitted at least three times. If one packet doesn't get through, the probability is that one of the retransmissions will!

The half-bit counts are turned off here, but CPU monitoring within the analyser is turned on.

-
Bit Count/4 sec=24865 (Zeros=10167, Ones=14697), Glitches=0
Valid Packets=351, NMRA out of spec=81, Checksum Errors=0, Lost pkts=0, Long pkts=0
0 half-bit length (us): 115.9 (109-122) delta < 14
1 half-bit length (us): 57.5 (51-64) delta < 14
IRC Duration (us): 2.2 (1-10),  CPU load: 27.5%
--
Loc 7552 Fwd128 33      11011101 10000000 00111111 10100010
Loc 3 Fwd128 25         00000011 00111111 10011010
-

780
Vos projets / Re : Re : projet centrale "LaBox" wifi DCC++ Can
« le: septembre 01, 2021, 10:30:42 am »
Bonjour,
pour ceux que ça intéresse, l'analyse logique à 10 balles :
- acheter un clone salae ... + les petites pinces qui vont bien (que j'ai soudées pour qu'elles aillent mieux) + des rallonges dupont de qualité
- télécharger et installer le logiciel salae, c'est juste pour avoir le driver
- télécharger et installer PulseView ; on peut voir les bits à ce stade
- télécharger "sigrok-DCC-Protocoll" ; extraire le dossier "DCC" et l'ajouter dans le repertoire "decoders" ; chez-moi :C:\Program Files\sigrok\PulseView\share\libsigrokdecode\decoders
- dans la config du decoder, dans "01 or 10", choisir "10"

(aucune raison que le sniffer à base d'ESP32 ne fonctionne pas parfaitement)

J'aimerai bien mais sur Mac, point de soft possible :-\

Pages: 1 ... 50 51 [52] 53 54 ... 187