Auteur Sujet: Mes débuts en CAN  (Lu 10134 fois)

becbunsen

  • Newbie
  • *
  • Messages: 47
    • Voir le profil
Mes débuts en CAN
« le: février 09, 2024, 10:42:32 am »
Bonjour,

Je me suis décidé à écrire ce fil après avoir vraiment rencontré pas mal de difficulté à mettre en place un réseau CAN qui fonctionne. (et ce n'est pas encore tout à fait le cas...)
Le but premier pour moi était de faire tourner sur arduino même si je m'aperçois que la solution avec un ESP 32 peut apporter pas mal de choses.

Le premier point de difficulté est le peu d'informations disponibles sur le Net, le CAN n'est pas si souvent employé dans les projets DIY autres que ferroviaire. La bibliotheque ACAN fonctionne trés bien mais elle est trés pauvre en exemple et ils ne sont trés parlants.

L'une des meilleures sources d'informations est sur ce site et c'est l'article de Jean-Luc : https://www.locoduino.org/spip.php?article268
C'est en reprenant l'article ligne par ligne que j'ai réussi à bien tout faire fonctionner.
juste une petite critique: dans les exemples, il y' a des lignes qui ne servent pas ( des include Canbuffer, ACANsettings, ...) On se pose beaucoup de questions à propos de ces lignes quand ça ne marche chez nous.

Au final, l'origine principal de mes déboires est la sensibilité de la liaison SPI: j'ai au départ utilisé 2 UNO avec 2 Shield Can. j'avais toujours des erreurs "problemes de connexion", j'ai trituré le code dans tout les sens pour finir par m'apercevoir qu'il fallait appuyer un peu sur le shield pour que ça marche (pourtant enfoncé à fond), de même, j'ai ensuite voulu utilser des Nano avec des modules MCP2515, je m'en suis sorti après avoir changé des cables dupont, et même la platine d'essai avec bornier qui reçoit le nano, la continuité au testeur était bonne entre les bornes du nano et les bornes du module. Ca parait trés bête, c'est du niveau débutant++ mais c'est des heures de passée et de la perseverance pour au final arriver à faire marcher. Je pense qu'on a moins de soucis en partant sur un CI et c'est en tous cas important de chercher de ce coté quand on expérimente et que ça ne marche pas.

Je me permet donc de mettre un bout de code pour UNO ou NANO qui ne contient qu'une seule chose et rien d'autre: l'initiation du CAN. Si vous avez "connexion OK", c'est déja une belle etape de franchie et qu'on commencer à s'amuser avec les messages. Juste vérifier que la broche int est raccordé à la broche D2 et que le CS à la broche D10.


#include <ACAN2515.h> // c'est quand même le minimum

//Broches pour le chip select et l'interruption du MCP2515
static const uint8_t MCP2515_CS  = 10;
static const uint8_t MCP2515_INT = 2;

/*
 * L'objet pour piloter le MCP2515. SPI designe l'objet
 * utilise pour la connexion SPI car sur certaines cartes
 * notamment les Teensy, il peut y avoir plusieurs SPI.
 */
ACAN2515 controleurCAN(MCP2515_CS, SPI, MCP2515_INT);

/*
 * La frequence du quartz du MCP2515 en hertz.
 * Sur les cartes CAN que l'on peut trouvez chez les revendeurs
 * chinois, il s'agit generalement d'un quartz 8MHz
 */
static const uint32_t FREQUENCE_DU_QUARTZ = 8ul * 1000ul * 1000ul;

//La fréquence du bus CAN
static const uint32_t FREQUENCE_DU_BUS_CAN = 125ul * 1000ul;

CANMessage canSend;  // ces 2 lignes sont inutiles pour initialiser le CAN
CANMessage canRec;   // on crée juste 2 objets messages can: un pour envoyer, un pour recevoir

void setup()
{
  /* Demarre la ligne serie */
  Serial.begin(115200);
  /* Demarre le SPI */
  SPI.begin();
  /* Configure le MCP2515 */
  Serial.println("Configuration du MCP2515 ");
  /* Fixe la vitesse du bus a 125 kbits/s */
  ACAN2515Settings reglages(FREQUENCE_DU_QUARTZ, FREQUENCE_DU_BUS_CAN);
  /* Demarre le CAN */
  const uint16_t codeErreur = controleurCAN.begin(reglages, [] { controleurCAN.isr(); } );
  /* Verifie que tout est ok */
  if (codeErreur == 0) {
    Serial.println("Configuration ok");
  }
  else {
    Serial.println("Probleme de connexion");
    while (1);
  }

void loop()
{
//Rien pour l'instant
}


Au final, cette partie est la plus pénible quand ca ne marche pas. La partie échange de message est beaucoup plus intéressante et facile à manipuler . La liaison CAN est en effet trés fiable et je n'ai constaté aucune perte ou erreur d'infos dans mes essais
« Modifié: novembre 12, 2024, 07:29:20 pm par becbunsen »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3055
  • 100% Arduino et N
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #1 le: février 09, 2024, 12:17:33 pm »
Il faut toujours se méfier des mauvais contacts: j’ai banni rapidement les plaques d’essai et les fils Dupont.

J’utilise plutôt des cartes prototype avec fils à souder.

Mais quelle carte Can shield avec-vous utilisée? 


Mais c’est déjà très bien de se lancer dans le Can, la première prise en compte de la bibliothèque Can nécessite la lecture de la documentation qui est dans le dossier “doc”..

Et il y a aussi le dossier ACAN-examples sur le Git :
[url]https://github.com/Locoduino/ACAN-examples]


Et il y a aussi le dossier ACAN-examples sur le Git :
https://github.com/Locoduino/ACAN-examples


« Modifié: février 09, 2024, 12:30:32 pm par Dominique »
Cordialement,
Dominique

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1114
  • HO avec DCC++
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #2 le: février 09, 2024, 03:16:59 pm »
Bonjour Becbunsen,

Le DIY ne dit pas que cela se fera sans mal (et parfois sans casse). Personnellement, je le prends comme une démarche de réalisation personnelle, l’envie d’apprendre, de comprendre et de le réaliser. Avec au final, en prime, pouvoir dire « c’est moi qui l’ai fait ! ».

Il faut aussi solliciter comme tu le fais ceux qui sont passés par les mêmes déboires et qui vont partager leurs solutions.

Pour les shields CAN de chez Seeed Studio, je n’ai jamais eu de problèmes mais j’en ai eu les mêmes que toi avec des shields ETHERNET.

Pour les câbles Dupont, il y a longtemps que je les ai bannis. Je me réalise mes propres câbles avec des sections plus importantes tout d’abord. J’achète mes broches sur Ebay : https://www.ebay.fr/itm/394419058299?hash=item5bd535367b:g:OwMAAOSwRl9jwV7y&amdata=enc%3AAQAIAAAAsLY%2B539gae2voftpI2qvRR0DXcrNxcODv1dLQeFOqvjnGdBkJyATESAKnAfCuOsnN1kuxhbVtcwhAqnjT1R8GGo5vQUKsm1gEdYt6EaOPo0H6qxFNfIDG54eYZNsDw2eWtmzkgQsy93NcvCj5Oa15htxu1KqHrV0%2BUPcfjFRo%2FP8DtgJSryQ7iZwCJIC4po0clpIq5rpOAwEPKqiiZBcteihRtfIAkk4be9MVQvVZ72x%7Ctkp%3ABlBMUJqc2-GxYw

Je les sertis au câble mais en plus je fais un point de soudure. Enfin, je recouvre de gaine thermo rétractable.

C’est plus long c’est vrai mais le temps passé est rentable car ça ne bouge plus ensuite.

Par ailleurs, j’essaye de me fabriquer quelques cartes un peu universelles et personnellement j’aime bien souder les fils sur des pads : bon contact électrique bonne résistance mécanique. Je place sur ce type de carte les extensions dont je me sers souvent comme un transceiver CAN. Ca facilite grandement les prototypages
« Modifié: février 09, 2024, 06:04:06 pm par bobyAndCo »

becbunsen

  • Newbie
  • *
  • Messages: 47
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #3 le: février 11, 2024, 12:27:48 am »
Oui, Pour la philosophie du DIY, je suis d'accord avec toi, au final, c'est l'envie d'apprendre et d'y arriver qui prend le pas sur le projet final...

j'avais vu tes cartes rouges avec les pads à souder, c'est vrai que c'est fiable, rapide et économique,
Est il possible d'avoir le fichier Gerber?
C'est vrai que je me suis vraiment araché les cheveux pour arriver à faire fonctionner cette liaison et je me dit que je ne continuerai pas sans me faire des modules fiables au niveau materiel.

Mes shields, c'est des anciens modeles: V1.2  il y'a un interrupteur On/Off dessus, je n'ai pas trouvé à quoi il servait, ça marche dans les 2 cas, peut-être la 120Ohms, car elle est nulle part ailleurs.
UNO +Shield, c'était pratique pour faire des essais mais c'est assez encombrant et il faut remettre des duponts pour cabler.

J'ai quand même encore un probleme: je n'ai au final réussi à initialiser qu'un seul nano avec un module MCP2515. le nano et le module ne sont pas en cause ( je les ai fait marcher sur l'autre) ce doit être ma platine de NANO, pas grave, je vais finir par trouver
Le probleme est que quand je branche celui qui s'initialise sur mon bus avec des 2 UNO+SHIELD, le CAN se coupe, et plus rien ne passe... Le fichier exactement le même, donc pas de probleme de fréquence de bus. J'en suis la pour le moment, je vais continuer mes essais en essayant notamment avec la box (que j'ai fini aujourd'hui! :) )

