Auteur Sujet: LaBox" : Une Centrale DCC polyvalente et abordable  (Lu 146435 fois)

bk4nt

  • Full Member
  • ***
  • Messages: 144
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #435 le: décembre 27, 2024, 09:33:39 pm »
Bonsoir,

Cet aspect n'est pour moi pas clair. L'esp a une matrice de connexion qui permettrait d'affecter librement n'importe quelle pin à un périphérique.

Sur le pinout du dev kit, j'ai cependant remarqué que Rx et Tx (UART) pourraient être des pins dédiées. Ailleurs, j'ai lu qu'avant d'affecter des pins à une autre fonction, on pourrait avoir à les "déconnecter" d'abord:

Because GPIO12..15 are connected to JTAG using IOMUX. We need to mux them back to GPIO to use with GPIO matrix.
Please add PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[12], PIN_FUNC_GPIO); before call i2s_set_pin to wait for i2s driver to be fixed.


https://github.com/espressif/esp-idf/issues/512

Mais cette réponse date de 2017, ce n'est peut-être plus d'actualité.


Même Expressif semble définir des limites (selon les modèles d'esp?): https://docs.espressif.com/projects/arduino-esp32/en/latest/tutorials/io_mux.html

Some of the GPIOs are INPUT only.

Some peripherals have output signals and must be used on GPIO’s capable to be configured as OUTPUT.

Some peripherals, mostly the high speed ones, ADC, DAC, Touch, and JTAG use dedicated GPIOs pins.

...

Here is the basic peripherals list present on the ESP32. The peripheral list may vary from each ESP32 SoC family. To see all peripherals available on the ESP32-S2 and ESP32-C3, check each of the datasheets.
« Modifié: décembre 27, 2024, 09:48:53 pm par bk4nt »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1137
  • HO avec DCC++
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #436 le: décembre 27, 2024, 09:45:20 pm »
bk4nt,

Tu mets le doigt sur quelque chose qui est un peu délicat quand tu veux "distribuer" les pins sur un ESP. On connait tous les incompatibilités (ou les difficultés) d'utiliser certaines pin qui sont utilisées pendant le processus de démarrage. On connait aussi les pins 34,35,36,39 qui ne sont qu'en input.

Mais il y a plein d'autres pièges Sur certains modèles, 16 et 17 sont utilisées pour le transfert de données entre une mémoire de masse (je ne sais plus laquelle) et le processeur et ne sont donc pas disponible. Attention donc si on les déconnecte pour les réutiliser à autres choses.

Sur les satellites autonomes où j'utilisais toutes les pins (jusqu'à ce que je retire le RFID) j'ai dû tester longtemps avant de trouver le bon schéma d'affectation.

Christophe

PAT95

  • Newbie
  • *
  • Messages: 29
  • PAT95
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #437 le: décembre 29, 2024, 07:24:33 pm »
Bonsoir Christophe
Voilà ma référence "https://arduinokitproject.com/esp32-pinout-reference/" et mes modules sont des "ESP32 WROOM 32".
Je ne comprends pas j'utilise la carte Labox 02c3 sans modifs et même en mode "Acan_ESP32-> LoopBackDemo" ça ne fonctionne pas!
Je vais devoir commander des MCP2562 et tester sur plaque d'essai. A bientôt.

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1137
  • HO avec DCC++
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #438 le: décembre 29, 2024, 08:50:18 pm »
Oui là c'est effectivement surprenant :

1° - Peu de risque que ce soit le PCB, nous sommes plusieurs à avoir les mêmes qui fonctionnent
2° - L'ESP32 ??? Faible risque mais en as tu un autre pour intervertir ?
3° - LoopBackDemo ??? Les deux seuls réglages qui n'en sont pas dans ton cas sont les broches de sortie. Mais 4 et 5 par défaut sont bien celle de laBox. Et le débit, mais loopBackDemo l'ignore puisqu'il agit comme si l'émetteur et le récepteur étaient les mêmes.

