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

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3065
  • 100% Arduino et N
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #450 le: janvier 02, 2025, 11:33:31 pm »
Bizarre ta trace moniteur : le nombre de « receive » devrait être égal au nombre de « sent » !

J’ai un petit réseau chez moi qui tourne depuis qq semaines : des centaines de milliers de messages échangés et jamais d’erreurs.
Cordialement,
Dominique

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #451 le: janvier 02, 2025, 11:52:14 pm »
Configuration OK!
Sent: 0 Receive: 0  STATUS 0x3C RXERR 0 TXERR 0
Sent: 1 Receive: 0  STATUS 0x30 RXERR 0 TXERR 0

Quand ça marche, j'ai donc 0xC (TWAI_TX_BUF_ST 1: The TX buffer is empty, TWAI_TX_COMPLETE )...

Ox3* indiquant manifestement qu'il a des data dans son buffer Tx (TWAI_TX_ST), et qu'il attend quelque chose en Rx (TWAI_RX_ST )...

https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #452 le: janvier 02, 2025, 11:58:05 pm »
Bizarre ta trace moniteur : le nombre de « receive » devrait être égal au nombre de « sent » !

J’ai un petit réseau chez moi qui tourne depuis qq semaines : des centaines de milliers de messages échangés et jamais d’erreurs.

Quand ça marche, j'ai bien le nombre receive égal à sent:

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

J'ai bien ajouté que lorsque ça ne fonctionnait pas, j'ai pris le devkit en main, ce qui m'a produit ces résultats quelconques. Mes doigts faisaient office de câble/boucle.

Je suppose que chez toi, tu n'y touches pas trop. Va y mettre tes doigts et reviens nous dire comment ça s'est passé  :)
« Modifié: janvier 03, 2025, 12:03:21 am par bk4nt »

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #453 le: janvier 03, 2025, 12:10:31 am »
C'est lorsqu'on commence à stresser un peu le truc que les résultats et le statut changent:

Sent: 13 Receive: 13  STATUS 0xC RXERR 0 TXERR 0
Sent: 14 Receive: 14  STATUS 0xC RXERR 0 TXERR 0
Sent: 15 Receive: 15  STATUS 0xC RXERR 0 TXERR 0
Sent: 16 Receive: 16  STATUS 0xC RXERR 0 TXERR 0
Sent: 17 Receive: 17  STATUS 0xC RXERR 0 TXERR 0
Sent: 18 Receive: 18  STATUS 0x4C RXERR 131 TXERR 0
Sent: 19 Receive: 19  STATUS 0x4C RXERR 131 TXERR 0
Sent: 20 Receive: 20  STATUS 0x4C RXERR 131 TXERR 0
Sent: 21 Receive: 21  STATUS 0x4C RXERR 131 TXERR 0
Sent: 22 Receive: 22  STATUS 0x4C RXERR 131 TXERR 0

Sent: 40 Receive: 39  STATUS 0x4C RXERR 128 TXERR 67
Sent: 41 Receive: 40  STATUS 0x6C RXERR 128 TXERR 66
Sent: 42 Receive: 41  STATUS 0x4C RXERR 128 TXERR 65
Sent: 43 Receive: 42  STATUS 0x6C RXERR 128 TXERR 64
Sent: 44 Receive: 42  STATUS 0x4C RXERR 128 TXERR 71
Sent: 45 Receive: 43  STATUS 0x4C RXERR 128 TXERR 70
Sent: 46 Receive: 44  STATUS 0x4C RXERR 128 TXERR 69
Sent: 47 Receive: 45  STATUS 0x4C RXERR 128 TXERR 68
Sent: 48 Receive: 46  STATUS 0x4C RXERR 128 TXERR 67
Sent: 49 Receive: 47  STATUS 0x4C RXERR 128 TXERR 66
Sent: 50 Receive: 48  STATUS 0x4C RXERR 128 TXERR 65
Sent: 51 Receive: 49  STATUS 0x4C RXERR 128 TXERR 64
Sent: 52 Receive: 50  STATUS 0x4C RXERR 128 TXERR 63
Sent: 53 Receive: 51  STATUS 0x4C RXERR 128 TXERR 62
Sent: 54 Receive: 52  STATUS 0x4C RXERR 128 TXERR 61
Sent: 55 Receive: 53  STATUS 0x4C RXERR 128 TXERR 60
« Modifié: janvier 03, 2025, 12:12:51 am par bk4nt »

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #454 le: janvier 03, 2025, 02:12:16 am »
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 !

