LOCODUINO

La bibliothèque ACAN (1)

Prise en main

. Par : Jean-Luc

Rappelons rapidement que le bus CAN est particulièrement bien adapté au modélisme ferroviaire et est à la fois simple, robuste et économique. Sa mise en œuvre sur le réseau est aisée. S’agissant d’un bus, il suffit d’une simple paire de câbles torsadés pour relier les contrôleurs entre eux et étendre le réseau. On insère un nouveau contrôleur (…)

Retourner à l'article

Vous répondez à :

La bibliothèque ACAN (1) 22 septembre 2023 18:56, par Phenixpopol

Je me suis donc lancé dans le locoduinodrome en commençant par le bus CAN.
J’utilise un arduino UNO R3 qui n’est pas un clone et 2 HailegeMCP2515 CAN bus module TJA 1050 Receiver SPI for Arduino AVR.
J’ai les mêmes problèmes que Jérome (cf ci-dessus). Dans le programme loopback avec donnees j’ai le même message d’erreur « Erreur 0x1 ».
J’ai réalisé le programme ’application de commande deux LED via le bus CAN « J’ai le message d’erreur « probleme de connexion » sur les deux arduino. J’ai corrigé la bibliothèque :
#include <ACAN2515_Buffer16.h>
#include <ACANBuffer.h>
#include <ACAN2515Settings.h>
Mais les deux premières lignes n’apparaissent pas en rouge. Elles sont pourtant bien dans le dossier bibliothèque de ACAN2515.
J’ai vérifié et revérifié toutes mes connexions. J’ai ponté J1.
Toujours idem

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