Tu veux tester "hors laBox" ton ESP32 et un MCP2562 ? Pourquoi pas ? Combien as tu d'ESP sous la main ? Pour les MCP2562, si tu devais avoir des délais longs ou des frais de port élevés tu me fais signe, j'en ai beaucoup d'avance, je t'en met deux à la poste. Il est bien d'avoir deux condensateurs de 100nF par MCP2562. Tu en as ?

Tu n'hésiteras pas à revenir vers nous pour le câblage.

Christophe

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3063
  • 100% Arduino et N
    • Voir le profil
Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #439 le: décembre 30, 2024, 09:08:37 am »
Bonsoir Christophe
Voilà ma référence "https://arduinokitproject.com/esp32-pinout-reference/" et mes modules sont des "ESP32 WROOM 32".
Je ne comprends pas j'utilise la carte Labox 02c3 sans modifs et même en mode "Acan_ESP32-> LoopBackDemo" ça ne fonctionne pas!
Je vais devoir commander des MCP2562 et tester sur plaque d'essai. A bientôt.

Qu’est-ce qui ne fonctionne pas ?
- la compilation avec l’IDE Arduino, avec quelles versions de bibliothèques ESP32 et ACAN ?
- a l’exécution ? Avec quels messages d’erreur qui expliquent la cause ?

Cordialement,
Dominique

bk4nt

  • Full Member
  • ***
  • Messages: 144
    • Voir le profil
A
« Réponse #440 le: décembre 30, 2024, 02:32:42 pm »
Je vais devoir commander des MCP2562 et tester sur plaque d'essai. A bientôt.

Pour une comm entre deux esp? Les MCP ne sont pas utiles pour commencer à tester.

Sur la plaque, raccorder:

- Rx A - Tx B
- Tx A - Rx B
- GND A - GND B

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3063
  • 100% Arduino et N
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #441 le: décembre 30, 2024, 04:47:07 pm »
Je ne pense pas que ce soit possible.
Mais je n’en suis pas sûr,
Cordialement,
Dominique

bk4nt

  • Full Member
  • ***
  • Messages: 144
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #442 le: décembre 30, 2024, 05:02:07 pm »
Avec juste deux esp qui discutent entre eux, si. Les MCP servant à les monter en bus, pour plus de 2 noeuds CAN.

bk4nt

  • Full Member
  • ***
  • Messages: 144
    • Voir le profil
Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #443 le: décembre 30, 2024, 06:58:16 pm »
Je ne pense pas que ce soit possible.
Mais je n’en suis pas sûr,

En tous cas, électriquement, ça ne poserait aucun problème. Deux ESP devraient pouvoir commencer à discuter entre eux sans MCP et sans que ça ne les abîme.

Est-ce qu'ils vont fonctionner sans pouvoir détecter un conflit d'accès au bus? Est-ce que l'un va se taire lorsque l'autre envoie?

L'accès au bus est donc aléatoire car une station  peut émettre à n'importe quel moment. Mais cet accès se fait par priorité ; cette méthode est appelée CSMA CD/AMP (Carrier Sense Multiple Acces with Collision Detection and Arbitration Message Priority). https://www.technologuepro.com/cours-systemes-embarques/cours-systemes-embarques-Bus-CAN.htm

C'était une mauvaise idée. Les MCP (avec TX bouclé sur RX dans le MCP) sont certainement nécessaires pour l'accès au bus et commencer les échanges.

"The TWAI controller does not contain a integrated transceiver. Therefore, to connect the TWAI controller to a TWAI bus, an external transceiver is required." https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/twai.html
« Modifié: décembre 30, 2024, 07:03:50 pm par bk4nt »

bk4nt

  • Full Member
  • ***
  • Messages: 144
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #444 le: décembre 30, 2024, 07:48:40 pm »
Je me suis planté, croiser Rx/Tx ne permettrait pas de détecter une collision. Ni l’absence de collision, pour commencer une transmission.

