LOCODUINO
Parlons Arduino => Modélisation, Architectures logicielles et matérielles => Discussion démarrée par: fcot2002 le juin 18, 2020, 10:50:31 am
-
Bonjour @ tous !
On voit ici beaucoup de beaux développements, qu'en est-il de vos outils ?
J'ai découvert "PlateformIO", complet, simple, etc. Sans compter la chaîne YT de Tommy qui est une mine d'or et francophone qui plus est.
https://www.youtube.com/watch?v=-2NhjhzFQsM
Au plaisir
-
PlateformIO est effectivement un environnement de développement intéressant. Dire qu’il est simple, je ne suis pas certain. Beaucoup plus complet, oui avec en particulier des possibilités de debug en mode trace.
Un vrai plus aussi pour moi, la possibilité d’associer les bibliothèques au projet, (ce qui est facultatif toute fois) par exemple pour des bibliothèques qui portent le même nom mais s’adressent à des cartes différents (ESP ou Arduino par exemple).
Il faut aussi bien régler le compilateur car parfois, de simples warnings empêchent la compilation.
Mais je n’ai toujours pas trouvé comment téléverser un sketch en mode OTA. Si quelqu’un peut me dire ça me rendrait un grand service.
-
Salut Christophe,
Apparemment et sauf erreur de ma part il compile dans l'IDE Arduino si j'en crois la vidéo.
Qu'entends-tu par OTA ?
Bon week-end
-
L’OTA (over the air) permet le téléversement du sketch par le WiFi. Plus de câble donc entre l'ordinateur et la carte, qui doit toute fois permettre le WiFi bien sûr ! Interessant si la carte est difficile d'accès comme dans le cas de mon pont tournant.
-
Bonjour,
je suis sur mac, j' utilise VSCODE avec l'extension PlatformIO,
pour le chargement en OTA sur un esp32:
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <ESPmDNS.h>
#include <ArduinoOTA.h>
#define SSID "nom de mon reseau wifi"
#define PASS "password de mon reseau wifi"
#define HOSTNAME "nom sur le reseau de votre ESP32 , en général : truc.local"
void setup() {
WiFi.mode(WIFI_STA);
WiFi.begin(SSID, PASS);
WiFi.setHostname(HOSTNAME);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
ArduinoOTA.setHostname(WiFi.getHostname());
ArduinoOTA
.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH)
type = "sketch";
else // U_SPIFFS
type = "filesystem";
// NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
Serial.println("Start updating " + type);
})
.onEnd([]() {
Serial.println("\nEnd");
})
.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
})
.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
else if (error == OTA_END_ERROR) Serial.println("End Failed");
});
ArduinoOTA.begin();
}
void loop() {
ArduinoOTA.handle();
// put your main code here, to run repeatedly:
}
et surtout dans le fichier platformio.ini du projet mettre ces deux lignes:
upload_protocol = espota
upload_port = "Adresse IP du ESP32 ou son Hostname définie plus haut"
La première fois charger en USB sans mettre les deux ligne de code ci dessus:
ensuite mettre les deux lignes dans le fichier PlatformIO.ini comme décrit ci-dessus,
maintenant les téléchargements ce feront en mode OTA,
-
Merci beaucoup, c'est super. A première vue, le code de l'ESP est similaire pour l'IDE Arduino comme pour PlatformIO. Mais je n'avais pas trouvé le code pour platformio.ini.
En ésprérant que l'OTA soit moins capricieux sur PlatformIO que sur l'IDE Arduino.
Je pense que François à bien fait d'ouvrir ce fil sur PlatformIO. Ce qui serait intéressant, c'est dans un premier temps de connaitre quels sont les utilisateurs.
Ce fil peut être un bon moyen d'échanger des pratiques et des astuces comme le fait ethal pour répondre à ma question.
In fine, PlatformIO est plus intéressant selon moi que l'IDE Arduino mais plus complexe d'où l'intérêt des échanges.
-
Salut
Oui Christophe je comprends mieux et m'étais mal exprimé.
Plus complet donc peut-être moins simple.
Je voulais dire plus simple dans le sens où tout est sous la main ;-)
Ok pour OTA merci ;-)
-
Et du coup PlateformIO, vous y accédez via visual studio code?
-
Salut Cédric, oui, c'est un plug-in de Visual Studio Code.
-
Je suis d’accord, j’avais un doute.
-
Pour être précis, PlateformIO est aussi disponible sous d'autres environnements comme Sublime Texte.
@ François : j'ai corrigé le lien vers la vidéo youtube ci-dessus. C'est vrai que c'est bien expliqué je trouve aussi.
-
Bonjour à tous,
J'ai configuré le fichier plateforio.ini tel que me l'a suggéré ethal et effectivement, l'OTA fonctionne (parfaitement) bien. Je mets parfaitement entre parenthèses car j'ai de temps en temps un plantage mais à la tentative suivante, cela fonctionne en générale. Beaucoup mieux dans tous les cas qu'avec l'IDE Arduino.
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
; Verbose
build_flags = -DCORE_DEBUG_LEVEL=5
upload_protocol = espota
upload_port = 192.168.1.126
;upload_flags =
; --spiffs
Par contre, concernant les fichiers à copier en SPIFF, il faut préalablement créer une partition et je n'ai pas encore trouvé comment faire. C'est pour cela que les deux dernières lignes du fichier plateforio.ini ci-dessus sont commentées. Dans le fichier .ini, les lignes de commentaires commencent par ";".
Je précise que je n'ai pas ici d'authentification, ce qui n'est pas franchement recommandé. Je n'ai pas testé mais à priori, l'authentification est à ajouter à la liste des flags comme ceci :
upload_flags =
--spiffs
--auth = votre_password
-
Du coup, existe-t-il une extension "Arduino" pour VSCODE (à la place de plateformIO) ?
Il me semble que Thierry développe de l'Arduino avec Visual Studio et a même réalisé un simulateur depuis un bon moment...
Est-ce que ça vaut le coup de regarder ailleurs qu'Arduino pour nos petits trains, au risque de provoquer inquiétude et abandons chez les modélistes ?
-
On ne peut simplement pas se passer de l'IDE Arduino. Pour des questions de pérennité, de simplicité, et aussi parce que ces utilisateurs que l'on attire du coté
obscur de l'Arduino sont souvent des béotiens du domaine Electronique/Informatique et seraient pour la plupart forcément rebutés par des installations d'outil multiples et variés, et des paramétrages de ces outils tout aussi peu simples...
Je travaille effectivement avec un simulateur, mais il répond à un autre besoin, celui d'un debuggeur efficace ! L'utilisation de Serial.print a ses limites et c'est quand même plus cool de pouvoir visualiser la valeur des variables du programme pendant son exécution. Cela dit, lorsque je passe sur le vrai matériel, j'utilise l'IDE Arduino pour compiler et uploader le résultat. Cela me permet de m'assurer que ce que je fais dans Visual se compile correctement dans l'IDE (et j'ai parfois des surprises) et de ne pas avoir d'outil/plugin/addin/Extension dédié à l'Arduino dans mon Visual.
La compilation dans VisualCode+PlatformIO est une bonne solution pour bénéficier d'un véritable environnement de développement, mais un debuggeur est toujours absent... C'est une solution possible à réserver aux spécialistes que nous sommes. Il ne s'agit pas de convertir nos lecteurs/membres/fans à autre chose que l'IDE Arduino.
PS : PlatformIO fonctionne aussi sur mon Visual Studio Community gratuit...
-
Bonjour,
Je mets parfaitement entre parenthèses car j'ai de temps en temps un plantage mais à la tentative suivante, cela fonctionne en générale. Beaucoup mieux dans tous les cas qu'avec l'IDE Arduino.
Exact.
Par contre, concernant les fichiers à copier en SPIFF, il faut préalablement créer une partition et je n'ai pas encore trouvé comment faire. C'est pour cela que les deux dernières lignes du fichier plateforio.ini ci-dessus sont commentées. Dans le fichier .ini, les lignes de commentaires commencent par ";".
Il faut créer un fichier de partition dans son projet, voir le site de espressif pour en connaitre toutes les finalités, mais la on rentre dans le dur....,
example "partitions.csv":
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1B0000,
app1, app, ota_1, 0x1C0000,0x1B0000,
spiffs, data, spiffs, 0x370000,0x70000,
et mettre ce fichier en référence dans le PlatformIO.ini
board_build.partitions = partitions.csv
Pour terminer , l'IDE Arduino est très bien pour débuter et compiler , charger son petit sketch , mais l'avantage d'utiliser un logiciel tel que VSCODE ou autre avec différente extension, c'est pour l ' "IntelliSense", gestion de ces librairies,...
Pour les anglophones:
Visual Studio (full version) is a "full-featured" and "convenient" development environment.
Visual Studio (free "Express" versions - only until 2017) are feature-centered and simplified versions of the full version. Feature-centered meaning that there are different versions (Visual Studio Web Developer, Visual Studio C#, etc.) depending on your goal.
Visual Studio (free Community edition - since 2015) is a simplified version of the full version and replaces the separated express editions used before 2015.
Visual Studio Code (VSCode) is a cross-platform (Linux, Mac OS, Windows) editor that can be extended with plugins to your needs.
-
Par contre, concernant les fichiers à copier en SPIFF, il faut préalablement créer une partition et je n'ai pas encore trouvé comment faire.
Christophe, j’ai fait le boulot et je t’ai partagé un fichier sous Google doc pour t’expliquer comment faire. Je peux te dire que cela marche très bien !!
-
@ Pyk35 : Merci Cédric pour l'info mais cette procédure concerne l'IDE Arduino.
J’ai résolu la question du téléchargement des fichiers « data » dans le SPIFFS en OTA avec PlateformIO.
En fait, il ne faut pas chercher à uploader les fichiers en même temps que le sketch. Aussi, j’ai désactivé le flag (commentaire) 1 sur l’image.
Il faut ensuite cliquer sur l’icône « PlateformIO » à gauche de l’écran (2).
Cliquer sur Upload File System image (3)
De cette manière, le upload des fichiers du dossier data est parfaitement et simplement réalisé (4)
Il y a de temps en temps des echecs pour le SPIFFS en OTA (comme pour le sketch) mais la plus part du temps, cela fonctionne à la deuxième ou à la troisième tentative alors que sur l’IDE Arduino, j’ai vu ne jamais pouvoir faire les mises à jour en OTA. Un vrai et grand progrès donc.
(http://www.locoduino.org/IMG/jpg/02.jpg)
-
@ ethal :
Il faut créer un fichier de partition dans son projet, voir le site de espressif pour en connaitre toutes les finalités, mais la on rentre dans le dur....,
example "partitions.csv":
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1B0000,
app1, app, ota_1, 0x1C0000,0x1B0000,
spiffs, data, spiffs, 0x370000,0x70000,
et mettre ce fichier en référence dans le PlatformIO.ini
board_build.partitions = partitions.csv
Cette procédure est en effet fastidieuse. Par contre, l'ESP32 que j'utilisais avait déjà "reçu" des fichiers en SPIFFS à partir de l'IDE Arduino. Du coup, je n'ai pas eu à créer la partition.
Bien sûr, avec l'IDE Arduino on ne peut pas déterminer la taille ce qui est possible avec la méthode que tu proposes.
-
@ Thierry :
On ne peut simplement pas se passer de l'IDE Arduino. Pour des questions de pérennité, de simplicité, et aussi parce que ces utilisateurs que l'on attire du coté obscur de l'Arduino sont souvent des béotiens du domaine Electronique/Informatique et seraient pour la plupart forcément rebutés par des installations d'outil multiples et variés, et des paramétrages de ces outils tout aussi peu simples...
Tu as tout à fait raison de le rappeler. D'ailleurs, Tommy dans la vidéo du premier post de François dit la même chose. "Si l'IDE Arduino vous convient, ne changez pas !"
-
Ça ne nous empêche évidemment pas de chercher à améliorer notre 'productivité' avec des outils plus pointus, mais il ne faut pas oublier de compiler TOUS nos projets sur l'IDE Arduino parce que c'est là qu'ils seront utilisés...
-
Bonjour à tous, en particulier à ceux qui codent !
J'ai une question similaire à celle relative au choix d'un soft pour le routage de PCB...
Ici il s'agit du choix d'un IDE plus poussé que celui fourni de base pour Arduino.
J'en connais des tonnes depuis le temps que je programme, au quotidien je tourne avec Eclipse ou VStudioCode par exemple, ma contrainte étant que je suis (et resterai) sous Linux...donc sont exclus les outils purement Windows.
Vous me suggérez quoi ?
Le besoin est d'avoir un truc efficace pour le C/C++ et l'assembleur idéalement.
La question vise en particulier Thierry, j'ai cru percevoir dans tes sources que tu tournais avec VisualStudio...me gourges ? ;)
-
Je fais notamment référence à cette page :
https://playground.arduino.cc/Main/DevelopmentTools/
Ma question vise surtout à savoir ce que vous avez essayé et ce qui marche bien / pas terrible.
Je vais bien entendu tester le plugin Eclipse...j'ai déjà pratiqué pour du dev Gnu/C/C++ Linux avec le CDT qui integre très bien GCC et GDB.
Si il y avait l'équivalent pour l'arduino ce serais top...
-
Ce sujet a déjà été évoqué sur le forum. Cherche !
Pour ma part, et je crois que c'est assez général, VS Studio Code (que tu utilises déjà) avec PlateformIO.
-
....si je pose la question c'est que ces choses ont tendance à évoluer : il y a des tonnes d'outils mais certains n'existent déjà plus ou ne sont plus maintenus. Ca ne mange pas de pain de faire un refresh de la question.
Merci pour ta réponse. J'ai cette combinaison en tete, mais j'aimerai savoir si d'autres ont fait d'autres choix et pourquoi (notamment avec des éléments concrets de comparaison)
-
Comme j'ai déjà eu l'occasion de le dire, Visual Studio Community me sert pour développer grâce à un éditeur puissant et des facilités pour naviguer entre les sources. Grâce à un simulateur, je debugge aussi depuis visual avec un outil externe de ma conception qui représente l'Arduino, tout ça sans Arduino connecté bien sûr. Mais au final, lorsque je veux tester sur le vrai matériel, c'est l'IDE Arduino qui compile et télécharge le résultat sur la petite bête.
J'ai essayé PlatformIO dans Visual Studio ou Eclipse au début, et ça ne m'a pas convenu. Trop compliqué, non fonctionnel 'out of the box'. Ca c'était avant. Ca a sans doute évolué depuis ! Et puis comme je reste conscient du besoin que tout marche avec l'IDE officiel, surtout pour mes nombreuses bibliothèques, c'est un bon moyen d'être forcé d'y revenir systématiquement.
PS : J'utilise aussi SublimeText, mais uniquement en remplacement du Notepad de base pour le tout venant des fichiers texte.
-
Merci pour ton retour Thierry
J'ai fait une passe de test sur Sloeber, le plugin pour Ecliipse, hier soir : version actuelle soit 4.04 il me semble.
Deux constats :
- En version PLUGIN à installer depuis le Market Place, le plugin est complexe à déployer, et il pose des problèmes de compatibilité avec un environnement, notamment JAVA, qui soit a peu près UP TO DATE : il y a des contraintes de déploiement liées notamment au CDT sous-jacent qui rendent incompatible le module avec un Eclipse fonctionnel
- En revanche, en version PRODUCT, donc livré packagé avec un Eclipse pré-configuré et toutes les dépendances satisfaites, il marche bien, en particulier sous Ubuntu (20.04 ici). Il suffit de dézipper le package et lancer l'IDE. Il est fourni opérationnel avec une icone XPM, il faut juste se créer un lanceur pour l'avoir dans la barre d'icone du bureau.
Au delà, en version PRODUCT, tout semble fonctionner : édition avec toutes les facilités d'Eclipse, compilation, chargement de l'Arduino, console série, gestionnaire de libraires : bref l'équivalent des fonctions de l'IDE mais dans Eclipse.
Je vais voir ce que ça donne au quotidien pour des projets significatifs et je ferais un retour.
-
Je suis du même avis que Thierry : il vaut mieux, en finale, compiler et tester avec l'IDE Arduino pour tout projet à partager sur Locoduino, afin de permettre à tous d'être dans les même conditions et éviter aux débutants d'installer autre chose que l'IDE Arduino.
Et pouvoir assurer le support de ce que l'on partage !