35 Messages

  • La bibliothèque ACAN (1) 12 avril 2020 18:07, par Jerome

    Bonjour

    Je n’ai pas encore lu, Jean Luc

    Mais Merci beaucoup !!

    signé : le "membre du forum" concerné :)

    Répondre

  • La bibliothèque ACAN (1) 13 avril 2020 18:18, par jean

    Ah que ces choses sont clairement dites, félicitations :-)

    petite typo dans Configuration, l’IDE n’aime pas la FRENQUENCE

    Répondre

  • La bibliothèque ACAN (1) 14 avril 2020 12:51, par DDEFF

    Merci Jean-Luc,

    Voilà l’article clair et très détaillé que j’attendais.
    Peut-on envisager une bibliothèque du même genre si on a des sorties directes CAN (Arduino DUE, ESP32) ? Je sais, c’est un peu prématuré...

    Denis

    Répondre

    • La bibliothèque ACAN (1) 15 avril 2020 09:24, par bobyAndCo

       

      Bonjour Denis,

       

      Pour que les choses soient claires pour tout le monde, tu parles de cartes qui disposent déjà d’un contrôleur CAN d’origine mais il faudra de toutes les façons y ajoute un transceiver extérieur pour pouvoir constituer l’infrastructure matérielle nécessaire pour le CAN.

       

      C’est ce que l’on voit sur cette photo avec un ESP32 et un transceiver CJMCV230.

       

      ESP32_cjmcv-230.jpg

       

      Il suffit, pourrait on dire, de relier les broches CAN TX et CAN RX de l’ESP32 ( D5 et D4 ) au RX et au TX du transceiver. Par ailleurs, les deux cartes fonctionnant sous 3,3V, il n’y a pas à se préoccuper de conversion de courant.

       

      Mais la bibliothèque que présente ici Jean-Luc ne fonctionne qu’avec un MCP2515 et ce n’est pas ce qui équipe d’origine un ESP32 (je ne sais pas pour le DUE).

       

      Cette bibliothèque ACAN2515 peut être utilisée sur un ESP32 si l’on utilise une carte extérieure avec un contrôleur MCP2515 et un transceiver via le bus SPI. Donc une configuration matérielle comme présentée ci-dessus par Jean-Luc.

       

      On peut peut-être regretter de ne pas pouvoir tirer profit du contrôleur déjà existant sur l’ESP32. Mais d’un autre côté, renvoyer l’ensemble des traitements sur une carte extérieure n’est t’il pas un moyen de soulager l’ESP32 de certains traitements ?

       

      Mais il existent aussi des bibliothèques qui utilisent le contrôleur de l’ESP32 comme la bibliothèque ESP32CAN. Sans doute moins abouties que l’ACAN2515 présentée ici mais que j’ai moi-même testée et qui fonctionne bien..

       

      Christophe

      Répondre

    • La bibliothèque ACAN (1) 15 avril 2020 18:55, par Jean-Luc

      ACAN existe également pour les Teensy et pour le MCP2717/MCP2518. Mon petit doigt me dit qu’elle pourrait venir pour les STM32. Pour l’ESP32, c’est un peu compliqué car dans le manuel il n’y a pas de trace du contrôleur CAN excepté dans les vecteurs d’interruption. Il y a par contre des fonctions fournies dans le kit de dev d’ESPRESSIF mais elles ne sont pas intégrées dans arduino-esp32. À priori l’ESP32 intègre un contrôleur compatible avec le SJA1000 (NXP ex Phillips). Les codes exemples existants semble avoir été faits plus ou moins à partir de la datasheet du SJA1000 et par reverse engineering.

      Répondre

  • La bibliothèque ACAN (1) 15 avril 2020 10:17, par DDEFF

    Merci Christophe,
     
    J’avais bien compris que la bibliothèque décrite dans cet article ne fonctionne qu’avec un MCP2515. On est bien d’accord. D’ailleurs, elle s’appelle bien ACAN2515 et ce n’est pas pour rien.
     
    Par ailleurs, soulager l’ESP32 ne peut que lui faire du bien. Je suis d’accord aussi, évidemment.
     
    Mon raisonnement, c’est que, de toutes façons, il faudra une bibliothèque spécifique pour l’ESP32.
    Ce qui serait bien, c’est qu’elle ait les mêmes commandes que l’ACAN2515.
     
    En attendant, on utilise les bibliothèques existantes pour l’ESP32.
    Il n’est vraiment pas urgent de développer une bibliothèque spécifique. On a largement de quoi s’occuper d’ici là...
     
    Denis

    Répondre

    • La bibliothèque ACAN (1) 15 avril 2020 10:30, par bobyAndCo

      Non justement, je me suis sans doute mal exprimé mais il n’y a pas besoin de bibliothèque spécifique pour l’ESP32. ACAN2515 fait parfaitement le boulot sur ESP32 à condition d’avoir un MCP2515 !!!

      Répondre

      • La bibliothèque ACAN (1) 15 avril 2020 10:41, par DDEFF

        Pour voir si j’ai bien compris : il faudrait (plus tard, si on a le temps...) une bibliothèque "ACANCJMCV230".

        Répondre

        • La bibliothèque ACAN (1) 15 avril 2020 23:03, par Dominique

          Et ben on peut dire que tu n’as pas compris, j’essaye d’expliquer :
          Pour communiquer en protocole CAN il faut 2 composants : le contrôleur CAN (par exemple le MCP2515 ou 2517/2518) ET le driver de ligne, c’est à dire un bête ampli de courant pour sortir et un ampli différentiel en entrée, par exemple le MCP2551 en 5V ou le SN65HVD230 en 3,3V, sur le module module CJMCU-230 utilisé avec le Due ou l’ESP32).
          Ce driver de ligne n’a pas besoin d’une bibliothèque car ce n’est pas un contrôleur CAN ! C’est le contrôleur CAN qui en a besoin.
          Donc comme l’ESP32 (et le Due) ont leur propre contrôleur intégré, ils ont besoin de leur bibliothèque CAN propre. Ou alors, comme le dit Christophe, il faut s’en passer et brancher un MCP 2515/17/18 à l’extérieur et alors on peut utiliser la bibliothèque ACAN2515 via le port SPI.

          Répondre

          • La bibliothèque ACAN (1) 16 avril 2020 20:07, par Jean-Luc

            A l’examen de la discussion, j’ai plutôt l’impression que c’est Christophe et toi qui ne comprenez pas ce que veux dire Denis 😃. Il voudrait une bibliothèque CAN pour le contrôleur intégré à l’ESP32 qui ait l’API de ACAN.

            Répondre

            • La bibliothèque ACAN (1) 16 avril 2020 20:58, par DDEFF

              Merci Jean-Luc.
              Je n’ai, certes, pas employé les bons termes, mais c’est ça l’idée.
              Qu’on soit dans l’ESP32 ou dans un satellite/module, qu’on emploie les mêmes commandes.
              Mais ça a l’air dur.
              Denis

              Répondre

  • La bibliothèque ACAN (1) 16 avril 2020 18:29, par Jerome

    Bonjour

    Voici les caractéristiques de mon module CAN de marque JoyIT

    Puce : MCP2515, TJA1050
    Spécification : CAN V2.0B
    Vitesse de communication : 1 Mb/s
    Oscillateur : oscillateur à quartz 16 MHz
    Résistance de terminaison : 120 ohms avec adaptation d’impédance
    Interface : SPI, CAN
    Tension d’entrée : 5 V
    Consommation d’énergie : 5 mA
    Courant de service : 1 µA
    Température de service : -40 ... 85 °C

    Ils fonctionnent correctement avec les exemples de Mise en oeuvre du Bus CAN entre modules Arduino
    qui utilise la bibliothèque mcp-can.h.

    Avec la bibliothèque ACAN cela ne fonctionne pas, des le programme loopback sans donnée :
    Voici le message d’erreur : Configuration du MCP2515 erreur : 0x1

    J’essaie de modifier les fréquences du quartz en 16 et la vitesse en 1000 mais .. cela ne marche pas non plus.
    Pourquoi ?

    Répondre

    • La bibliothèque ACAN (1) 16 avril 2020 18:30, par Jerome

      Laisser des lignes vides ne permet pas d’aérer le texte :)

      Répondre

      • La bibliothèque ACAN (1) 16 avril 2020 19:14, par Jerome

        Re bonjour
         
        Je me réponds à moi-même, cela pourra peut-être aider d’autres débutants.
         
        Pour faire fonctionner ces modules avec la bibliothèque ACAN, il faut relier les broches vcc ET vcc1 au 5v. Alors que ce n’est pas nécessaire avec la bibliothèque mcp-can.
         
        Je n’ai pas compris pourquoi. Mais c’est indiqué dans le mode d’emploi du module :) .
         
        Lors des tests précédents, avec la mcp-can, j’avais bien suivi ces prérogatives, mais j’avais aussi trouvé que brancher ces deux pins, n’était pas nécessaire, donc j avais enlevé le fil du vcc1 :) et réalisé mes branchements fixes en conséquences.
         
        Scrongneugneu maintenant il me manque un fil !
         
        Et j’ai aussi trouvé comment aerer mes messages :)

        Répondre

        • La bibliothèque ACAN (1) 16 avril 2020 19:26, par Jerome

          Et c’est dommage de ne pouvoir éditer .
           
          En fait, ne brancher que la vcc sur le 5 v semble fonctionner..
           
          Ce n’est pas le vcc1 que j’avais enlevé mais le vcc tout court :(

          Répondre

          • La bibliothèque ACAN (1) 16 avril 2020 19:53, par Jean-Luc

            Bonsoir.
            bon je vais vous répondre quand même. Votre description du module joy it, ainsi que leur page web d’ailleurs, est fausse. Le transceiver n’est pas un TJA1050 mais un MCP2562. On le voit tout à fait sur la photo à gauche de leur description erronée.

            SBC-Can01-2.png

            Ce transceiver est bi-tension, une pour la logique et, sur cette carte, pour le MCP2515 et une pour le bus. Dans la doc, on voit que VCC est l’alimentation pour la logique (5V sur un Uno, 3,3V sur un RPi ou un ESP) et VCC1 est l’alimentation pour le bus (toujours 5V).

             

            Par conséquent, laisser VCC1 non connecté n’est pas bon pour le 2562 (oui, un circuit non alimenté n’apprécie pas que ses entrées soient à une tension quelconque) d’une part et ne permettra pas de faire autre chose que du loop back d’autre part !

            Répondre

            • La bibliothèque ACAN (1) 16 avril 2020 21:29, par Jerome

              Merci jean luc

              En effet , cela ne fonctionne pas avec le programme suivant, celui avec les deux Arduino.
               
              J’espère ne rien avoir grillé.

              Encore merci

              Jerome

              Répondre

              • La bibliothèque ACAN (1) 17 avril 2020 20:00, par Jerome

                Bonsoir
                .
                Juste un petit message pour confirmer que tout fonctionne.
                Y compris le programme avec les 2 Arduino.
                Il suffisait de lire et d’appliquer le mode d’emploi.
                .
                A ce stade, j’ai encore plein de questions .
                Mais je les garde pour plus tard, si les futurs articles attendus avec impatience n’y répondent pas avant
                Et ce sera sur le forum.
                .
                Jerome, assez confus de ne pas avoir trouvé tout seul.
                Je n’étais pourtant pas loin, mais j’ai cumulé :
                En plus de ce problème de vcc, le fil de connexion sur l’int était brisé . :)

                Répondre

  • La bibliothèque ACAN (1) 16 avril 2020 19:15, par Didier44

    Merci Jean Luc pour cette approche très didactique.. comme d’habitude !
    Je suis en plein dans le traitement de signaux CAN (UNO et ESP32) et tes précisions vont m’être très utile.
    Didier

    Répondre

  • La bibliothèque ACAN (1) 16 avril 2020 21:37, par jeelet

    oui VCC et VCC1 les relier... et un strap c pas bon, j’ai griller une carte hier.
    (sûrement mauvais contact ??)
     
    sinon les exemples de la lib. ACAN2515 tourne bien.
     
    et un big bravo, super Tuto sur le CAN .... la suite la suite.
     
    https://nsm09.casimages.com/img/202...

    Répondre

  • La bibliothèque ACAN (1) 12 mai 2020 22:11, par Hervé BLOREc

    Bonsoir,

    D’abord un grand merci à Jean -Luc pour toutes ces explications claires et ordonnées qui me sont d’un grand recours.
    je n’arrive pas à charger les fichiers zip, y aurait-il un pb
    Merci
    Cdt

    Répondre

  • La bibliothèque ACAN (1) 15 juillet 2020 17:51, par Philippe S

    Bonjour Jean-Luc,

    Me voilà à fond sur les deux articles ACAN et je reprends à mon compte ce qui a été dit, c’est pédagogique, bien progressif, tout est bien amené, super bien présenté en plus, accompagné de sketchs de mise en pratique commentés. Quel énorme boulot !!!

    C’est donc clair et net... mais avec une petite bavure je crois dans les explications du deuxième exemple :

    La longueur du message messageCANEmission est donc renseignées en conséquence à la fin de loop()

    En réalité il faut lire qu’elle est renseignée à la fin du setup().

    Grands merci et bravos

    Répondre

  • La bibliothèque ACAN (1) 9 septembre 2021 16:58, par tony04

    Bonjour Jean-Luc,

    après plusieurs années de fidélité à la librairie mcp-can, je me décide enfin à tester cette petite merveille tant appréciée semble-t-il.

    J’utilise les modules classiques comme dans tes exemples et avec une vitesse de BUS de 125KHz tout se passe bien.

    Mais dès que je passe à 256 ou à 512KHz je me retrouve avec le code erreur 2. Pourtant toutes mes cartes fonctionnent en 512KHz avec l’ancienne librairie.

    Faut-il changer autre chose que la constante FREQUENCE_DU_QUARTZ ?

    Merci par avance pour ta réponse et félicitations pour ce magnifique tutoriel.

    Bien cordialement
    Antoine

    Répondre

    • La bibliothèque ACAN (1) 9 septembre 2021 18:24, par msport

      Bonjour Antoine,

      on s’intéresse aussi à ACAN ?
      Sur quel contrôleur l’installes tu ?
      As tu l’erreur après :
      if (Can0.begin(CAN_BPS_500K)) ?
      qui fonctionne avec ACAN_ESP32 sur ESP32 bien sur.

      Cordialement

      Répondre

      • La bibliothèque ACAN (1) 10 septembre 2021 09:03, par tony04

        Hé oui, il ne faut pas rester à la traine...

        J’ai fait mes essais avec un MEGA d’un coté et un NANO de l’autre.
        Je n’ai pas cette instruction "if (Can0.begin(CAN_BPS_500K))", j’ai le message "Problème de connexion" avec un code 2.

        J’ai utilisé ton exemple 2 émetteurs 1 récepteur pour mes essais.

        Répondre

  • La bibliothèque ACAN (1) 20 février 2022 16:02, par Jeanmi67

    Bonjour,

    Pour connecter deux cartes Arduino qui doivent échanger des informations sur mon réseau, j’étais parti de votre exemple "2-boutons-2-leds" et ça fonctionnait très bien.
    Ayant eu besoin ponctuellement de récupérer la carte Nano "Emetteur" pour autre chose, j’essaie maintenant de réinstaller le programme "Emetteur" sur cette même carte Nano. Problème : il y a eu entre temps une mise à jour de la librairie ACAN2515 et un des éléments de celle-ci (ACANBuffer16.h) qui est appelé dans le programme n’existe plus :-(.

    /*
     * Inclusions pour acan2515
     */
    #include <ACANBuffer16.h>
    #include <ACANBuffer.h>
    #include <ACAN2515Settings.h>
    #include <ACAN2515.h>
    #include <CANMessage.h>

    Ayant une sauvegarde de ce fichier, je l’ai copié dans le répertoire de la librairie ACAN2515, la compilation ne plante plus, mais le programme reste bloqué sur "Probleme de connexion".
    Comment puis-je retrouver ce BUS CAN fonctionnel ?

    Merci :-)
    Jean-Michel

    Répondre

  • La bibliothèque ACAN (1) 20 février 2022 16:45, par msport

    ... mais je vois un ACAN2515_Buffer16.h : adaptation du programme à faire ?

    Répondre

    • La bibliothèque ACAN (1) 20 février 2022 20:29, par Jeanmi67

      ... Effectivement, simplement en modifiant le nom de la librairie appelée dans le programme, tout refonctionne !
      L’erreur "Probleme de connexion" était simplement due à un câble déconnecté problablement lors des manipulations de l’Arduino.
      Merci :-)

      Répondre

  • La bibliothèque ACAN (1) 18 avril 2022 12:23, par JeeLet

    Bonjour les anciens

    comprend le changement sur la modif de "ACAN2515_Buffer16.h" ??
    j’ai "No such file or directory" à la compilation :(

    sur https://github.com/pierremolinaro/a...
    je trouve pas de changement !
    une piste ????

    Merci

    Répondre

  • La bibliothèque ACAN (1) 18 avril 2022 12:57, par JeeLet

    ... oui suis grave de grave :) ;(

    renommer ACANBuffer16.h en ACAN2515_Buffer16.h est c’est bon !

    voili voila , histoire de vous dire Bonjour quoi.

    Répondre

  • La bibliothèque ACAN (1) 22 septembre 2023 18:56, par Phenixpopol

    Je me suis donc lancé dans le locoduinodrome en commençant par le bus CAN.
    J’utilise un arduino UNO R3 qui n’est pas un clone et 2 HailegeMCP2515 CAN bus module TJA 1050 Receiver SPI for Arduino AVR.
    J’ai les mêmes problèmes que Jérome (cf ci-dessus). Dans le programme loopback avec donnees j’ai le même message d’erreur « Erreur 0x1 ».
    J’ai réalisé le programme ’application de commande deux LED via le bus CAN « J’ai le message d’erreur « probleme de connexion » sur les deux arduino. J’ai corrigé la bibliothèque :
    #include <ACAN2515_Buffer16.h>
    #include <ACANBuffer.h>
    #include <ACAN2515Settings.h>
    Mais les deux premières lignes n’apparaissent pas en rouge. Elles sont pourtant bien dans le dossier bibliothèque de ACAN2515.
    J’ai vérifié et revérifié toutes mes connexions. J’ai ponté J1.
    Toujours idem

    Répondre

    • La bibliothèque ACAN (1) 28 septembre 2023 17:14, par Phenixpopol

      Bonjour et merci à Pierre Molinaro qui m’a répondu car cela fait plusieurs jours que je cherchais l’erreur. J’avais beau refaire les connexions !!

      En fait, je n’avais pas remarqué que SO et SI se croisent entre Arduino et le module (pourtant visible sur l’illustration de locoduino) ; J’avais fait une tresse de 4 fils et je ne vérifiais que les extrémités.
      Les premiers essais marchent avec une fréquence à 8 MgH.

      Répondre

Rubrique Bibliothèques

Les derniers articles

Les articles les plus lus