Cette note suggère d'utiliser un montage à diodes (pour du point à point sur courte distance): https://www.mouser.com/pdfDocs/REN_r01an2535ed0203-can_APN_20190515.pdf

Le mieux étant probablement d'attendre des MCP.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3063
  • 100% Arduino et N
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #445 le: décembre 30, 2024, 09:47:17 pm »
En fait, je n’ai pas vu les réponses à mes questions à PAT95:
Qu’est-ce qui ne fonctionne pas ?
- la compilation avec l’IDE Arduino, avec quelles versions de bibliothèques ESP32 et ACAN-esp32 ?

On a déjà précisé les versions à utiliser. Cela lèverait le doute sur la chaîne de développement.

- a l’exécution ? Avec quels messages d’erreur qui expliquent la cause ?
Le code d’erreur en retour d’un trytosend dit exactement ce qui cloche. S’il n’est pas décodé complètement dans le sketch loopbackdemo, il l’est dans d’autres exemples de la bibliothèque.

Enfin en mode loopback, le mcp2562 n’est pas nécessaire puisque le bouclage se fait à l’intérieur du contrôleur Can.

Peut-être que c’est déjà Ok mais je ne l’ai pas vu !
« Modifié: décembre 30, 2024, 10:19:57 pm par Dominique »
Cordialement,
Dominique

PAT95

  • Newbie
  • *
  • Messages: 29
  • PAT95
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #446 le: janvier 02, 2025, 06:16:33 pm »
Bonsoir Dominique et Christophe
Tout d'abord je vous souhaite une bonne année 2025 et la santé à tous.

Je poursuis mes essais sur le CAN en mode « LoopBackDemo » avec un « ESP32 Wroom 32 » monté sur platine essai, et  voici les résultats :
Je suis sur IO visual studio code,
La bibliothèque  chargée :
  pierremolinaro/ACAN_ESP32@^1.1.2
Pour info j'ai remarqué que la bibliothèque ACAN_ESP32 n'est pas identique dans IDE Aduino et Plateforme IO !

Sortie terminal résultat :

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13232
load:0x40080400,len:3028
entry 0x400805e4
ESP32 Arduino Release: 2_0_16
ESP32 Chip Revision: 3
ESP32 SDK: v4.4.7-dirty
ESP32 Flash: 4 MB (external)
APB CLOCK: 80000000 Hz
Configure ESP32 CAN
Bit Rate prescaler: 4
Time Segment 1:     13
Time Segment 2:     6
RJW:                4
Triple Sampling:    no
Actual bit rate:    500000 bit/s
Exact bit rate ?    yes
Distance            0 ppm
Sample point:       70%
Configuration OK!
Sent: 0 Receive: 0  STATUS 0x3C RXERR 0 TXERR 0
Sent: 1 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0
Sent: 2 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0
Sent: 3 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0

Sent: 15 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0
Sent: 16 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0
Sent: 17 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0
Sent: 17 Receive: 0

et pas de réception et aucun  message d'erreur. Les résultats sont identiques avec un ESP32 monté sur « Labox ».
J'ai fait des essais avec "ARDUINO MEGA" un " module 2515" en mode "LoopBackDemo" et ça fonctionne très bien.
Là je bloque. A bientôt.

bk4nt

  • Full Member
  • ***
  • Messages: 144
    • Voir le profil
Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #447 le: janvier 02, 2025, 07:04:56 pm »
Bonjour,

Je vais devoir commander des MCP2562 et tester sur plaque d'essai. A bientôt.

Je poursuis mes essais sur le CAN en mode « LoopBackDemo » avec un « ESP32 Wroom 32 » monté sur platine essai

L'esp est tout seul sur la plaque d'essai?

"CAN Library for ESP32... Demo Sketch... You can override default settings. Here, we set the mRequestedCANMode property to ACAN_ESP32_Settings::LoopBackMode, enabling to run self reception of sent frame. Unlike other microcontrollers, this mode requires the connection of a transceiver. " https://github.com/pierremolinaro/acan-esp32