Je ne sais pas ce que tu as pu faire de différent. J'ai utilisé Arduino IDE (la dernière), la librairie ACAN correspondante, et le sketch examples/loopback associé. Je n'ai eu aucune difficulté à le faire fonctionner. Avec juste un fil entre D4 et D5 en guise de transceiver.

PAT95

  • Newbie
  • *
  • Messages: 33
  • PAT95
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #455 le: janvier 03, 2025, 10:19:32 am »
Bonjour Dominique Christophe et Bk4nt,
suite des essais CAN après bien des échanges « LoopBackDemo » FONCTIONNE, je me sens ridicule    je n'avais pas bien interprété « RELIER D4 D5 » c'est à dire faire un pontage D4 D5. Je reprends espoir pour la suite.
A propos de suite je souhaite tester un programme CAN simple avec la carte « 02C3 LaBox » équipée du MCP2562 seulement. Grand merci à vous tous. A bientôt sans aucun doute...

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1139
  • HO avec DCC++
    • Voir le profil
Re : Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #456 le: janvier 03, 2025, 12:28:20 pm »
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 !

Bonjour à tous,

Je voudrais attirer votre attention sur ceci : @^1.1.2
PlatformIO autorise au travers du fichier platformio.ini une réglage fin et sur mesure pour les bibliothèques externes.

Il est possible de personnaliser les bibliothèques externes pour chaque projet. Il est donc par exemple possible d'avoir une version 1.1.2 d'un bibliothèque pour un projet PlatformIO t une version 2.0 avec un autre projet. Ce qui n'est pas possible avec l'IDE Arduino où tous les projets partagent les mêmes bibliothèques.

Dans le cas précis de ACAN_ESP32 de Pierre Molinaro, j'avais eu des problèmes avec la version 2, aussi ai-je systématiquement recours "à ce blocage de version" à la 1.1.2. C'est le cas pour les satellites autonomes et aussi pour la Box

Thierry avait lui aussi signalé sur ce même fil la nécessité d'utiliser une version inférieure à la 2 de ACAN_ESP32 pour laBox car il avait certainement rencontré les mêmes problèmes.

Autant il est assez facile d'effectuer ce réglage sur PlatformIO, autant l'IDE Aruino nous propose régulièrement de mettre à jour les bibliothèques et cela suffit, sans s'en rendre compte bien souvent, à modifier cette limite de version.

Pour plus de détails sur la gestion des versions dans PlatformIO, vous pouvez consulter la documentation officielle :

https://docs.platformio.org/en/latest/manifests/library-json/fields/version.html

Pour une discussion sur la spécification des versions de bibliothèques dans platformio.ini, vous pouvez consulter ce fil de discussion sur le forum PlatformIO :

Library management : choose a specific version in platformio.ini : https://community.platformio.org/t/library-management-choose-a-specific-version-in-platformio-ini/110

Pour info, voici la liste des réglages possibles dans PlatformIO pour une bibliothèque donnée :

lib_deps =
    library_name@^1.2.3    ; Allows versions 1.2.3 up to 2.0.0, excluding 2.0.0
    library_name@~1.2.3    ; Allows versions 1.2.3 up to 1.3.0, excluding 1.3.0
    library_name@=1.2.3    ; Only version 1.2.3
    library_name@>1.2.3    ; Any version greater than 1.2.3
    library_name@>=1.2.3   ; Version 1.2.3 and above
    library_name@<1.2.3    ; Any version less than 1.2.3
    library_name@<=1.2.3   ; Version 1.2.3 and below