A suivre donc....



bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1114
  • HO avec DCC++
    • Voir le profil
Re : Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #4 le: février 11, 2024, 03:41:55 am »
j'avais vu tes cartes rouges avec les pads à souder, c'est vrai que c'est fiable, rapide et économique,
Est il possible d'avoir le fichier Gerber?

Il y a quatre versions

1° Pour ESP32 30 pins + CAN
2° Pour ESP32 38 pins + CAN
3° Pour ESP32 38 pins  + CAN + Ethernet (Eh oui on peut préférer l'Ethernet au WiFi d'origine pour de nombreuses raisons)
4° Pour ESP32 38 pins  + CAN + Ethernet + DCC inspector

Je précise que l'on peut ne monter que les composants dont on a besoin.

Attention, j'ai placé le CAN sur les pins 22 et 23

/* ----- CAN ----------------------*/
#define CAN_RX GPIO_NUM_22
#define CAN_TX GPIO_NUM_23

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1114
  • HO avec DCC++
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #5 le: février 11, 2024, 03:42:49 am »
La suite...

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1114
  • HO avec DCC++
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #6 le: février 11, 2024, 03:48:38 am »
... et les gerber

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1114
  • HO avec DCC++
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #7 le: février 11, 2024, 03:50:44 am »
Et deux photos en prime.