Configure ESP32 CAN
Bit Rate prescaler: 4

Le code semble faire cela, et s'exécuter: https://github.com/pierremolinaro/acan-esp32/blob/main/examples/LoopBackDemo/LoopBackDemo.ino

//--- Configure ESP32 CAN
  Serial.println ("Configure ESP32 CAN") ;
  ACAN_ESP32_Settings settings (DESIRED_BIT_RATE) ;
  settings.mRequestedCANMode = ACAN_ESP32_Settings::LoopBackMode ;
//  settings.mRxPin = GPIO_NUM_4 ; // Optional, default Tx pin is GPIO_NUM_4
//  settings.mTxPin = GPIO_NUM_5 ; // Optional, default Rx pin is GPIO_NUM_5
  const uint32_t errorCode = ACAN_ESP32::can.begin (settings) ;
  if (errorCode == 0) {
    Serial.print ("Bit Rate prescaler: ") ;
    Serial.println (settings.mBitRatePrescaler) ;

Il manque la boucle, sur Rx/Tx CAN?
« Modifié: janvier 02, 2025, 07:10:58 pm par bk4nt »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3063
  • 100% Arduino et N
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #448 le: janvier 02, 2025, 09:16:33 pm »
Effectivement, Pierre Molinaro indique bien la nécessité d’un transceiver, même en mode loopback.

 Unlike other microcontrollers, this mode requires the connection of a transceiver. " https://github.com/pierremolinaro/acan-esp32

On ne voit pas dans la sortie moniteur le compteur gReceivedFrameCount s’incrémenter ce qui n’est pas bon signe.

Il faudrait laisser tourner le sketch au delà des 17 messages émis pour voir si une erreur apparaît en émission.

A priori, tu peux essayer de relier Tx et Rx pour ce test en loopback.

Je vais faire un test prochainement sur une carte LaBox en cours de montage sur mon lieu de vacances. Mais j’ai oublié quelques composants ce qui me bloque un peu.

La doc sur Espressif ne donne pas plus d’explications : elle aussi demande la présence du transceiver :
https://docs.espressif.com/projects/esp-idf/en/release-v3.3/api-reference/peripherals/can.html
Cordialement,
Dominique

bk4nt

  • Full Member
  • ***
  • Messages: 144
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #449 le: janvier 02, 2025, 11:19:06 pm »
Je viens de me réinstaller un IDE. Ca a pris un temps fou, plus de 3 heures pour le DL et l'installation des modèles de cartes esp. Le cas échéant, il faut être patient, et laisser faire, même si on a le sentiment que c'est planté.

J'ai fait un premier test, avec juste un devkit V1, sans rien d'autre: pas de transmissions.

J'ai ajouté un bout de câble entre 4 et 5: on a alors bien des paquets reçus.

Dans les transceiver CAN, Tx est bouclé sur Rx. C'est donc mon bout de câble qui fait fonction de transceiver.

ESP32 SDK: v5.1.4-972-g632e0c2a9f-dirty
ESP32 Flash: 4 MB (external)
APB CLOCK: 80000000 Hz
Configure ESP32 CAN
Bit Rate prescaler: 2
Time Segment 1:     13
Time Segment 2:     6
RJW:                4
Triple Sampling:    no
Actual bit rate:    1000000 bit/s
Exact bit rate ?    yes
Distance            0 ppm
Sample point:       70%
Configuration OK!
Sent: 0 Receive: 0  STATUS 0xC RXERR 0 TXERR 0
Sent: 1 Receive: 1  STATUS 0xC RXERR 0 TXERR 0
Sent: 2 Receive: 2  STATUS 0xC RXERR 0 TXERR 0
Sent: 3 Receive: 3  STATUS 0xC RXERR 0 TXERR 0
Sent: 4 Receive: 4  STATUS 0xC RXERR 0 TXERR 0
Sent: 5 Receive: 5  STATUS 0xC RXERR 0 TXERR 0
Sent: 6 Receive: 6  STATUS 0xC RXERR 0 TXERR 0

Sans cette boucle, et sans non plus un transceiver, ça ne m'affichait que "Receive: 0".

Par moments, j'ai eu des erreurs, mais c'était lorsque j'ai commencé à prendre le devkit en main (pour des contacts électriques entre GPIO quelconques). Je doute que ces erreurs là aient un sens; je suppose que c'est ce qu'on obtiendrait avec un problème de câblage, un transceiver défectueux ou un débit CAN trop élevé pour le transceiver utilisé:

Sent: 17 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0
Sent: 17 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0
Sent: 17 Receive: 8  STATUS 0xD4 RXERR 0 TXERR 128
Sent: 18 Receive: 8  STATUS 0xD4 RXERR 0 TXERR 128
Sent: 19 Receive: 8  STATUS 0xD4 RXERR 0 TXERR 128
Sent: 20 Receive: 8  STATUS 0xD4 RXERR 0 TXERR 128
Sent: 21 Receive: 8  STATUS 0xD4 RXERR 0 TXERR 128
Sent: 22 Receive: 8  STATUS 0xD4 RXERR 0 TXERR 128
Sent: 23 Receive: 8  STATUS 0xD4 RXERR 0 TXERR 128

Configure ESP32 CAN
Bit Rate prescaler: 2
Time Segment 1:     13
Time Segment 2:     6
RJW:                4
Triple Sampling:    no
Actual bit rate:    1000000 bit/s
Exact bit rate ?    yes
Distance            0 ppm
Sample point:       70%
Configuration OK!
Sent: 0 Receive: 0  STATUS 0xC RXERR 36 TXERR 0
Sent: 1 Receive: 0  STATUS 0x6C RXERR 131 TXERR 55
Sent: 2 Receive: 0  STATUS 0x60 RXERR 131 TXERR 55
Sent: 3 Receive: 0  STATUS 0x60 RXERR 131 TXERR 55
Sent: 4 Receive: 0  STATUS 0x60 RXERR 131 TXERR 55
Sent: 5 Receive: 0  STATUS 0x60 RXERR 131 TXERR 55
Sent: 6 Receive: 0  STATUS 0x60 RXERR 131 TXERR 55
Sent: 7 Receive: 0  STATUS 0x60 RXERR 131 TXERR 55

Sans boucle (ni un transceiver ni un bout de câble), ça semble s'arrêter à 17 paquets Tx, sans afficher grand chose de clair. Peut-être un statut 0x30...

Avec une boucle, le statut est chez moi 0xC. C'est probablement ce statut qui pourrait nous renseigner sur l'état du port CAN.

Sent: 0 Receive: 0  STATUS 0xC RXERR 0 TXERR 0
Sent: 1 Receive: 1  STATUS 0xC RXERR 0 TXERR 0
Sent: 2 Receive: 2  STATUS 0xC RXERR 0 TXERR 0
Sent: 3 Receive: 3  STATUS 0xC RXERR 0 TXERR 0
...

Sent: 33 Receive: 33  STATUS 0xC RXERR 0 TXERR 0
Sent: 34 Receive: 34  STATUS 0xC RXERR 0 TXERR 0
Sent: 35 Receive: 35  STATUS 0xC RXERR 0 TXERR 0
Sent: 36 Receive: 36  STATUS 0xC RXERR 0 TXERR 0
Sent: 37 Receive: 37  STATUS 0xC RXERR 0 TXERR 0
Sent: 38 Receive: 38  STATUS 0xC RXERR 0 TXERR 0


    Serial.print (" STATUS 0x") ;
    Serial.print (TWAI_STATUS_REG, HEX) ;
    Serial.print (" RXERR ") ;
    Serial.print (TWAI_RX_ERR_CNT_REG) ;
    Serial.print (" TXERR ") ;
    Serial.println (TWAI_TX_ERR_CNT_REG) ;
« Modifié: janvier 02, 2025, 11:35:43 pm par bk4nt »