Christophe

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #457 le: janvier 03, 2025, 05:01:04 pm »
Bonjour,

Il existe donc 4 versions/librairies spécifiques: https://github.com/Locoduino/CommandStation-EX-LaBox/blob/LaBox/platformio.ini#L20

Avec l'IDE Arduino on peut résoudre un tel problème à l'ancienne:

Just put them in the folder with the .ino file.
And include like this:


#include "MyLibrary.h"  // include library in sketch folder

#include <OtherLibrary.h>  //vs  include library in library folder

Pour ACAN, la modif serait à faire ici: https://github.com/Locoduino/CommandStation-EX-LaBox/blob/LaBox/CanMarklin.h#L18

Ce qui est moins simple que juste télécharger et compiler.

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #458 le: janvier 03, 2025, 05:16:57 pm »
je n'avais pas bien interprété « RELIER D4 D5 » c'est à dire faire un pontage D4 D5.

La doc dit d'utiliser un transceiver, c'est normalement lui qui réalise la boucle, et il est alors aussi inclus dans le test loopback.

Le bout de câble D4/D5 se substitue, et je ne pense pas que cela pose un quelconque problème électrique.

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : Re : Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #459 le: janvier 04, 2025, 05:11:43 pm »
Bonjour à tous,

Je voudrais attirer votre attention sur ceci : @^1.1.2
PlatformIO autorise au travers du fichier platformio.ini une réglage fin et sur mesure pour les bibliothèques externes.

Il est possible de personnaliser les bibliothèques externes pour chaque projet. Il est donc par exemple ...

Bonjour,

Je suis en train d'installer le truc. Pour le moment, ça m'inquiète. Il télécharge des choses sans me poser la moindre question... au passage, j'ai remarqué qu'une case "auto update" est cochée. A ce stade, et du fait d'un éventuel delta de versions, je n'ai peut être pas la garantie de pouvoir m'en servir. Ni la garantie de pouvoir m'en servir longtemps si une mise à jour venait altérer le truc, ce qui arrive parfois.

En même temps, on peut avoir le même genre de problème avec l'IDE Arduino et ses librairies, qui au fil du temps peuvent évoluer, être mises à jour...

Je suis entrain de suivre le tuto vidéo présenté ici il y a 4 ans: https://forum.locoduino.org/index.php?topic=1018.0 Mes versions qui se sont installées sont évidemment différentes, plus récentes.

C'est tout un ensemble qu'on pourrait avoir à figer ou à définir pour un projet. Ce qui semble être possible:

"A few months ago, this installed version 1.0.8 of framework-wizio-pico. A new installation today installed version 1.0.9. Is there a way to specify an exact version for better stability/reproducibility of the dev environment. ... Yes, there we some reports on the Pico SDK forums about issues with SDK 1.2.0 so I wanted to control which one I use.... I believe that being able to check out a project and automatically reproducing the development environment, including versions of the various components, is an important aspect of platformio. Otherwise results are non predictable."

Des solutions sont discutées ici: https://community.platformio.org/t/how-to-specify-desired-version-of-an-installed-framework/21970/6 J'y reviendrais peut-être plus tard, quand j'utiliserais plus qu'un blink.ino.

Je voudrais attirer votre attention sur ceci : @^1.1.2

Comment le truc fait pour aller chercher une version précise? Ca se fait "tout seul"? Ca arrive de Github ou d'ailleurs? https://github.com/pierremolinaro/acan-esp32/releases/tag/1.1.2

Ca m'a l'air d'être très dépendant du réseau, où ça va picorer, et pour moi, c'est un peu obscur pour le moment.


Edit... oups, c'est pas gagné  :)

test tuto devkit v1\src\main.cpp:1:10: fatal error: Arduino.h: No such file or directory
 #include <Arduino.h>
          ^~~~~~~~~~~
compilation terminated.
« Modifié: janvier 04, 2025, 05:33:46 pm par bk4nt »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3065
  • 100% Arduino et N
    • Voir le profil
LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #460 le: janvier 04, 2025, 05:53:45 pm »
Je suis en train d'installer le truc. Pour le moment, ça m'inquiète. Il télécharge des choses sans me poser la moindre question... au passage, j'ai remarqué qu'une case "auto update" est cochée. A ce stade, et du fait d'un éventuel delta de versions, je n'ai peut être pas la garantie de pouvoir m'en servir. Ni la garantie de pouvoir m'en servir longtemps si une mise à jour venait altérer le truc, ce qui arrive parfois.

En même temps, on peut avoir le même genre de problème avec l'IDE Arduino et ses librairies, qui au fil du temps peuvent évoluer, être mises à jour...
...
Ca m'a l'air d'être très dépendant du réseau, où ça va picorer, et pour moi, c'est un peu obscur pour le moment.

Je suis du même avis : ce truc m'inquiète et c'est une usine à gaz, pour la plupart des modélistes sur Locoduino.

J'ai essayé et j'ai abandonné. Toutefois j'ai gardé VSCodium comme éditeur de programmes, tout comme BBEdit car je suis sur MacBook Pro.
Je garde l'IDE Arduino pour les compilations et les téléversements.
VSCodium et BBEdit prennent soin d'enregistrer automatiquement les modifications ce qui permet d'enchainer la compilation sans passer par l'éditeur de l'IDE Arduino, qui répercute les modifications.

L'inconvénient des mises à jour automatiques des bibliothèques est facilement écarté en cliquant sur "PLUS TARD" dans les 2 dialogues affichés au démarrage. C'est moins fatiguant que d'utiliser platformIO.

Mon conseil est d'écrire en tête de sketch ou dans un onglet d'infos, dans un champ de commentaire, toutes les précautions à prendre, notamment les versions des bibliothèques.

Mais c'est mon avis personnel. Cependant je pense que la plupart des modélistes sur Locoduino, surtout les débutants et bon nombre d"experts utilisent et continueront d'utiliser l'IDE Arduino et attendent des solutions compatibles avec l'IDE Arduino.

Cela n'empêche pas ceux qui y tiennent pour des raisons personnelles ou professionnelles d'utiliser un autre IDE que celui d'Arduino, pourvu que les programmes présentés sur Locoduino puissent être compilés par l'IDE Arduino.

L'exemple de LaBox est bien dans ce cas car Thierry s'attache à maintenir cette compatibilité et nous devons le remercier pour cela.

Au passage, je viens de compiler et téléverser avec succès la dernière version 2.9.0 de LaBox sur la dernière carte de circuit imprimé avec composants CMS 03.c3 qui est fourni dans le dossier PCB de la version 2.9.0 sur le Git Locoduino. Tout ce que j'ai pu tester fonctionne parfaitement notamment la lecture de l'adresse loco, le petit automatisme de va et vient avec EX-RAIL et la conduite manuelle avec l'appli Z21. J'attend quelques connecteurs RJ12 pour tester le bus CAN.
« Modifié: janvier 04, 2025, 05:55:22 pm par Dominique »
Cordialement,
Dominique

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #461 le: janvier 04, 2025, 07:28:52 pm »
C'est d'un esprit différent de celui de l'IDE Arduino, où les menus sont assez clairs et limité à ce qui est utile/suffisant pour le plus grand nombre. Avec des librairies ajoutées, on trouve facilement les exemples associés dans le menu file, etc. Je n'y vois qu'une difficulté: identifier le bon modèle de carte lorsqu'on utilise autre chose qu'un Uno.

J'avais tenté un "Run build task" depuis le menu de PlatformIO, et lancé un build sans les options appropriées, d'où l'erreur "Arduino.h: No such file or directory"...

Il y a des boutons en bas, des raccourcis, pour compiler, etc, avec les bons arguments. Et même un menu dédié, sur la gauche.