Photo pcb vert : Avec Ethernet (monté)
Photo pcb rouge : Avec Ethernet (non monté) et DCC Inspector (monté)
« Modifié: février 11, 2024, 03:52:59 am par bobyAndCo »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1114
  • HO avec DCC++
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #8 le: février 11, 2024, 05:05:16 pm »
Je me suis décidé à écrire ce fil après avoir vraiment rencontré pas mal de difficulté à mettre en place un réseau CAN qui fonctionne. (et ce n'est pas encore tout à fait le cas...)

J'avais trouvé cet article qui me semble intéressant car il est, je trouve, assez compréhensible pour un non initié et pas superficiel.

C'est juste une proposition : https://www-kvaser-com.translate.goog/can-protocol-tutorial/?_x_tr_sl=en&_x_tr_tl=fr&_x_tr_hl=fr&_x_tr_pto=rq#:~:text=The%20message%20arbitration%20(the%20process,has%20detected%20an%20idle%20bus

becbunsen

  • Newbie
  • *
  • Messages: 47
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #9 le: février 11, 2024, 10:39:07 pm »
Merci beaucoup, je regarder ce qui me va le mieux


becbunsen

  • Newbie
  • *
  • Messages: 47
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #10 le: octobre 05, 2024, 12:31:03 am »
J'ai fini par commander la carte V7.0, C'est vrai que ça a l'air trés pratique pour developer des cartes avec le CAN.
A suivre maintenant....

PS: Pourrais tu me rappeler la ref du régulateur de tension, je crois en avoir utilisé 1 dans Labox mais c'était pour être sur
Et eventuellement la ref de la diode de protection montée sur le + (je pense que c'est du classique)

Merci beaucoup
« Modifié: octobre 05, 2024, 12:38:42 am par becbunsen »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1114
  • HO avec DCC++
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #11 le: octobre 05, 2024, 10:04:13 am »
Pour la diode, c'est du classique : 1N4001, 4002, 4005, ou 4007 !

Pour les régulateurs : https://fr.aliexpress.com/item/1005002787701988.html?spm=a2g0o.cart.0.0.18ce378dKVrUSU&mp=1&gatewayAdapt=glo2fra

A ce prix, j'achète par 10 ou 20 puisque ce sont toujours les mêmes que je mets sur mes PCB

Christophe


becbunsen

  • Newbie
  • *
  • Messages: 47
    • Voir le profil
Re : Mes débuts en CAN, entre déboires et réussite...
« Réponse #12 le: novembre 06, 2024, 11:45:29 pm »
Cartes bien reçues, j'en ai monté 3, tout fonctionne à merveille!!!
Aucun probleme de connexion, c'est également plus simple à manipuler avec le controleur CAN intégré à l'ESP32 plutôt que de brancher un controleur SPI externe.
J'utilise de ce fait la bibliotheque TWAI-CAN.

Merci beaucoup pour ces PCB!!