"pousser" un code adruino depuis un programme tiers

Bonjour à tous,

Une question de faisabilité, mais je n'ai pas trouvé d'exemple pertinent.

Je créé un montage de mesures avec un arduino qui communique avec un programme (codé en pascal avec lazarus/linux, mais peu importe je pense)

Il est destiné à être diffusé à des utilisateurs pas forcément experts, donc je souhaite une utilisation la plus simple possible. J'arrive à communiquer entre l'arduino et le le soft par l'USB, c'est cool.

Mais en cas de mise à jour de la partie arduino : est-il possible de modifier le code de l'arduino sans passer par l'IDE arduino.

Idéalement, l'utilisateur récupère un fichier binaire (ou le programme le récupère tout seul par internet) et le programme met à jour l'arduino.

Avez-vous un exemple de ce genre de chose ?

Merci

Bonsoir @ProfesseurMephisto

il est question à plusieurs reprises de "l'arduino", selon la nature de la carte des solutions sont plus ou moins envisageables

Idéalement, l'utilisateur récupère un fichier binaire (ou le programme le récupère tout seul par internet) et le programme met à jour l'arduino.

une carte à base d'ESP32 programmée initialement avec l'IDE Arduino peut au besoin se mettre par la suite à jour toute seule en accédant à un site Internet pariculier pour charger une nouvelle version de son code machine ou firmware.

un exemple si vous prenez un ESP32

Merci pour ces réponses mais je suis parti plutot sur un nano... (j'aurais dû préciser :frowning:)

comment voulez vous faire ça sur une Nano... :man_shrugging:

➜ il faut passer par un soft qui fait grosso modo la même chose que la dernière commande de l'IDE qui fait l'upload avec avrdude et vous devrez fournir le binaire

sur windows je crois qu'il existe des softs comme XLoader ici ou ici aussi (jamais essayé si ça se trouve c'est un virus :slight_smile: - le code source est semble-t-il ici ) pour faire ça simplement

Oui, c'est un fichier texte, tu peux le modifier comme tu veux.
Mais je ne vois pas trop ce que tu voudrais modifier sur le PC de l'utilisateur ou alors tu mélange plusieurs questions.

le programme qui dialogue avec ton Arduino Nano, si c'est toi qui le développe, tu peux exécuter des commandes, soit le programme proposer par @J-M-L, soit les programmes utilisé par l'IDE et fournis par Atmel, qui permet de compiler et téléverser le binaire sur l'Arduino.

Je ne pense pas qu’il parlait du code C++ mais plutôt du binaire qu’on telecharge dans l’arduino

Tout à fait !!

"l'arduino" évoqué étant une carte Arduino Nano (cf #4)

1-l'utilsateur récupère sur internet un fichier .hex
2-l'utilisateur instlalle sur son smartphone Android (ou peut être même iOS) une application équivalente à Avrdude (on en vois apparaître, du moins sur Google Play)
3-l'utilisateur relie la carte nano au smartphone en OTG, la laison série USB étant aceptee par l'appli
4 il flashe son ATMega328 avec l'application qui va bien

Des applications Android comme Serial USB terminal, GUI-O..... savent dialoguer par USB OTG avec une carte Nano, on peut donc rasisonnablement espérer que fonctionne un transfert d'octets suivant le protocole particulier attendu par le bootloader.

Oui c'est probable :slight_smile:

Pourquoi faire ça, alors qu'il a un programme PC connecté à l'Arduino qui peut le faire, si son PC est connecté à internet?

j'ai compris , qu'il sagit de donner aux 'clients finaux' une possibilité de mise à jour simple du 'firmware' sans IDE Arduino.

Si @ProfesseurMephisto diffuse à ses 'clents' son progarmme qu'il a développé sous Lazarus il peut aussi modifier son programme pour y inclure la fonctionnalité de 'mise à jour ' du firmware de la carte Nano par déclenchement d'Avrdude

le coup du smartphone c'était juste pour dire qu'on peut faire cette mise à jour 'sur site' sans IDE Arduino... et sans PC :wink:

1 Like

sur iOS il y a sans doute get-console qui doit faire le job avec un câble externe adapté de chez Redpark Cables ou avec Airconsole qui fait le job en BLE

(je n'ai jamais essayé - autant le faire depuis son Mac :slight_smile: )

Je vois 2 possibilités

  1. puisque tu as une application qui communique par l'USB, que le protocole utilisé par le bootloader est documenté ton application pourrait prendre en charge le transfert du code vers la cible.
  2. tu installes à coté de ton application avrdude et tu fais un petit bash qui va appeler avrdude en lui passant en argument le code à télécharger et les bon paramètres ( les mêmes que dans la ligne de commande de l'IDE). A charge pour l'utilisateur ou ton application d'appeler le bash en question.

Bonjour

avrdudess fait trés bien tout ca sous windows.
j'ai même réalisé un programme lazarus qui permet de charger le fichier EEPROM et afficher les différentes données dans des cases que l'on peut modifier (le créateur du programme connait le format et l'ordre des données) on modifie donc les données par exemple vitesse maxi avant, vitesse maxi arrière , pourcentage etc ...) puis on sauve le fichier et enfin on le réinjecte avec avrdudess

ca marche très bien (même si j'ai pas encore finalisé les journées ne font que 24 h)

ça évite de recompiler tout a chaque modif.

Ba autant appeler avrdude directement depuis ton programme PC, pourquoi s'embêter par un script tierce?

Pourquoi passer par une interface graphique de avrdude et ne pas juste utiliser avrdude, si tu as fait ta propre interface graphique?

Parce que j'avais pas le temps d'analyser les commandes avrdude et de lancer le process a partir de lazarus. mais évidemment avec un peu de temps (et de compétence) il est possible de travailler directement a partir de mon interface graphique et invoquer avrdude en direct depuis le programme.
Comme je disais les journées font 24 H
ca sera dans un deuxième temps .
Mon propos était de montrer que c'est possible.

En fait j'ai bricolé ce truc pour changer une config dans une EEprom d'un at85 au moment ou j'ai réalisé mon programmateur icsp avec nano.

Mon but et que le commun des mortel sachant utiliser un programme puisse enregistrer sa propre config sur un variateur.

Ha ok, je pensais que avrdudess donnait la commande avrdude qu'il utilisait et donc qu'il n'était pas nécessaire de passer par avrdudess, pour qu'il lance l'avrdude

Merci pour toutes les réponses et toutes mes excuses pour vous avoir laissé en causer toute la journée sans intervenir...

Le passage par avrdude ressemble bien à ce que j'avais en tête comme fonctionnement ! Désolé de ne peut-être pas avoir été suffisamment clair.

Bonjour

alors je confirme qu'il est possible d'invoquer AVRDUDE a partir d'un programme lazarus

la preuve en image.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.