Faut que je trouve comment supprimer ce genre d'erreurs qui reste ensuite à la "liste des problèmes", à moins que je ne redémarre l'appli. Un environnement avec quelques subtilités à connaître. Je vois que ça supporterait un debuggeur, qui peut un moment ou un autre être utile.

Ici, il est écrit "level beginner": https://docs.platformio.org/en/stable/tutorials/espressif32/arduino_debugging_unit_testing.html

Pour un Devkit, il faut un adaptateur JTAG: https://medium.com/@manuel.bl/low-cost-esp32-in-circuit-debugging-dbbee39e508b Là, je lis que l'environnement est farceur: "Every update of the Espressif 32 platform within PlatformIO will reset the configuration file to its original state. So you will have to reapply the simple configuration change after every update."  :)

Ici, je lis qu'on pourrait bien avoir à choisir et à figer l'environnement de développement: https://tutoduino.fr/tutoriels/debug-esp32/debug-esp32-platformio-jtag/ "Avec la version que j’utilise (Visual Studio Code 1.81.0, PlatformIO Core 6.1.9 Home 3.4.4, OpenOCD v0.11.0-esp32-20220706), je rencontre plusieurs erreurs lors du démarrage du débogage du programme."

Avec certains esp (le C3), on pourrait s'en passer: https://tutoduino.fr/en/tutorials/debug-esp32/debug-an-esp32-c3-via-its-jtag-interface/

Une usine à gaz, mais des possibilités supplémentaires.
« Modifié: janvier 04, 2025, 08:30:40 pm par bk4nt »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1139
  • HO avec DCC++
    • Voir le profil
Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #462 le: janvier 04, 2025, 09:02:16 pm »
Je n'y vois qu'une difficulté: identifier le bon modèle de carte lorsqu'on utilise autre chose qu'un Uno.

Pour les cartes, c'est comme pour les bibliothèques, on entre ce que l'on souhaite dans le fichier .ini

Exemple :

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
build_flags = -DCORE_DEBUG_LEVEL=5
monitor_speed = 115200
lib_deps =
pierremolinaro/ACAN_ESP32@=1.1.2
arduino-libraries/Ethernet@^2.0.2
debug_tool = esp-prog
debug_init_break = tbreak setup


Comme je travaille (presque) toujours avec les mêmes cartes, environnements ou bibliothèques, je fais un copié-collé entre mes projets.

C'est vraiment top et simple à faire. Plus facile pour les cartes que l'IDE Arduino

Christophe
« Modifié: janvier 04, 2025, 09:03:50 pm par bobyAndCo »

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : Re : Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #463 le: janvier 04, 2025, 09:28:02 pm »
Pour les cartes, c'est comme pour les bibliothèques, on entre ce que l'on souhaite dans le fichier .ini

Oui, c'est clair. Dans l'IDE Arduino, j'avais un moment hésité, puis choisi une mauvaise option pour un petit pro micro, je croyais que c'en était un. Et je supposais qu'en cas d'erreur de modèle, ça allait simplement s'interrompre. J'en ai deux ou trois dans un coin sur lesquels j'aurais à reflasher un boot loader pour les récupérér  :)

Mon conseil est d'écrire en tête de sketch ou dans un onglet d'infos, dans un champ de commentaire, toutes les précautions à prendre, notamment les versions des bibliothèques.

... pourvu que les programmes présentés sur Locoduino puissent être compilés par l'IDE Arduino.

L'exemple de LaBox est bien dans ce cas car Thierry s'attache à maintenir cette compatibilité et nous devons le remercier pour cela.

Ca fait cependant faire tout un travail pour avoir les bonnes versions sur son PC (ou vérifier les versions si la compilation échoue). DCC EX a résolu cela avec un installateur, qui utilise des binaires précompilés?
https://dcc-ex.com/ex-installer/installing.html#gsc.tab=0
https://dcc-ex.com/download/ex-commandstation.html#ex-installer&gsc.tab=0

Je voudrais attirer votre attention sur ceci : @^1.1.2
PlatformIO autorise au travers du fichier platformio.ini une réglage fin et sur mesure pour les bibliothèques externes.

