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.htmlUn 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.0Lié à 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/releasesPour 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#installationPour 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.