programme mise à jour arduino ou assimilés

Bonjour,

J'ai monté un petit programme d'arrosage automatique pour mes parents. Ils habitent loin, et j'aimerai leur permettre de faire les mises à jour de temps en temps.
J'ai utilisé des arduino pro, donc, sans connecteur USB

Evidement, ils n'y connaissent absolument rien en informatique. Donc pas question d'installer arduino.

J'ai pensé à 2 solutions :

  1. créer un programme pour (windows et linux) qui contient avrdude + le fichier hex, qui permet de reprogrammer l'arduino en le connectant simplement en usb et en 1 click
    Il faut que je fournisse un ftdi usb uniquement, et il faut déplacer le PC pour la mise à jour.

  2. Je ne sais pas si c'est possible : assembler un arduino avec une carte sd qui reprogramme un autre arduino.
    Il faut permettre une connectique simple entre les 2 arduinos.
    Mais on a pas besoin de déplacer le PC

Dans le cas ou 2. est faissable, la facilité de mettre le hex sur la carte SD, me semble masquée par la complexité à relier les 2 arduinos pour la mise à jour.

Merci d'avance pour vos idées. Il me faut quelque chose de très simple à utiliser.

bonjour,
tu entends quoi par mise à jour?
changer des paramètres de temps ou changer un code directement?

Changer le code complet de l'arduino

Bonjour,
Fait une recherche sur le forum, je crois que le sujet à déja été abordé.

Le plus économique (en achat de matériel et temps de développement) : envoyer par la poste un second arduino pro déjà reprogrammé à insérer dans un support.

J'avais pensé, mais c'est pas possible. J'ai tout soudé sur place sur l'arduino directement. C'est indémontable. J'avais juste laissé accessible les broches pour programmer si besoin.

EDIT :Et je vois mal ma mère devoir changer un arduino, même sur un support...

Re,

Christian_R:
Le plus économique (en achat de matériel et temps de développement) : envoyer par la poste un second arduino pro déjà reprogrammé à insérer dans un support.

J'adore pas solution de Christian :grinning:

Proposition :

  1. ftdi USB avec simplification des connexions à l'arduino (par exemple prévoir un connecteur unique entre la sortie du ftdi et l'entrée de l'arduino)

  2. teamviewer et prise en main du PC à distance pour faire toi-même la manip de téléversement.
    Ils ont internet, au moins, tes parents ? :smiley:

  1. teamviewer et prise en main du PC à distance pour faire toi-même la manip de téléversement.
    Ils ont internet, au moins, tes parents ? :smiley:

c'est la solution que j'allais proposer aussi, mais le nom m'échappait alors que je l'utilise très souvent :frowning:

bricoleau:
Proposition :

  1. ftdi USB avec simplification des connexions à l'arduino (par exemple prévoir un connecteur unique entre la sortie du ftdi et l'entrée de l'arduino)

  2. teamviewer et prise en main du PC à distance pour faire toi-même la manip de téléversement.
    Ils ont internet, au moins, tes parents ? :smiley:

  1. je comprends pas. Si tu parles de la connexion ftdi usb -> arduino On fait difficilement plus simple que ce qui existe déjà. Je crois avoir laissé mon cable 5 fils dessus en plus.

  2. prise en main à distance, ça me plait pas. Et avec sa connexion pourrie... bof. J'arrive déjà pas à aller sur deezer quand suis chez elle.

Re,

@+

yepppp, merci icare :slight_smile:

2 solutions:

  1. l'arduino de téléchargement
    Il me semble que le protocole STK500 n'est pas très compliqué.
    Je verrais bien un arduino avec une carte sd contenant le .hex.

On le branche sur la carte à mettre à jour
On met l'ensemble sous tension.
On appuie sur un bouton
La LED de l'arduino clignote rapidement pendant le chargement.
Lorsque le téléchargement est terminé, la LED s'éteint.
On coupe l'alimentation.
On retire l'arduino de téléchargement.

  1. mise à jour par carte SD
    Si tu as la possibilité d'ajouter un lecteur de carte SD sur ton système d'arrosage.
    Quelqu'un a développé une version du bootloader qui gère la mise à jour du code par l'introduction d'une carte SD. Voir là embedded/avr/2boots at master · thseiler/embedded · GitHub

Edit: bon je crois que j'ai été doublé

Je vais me pencher sur la maj avec carte SD.

C'est interessant ça, ça permettrait aussi les maj par internet avec un shield réseau

Bonjour,
Tu nous tiens au courant de ton avancement.
@+

Bon, voilà, j'ai récupérer du matos. Je vais faire les tests sur un arduino ethernet.

  • Première étape récupérer et compiler 2boot.

git clone GitHub - thseiler/embedded: some open source embedded stuff
cd embedded/avr/2boots
make

Et là c'est le drame.

make
[ -d build ] || mkdir build

----------[2boots-atmega168-8000000L-nommc-board-arduino.hex]-------------------
Compiling 2boots for:

  • board-arduino
  • MCU:atmega168 @ 8000kHz
  • MMC: nommc

avr-gcc -g -Wall -Os -funsigned-char -fno-split-wide-types -fno-inline-small-functions -mcall-prologues -ffunction-sections -fdata-sections -ffreestanding -combine -fwhole-program -fno-jump-tables -mmcu=atmega168 -DF_CPU=8000000L -Wl,--section-start=.text=0x3800 -Wl,--relax -nostartfiles -Wl,-gc-sections board-arduino.c mmc_fat.c stk500v1.c prog_flash.c -o build/2boots-arduino-atmega168-8000000L-nommc.elf
avr-gcc: error: unrecognized command line option ‘-combine’
Makefile:96: recipe for target '2boots-atmega168-8000000L-nommc-board-arduino.hex' failed
make: *** [2boots-atmega168-8000000L-nommc-board-arduino.hex] Error 1

L'option -combine n'est pas reconnue par avr-gcc, je l'enlève du Makefile.

make
[ -d build ] || mkdir build

----------[2boots-atmega168-8000000L-nommc-board-arduino.hex]-------------------
Compiling 2boots for:

  • board-arduino
  • MCU:atmega168 @ 8000kHz
  • MMC: nommc

avr-gcc -g -Wall -Os -funsigned-char -fno-split-wide-types -fno-inline-small-functions -mcall-prologues -ffunction-sections -fdata-sections -ffreestanding -fwhole-program -fno-jump-tables -mmcu=atmega168 -DF_CPU=8000000L -Wl,--section-start=.text=0x3800 -Wl,--relax -nostartfiles -Wl,-gc-sections board-arduino.c mmc_fat.c stk500v1.c prog_flash.c -o build/2boots-arduino-atmega168-8000000L-nommc.elf
board-arduino.c: In function ‘main’:
board-arduino.c:62:45: warning: function with qualified void return type called [enabled by default]
if (!(reset_reason & _BV(EXTRF))) app_start();
^
stk500v1.c: In function ‘handle_addr’:
stk500v1.c:236:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
address = ((uint16_t) &pagebuffer[0]);
^
/tmp/ccqz1zoN.o: dans la fonction « main »:
/home/vohu/embedded/avr/2boots/board-arduino.c:70: référence indéfinie vers « stk500v1 »
collect2: error: ld returned 1 exit status
Makefile:96: recipe for target '2boots-atmega168-8000000L-nommc-board-arduino.hex' failed
make: *** [2boots-atmega168-8000000L-nommc-board-arduino.hex] Error 1

Là ça me dépasse. Est ce que l'option combine qui pose problème ? Je crois avoir compris qu'elle servait à mettre tous les fichiers en un seul pour la compilation.