Il y a peut être davantage à faire dans ces .ini, tout l'environnement pouvant lui-même évoluer, puis finir par poser un problème... Ton warning m'a fait fouiller un peu le concept. Dans le .ini de DCCxx-ESP32-Railcom je remarque maintenant que seul ACAN est à une version précise:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
build_flags = -DCORE_DEBUG_LEVEL=5
monitor_speed = 115200

lib_deps =
pierremolinaro/ACAN_ESP32@=1.0.6

Expressif semble aller plus loin, tend à nous dire que platform et implicitement framework devraient être figés également. On peut lire "Latest stable version" is "NOT recommended", "Pin the version": https://docs.platformio.org/en/latest/platforms/espressif32.html#stable-and-upstream-versions

; Latest stable version, NOT recommended
; Pin the version as shown below
[env:latest_stable]
platform = espressif32
board = ...

; Specific version
[env:custom_stable]
platform = espressif32@x.y.z
board = ...

Ca semble en tous ças être très souple pour le choix des versions utilisées, projet par projet, package par package.

bk4nt

  • Full Member
  • ***
  • Messages: 151
    • Voir le profil
Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Réponse #464 le: janvier 05, 2025, 03:31:42 pm »
Je n'ai rien trouvé de clair sur la façon dont "le bundle" de packages est constitué lorsqu'on déclare une plateforme et un framework. J'ai pour le moment l'impression qu'on a pas trop de souplesse ici, et que lorsqu'on choisi une plateforme, on reste très lié à ce qui est disponible.

Sur IDE Arduino, en cas de soucis, on pourrait en réinstaller un d'une autre version (upgrade ou downgrade). Ou installer un package pour un type de processeur d'une version différente. Là, je n'ai pas encore trouvé comment faire.

C'est une solution pour utilisateurs avancés, qui veulent en faire plus, ou pour des pros, qui au fil du temps pourront en faire tout ce qu'ils ont envie. Ou même une solution pour des débutants, l'installation n'est pas très compliquée; un débutant pourrait avoir envie d'utiliser du code trouvé sur Github, qui est à compiler avec PlatformIO.

Dans l'IDE Arduino, la logique est différente. On l'installe, on ajoute les cartes utiles (ça prend du temps), puis on ajoute de temps en temps des librairies.

A l’installation sous Windows, ça demande des autorisations pour le pare-feux. Je suppose que c'est pour du téléversement OTA (Over The Air, par la Wifi). C'est pensé pour de l'IOT. Puis à la première définition d'un projet, ça nécessite un temps fou: ça télécharge les packages associés à la plateforme et au framework.

Adafruit ESP32 Feather, on a deux frameworks possibles: https://docs.platformio.org/en/latest/boards/espressif32/featheresp32.html#frameworks
- Arduino
- Espressif IoT Development Framework. Official development framework for ESP32 chip

Teensy 4.0, deux également: https://docs.platformio.org/en/latest/boards/teensy/teensy40.html#frameworks
- Arduino
- Zephyr, Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures

On pourrait ainsi utiliser facilement autre chose que la base Arduino. Facilement, c'est relatif, avec Arduino, on a on a un grand nombre de librairies disponibles pour les périphériques, etc.

Je crois que Arduino arrive d'office avec les librairies Free RTOS. On pourrait utiliser un autre RTOS, sous forme de librairie.


Pour les versions platform/framework d'un projet, je n'ai vu que quelques pistes dans des forums. Ce sont des packages, qui doivent avoir été développés et validés, garantissant qu'ils fonctionnent ensemble. En cas de problème, ou si besoin (par exemple, d'un compilateur particulier), on pourrait en choisir d'autres, ou choisir un outil de debug spécifique:

https://docs.platformio.org/en/latest/projectconf/sections/env/options/platform/platform_packages.html

[env:override_default_toolchain]
platform = atmelavr
platform_packages =
  ; use GCC AVR 5.0+
  toolchain-gccarmnoneeabi@>1.50000.0

[env:override_framework]
platform = espressif8266
platform_packages =
  ; use upstream Git version
  framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git

[env:external_package]
platform = ststm32
platform_packages =
  ; latest openOCD from PlatformIO Package Registry
  tool-openocd

  ; source code of ST-Link
  tool-stlink-source @ https://github.com/texane/stlink.git


Pour platform/framework, la doc est assez courte: https://docs.platformio.org/en/latest/projectconf/sections/env/options/platform/platform.html

Un extrait de cette page:

[env:recommended_specification]
; allow backwards-compatible new functionality and bug-fixes
platform = platformio/espressif32@^6.1.0

[env:allow_only_bug_fixes]
platform = platformio/espressif32@~6.1.0

[env:exact_version]
platform = platformio/espressif32@6.1.0

[env:latest_version]
; not recommended as it does not ensure that
; - builds are repeatable
; - all developers who checkout the project wil build against the same platform version
platform = platformio/espressif32

[env:development_verion_by_git]
platform = https://github.com/platformio/platform-espressif32.git

L'intérêt de figer les versions est double: on peut produire du code et le valider, puis facilement reproduire la même chose sur un autre PC. Même un débutant pourrait le faire, il lui suffirait de dupliquer le projet, avec le .ini. En figeant les versions, on a pas de surprises telles que suite à la mise à jour d'une librairie ou d'un composant de l'environnement.

Puis on change seulement les versions selon les besoins (correctifs ou nouvelles features), avec la possibilité de mieux comprendre les delta. Passer d'un monde/releases à l'autre et pour en comparer deux serait plus fastidieux avec l'IDE Arduino.

Avoir les mêmes versions d'un PC/IDE Arduino à l'autre serait plus compliqué.


La version Expressif/Arduino est pour moi pas claire du tout.

Sur Github, nouveauté d'il y a 3 semaines, on peut trouver "Arduino Release v3.1.0 based on ESP-IDF v5.3.2" https://github.com/espressif/arduino-esp32/releases/tag/3.1.0

Lié à PlatformIO, la version est plus ancienne, de septembre 2024, "6.9.0, Added support for ESP-IDF v5.3.1"" https://github.com/platformio/platform-espressif32/releases

Pour cette dernière release, on peut y lire Supported Frameworks:
- Arduino - v2.0.17 (based on IDF v4.4.7)
- ESP-IDF - v5.3.1

Je ne sais pas ce qu'est "Arduino - v2.0.17". Arduino Core semble être en v3...


Il pourrait y avoir un delta entre ce qui existe pour IDE Arduino (ou ce genre d'IDE) et ce qui existe sur PlatformIO. Un delta qui aura son importance lorsqu'on souhaitera utiliser un tout nouveau modèle de carte/CPU dans une gamme. Ou pour les correctifs.

Il me semble que sous VS Code, on peut se passer de PlatformIO et qu'on pourrait donc installer/utiliser ce qu'on veut. On perdrait alors tout ce qu'apporte en plus PlatformIO...


A la base, VS Code avec PlatformIO reste très simple à utiliser. Je me permets de reprendre la vidéo partagée ici, il y 4 ans. Les softwares ont depuis évolués, mais l'installation puis l'utilisation reste tout aussi simple. Hors téléchargements, une affaire de minutes, j'avais à peu près suivi ce tuto:




Les premières étapes d'installation et d'utilisation sont également décrites ici: https://docs.platformio.org/en/stable/integration/ide/vscode.html#installation

Pour en faire des choses simples tel que blink ou Serial.println, ce n'est pas beaucoup plus compliqué que l'IDE Arduino.

Je m'étais fait piéger. Il faut remarquer les boutons Build et Upload en barre d'état. Puis comprendre enfin comment attacher le terminal série.

Si on fait Build, Upload, puis qu'on attache ensuite le terminal série avec ces boutons, on aura perdu quelques lignes de la sortie Serial. Dans le menu de gauche, on peut remarquer "Upload and Monitor" qui résout ce problème.