Aggiornare firmware da eseguibile

Mi stavo chiedendo se l'aggiornamento via compiler di Arduino fosse l'unica maniera di aggiornare il firmware di un Arduino. E' possibile realizzare una sorta di installer che va ad aggiornare il firmware in via del tutto automatica e trasparente senza dover utilizzare l'interfaccia di Arduino?

Puoi usare un programmatore comandato da avrdude ma devi prepararti un firmware in versione hex.

Il compilatore dell'arduino non da la possibilita' di salvare il firmware in formato ex? oppure dovrei successivamente estrarlo dall'atmega?

Che io sappia l'IDE di Arduino fa tutto in automatico.
Leggi il thread "Eseguibile Arduino?" in cui MauroTec spiega bene come lavora l'IDE.

ciao GianfrancoPa

Non so cosa intendi per "firmware".

Sul ATmega del Arduino ci sono presente 2 programmi:

  • il bootloader che permette di fare un upload attraverso seriele / USB.
  • il programma (sketch) che scrivi Tu e lo compili e trasmitti attraveso il IDE al Arduino.
    Il bootloader resta e il programma lo cambi a Tuo piacere.

Il IDE produce il File .HEX che puoi prendere e caricare con un programmatore ISP sul ATmega.
In questo momento non so dirti in quale cartella viene messo, ma quello puoi trovarlo semplicemente anche Tu facendo un trovi dal explorer di Windows.

Nel pacchetto IDE ci sono inclusi anche i Bootloader per poter metterli su controllori comprati vergini.

Ciao Uwe

Normalmente carico lo schetch con il programma dell'Arduino. Volevo sapere se c'era la possibilità di poter inserire lo stesso schetch all'interno di piu' arduino, senza dover passare dal loro software, in maniera del tutto automatica, magari con un semplice eseguibile che fa tutto quanto da solo.

Ciao GianfrancoPa, ma tu gli altri post li leggi.
Comunque l'ide arduino usa un programma chiamato AVRDUDE per caricare lo scketch nel microcontrollore.

Tutti le schede simili ad arduino possono anche essere programmate da un programmatore che si compra o si autocostruisce. Si collega il programmatore tramite il cavetto al connettore ICSP di arduino e da computer gli dici di fare il trasferimento.

Ora io vorrei sapere cosa se ne fà un utente di un qualcosa che programmare più microcontrollori tutti insieme. Commerciale? bussines?

Ciao.

premete shift quando premete il pulsante per compilare per scoprire tutti file generati dall'ide e sapere dove finiscono

Faccio parte di un'associazione meteorologica senza fini di lucro, e sto studiando con Arduino uno strumento che possa esserci utile per la rilevazione dei dati, considerando che le strumentazioni professionali costano centinaia di euro bene che vada.

Per tale ragione ho già provato diversi sensori termometrici (ricordi i post sui sensori Sensirion? Sulla PT100?), e altri ne ho altri ancora da provare; sto studiando le comunicazioni wireless tramite xbee per consentire collegamenti a distanza (le stazioni vanno installate all'aperto); sto cercando di capire come acquisire dati da periferiche usb: le maggiori stazione meteorologiche (Davis, Oregon, etc) utilizzano tale bus, e per tale ragione sarebbe utile un sistema con datalogger ed invio automatico dei dati tramite web (con l'Ethernet shield), questo per evitare di lasciare PC accesi giorno e notte con tutti i problemi che comportano (consumi, crash, etc).

Cosa serve poter inserire il "firmware" in maniera veloce? Per consentire eventuali update a tutti coloro che sfrutteranno tali sistemi che sto studiando, ovviamente nella speranza che possa concretizzare quanto sto facendo. Poichè non tutti hanno le competenze base per effettuare un upgrade, volevo avere informazioni a riguardo. L'interessato provvederebbe a collegare l'Arduino al pc, far partire l'eseguibile e stop! Arduino aggiornato.

Ringrazio molto per la disponibilità che hai nel dare risposta a molte delle mie domande (ovviamente siete in tanti a farlo), e capisco che a volte ripetere le cose può essere tedioso, ma chiedo ulteriore pazienza, purtroppo questo e' un ambiente nuovo per me e per tale ragione a volte perdo tempo a capire!!

Grazie mille

Una curiosità: siccome precisi che la persona che aggiornerebbe gli Arduino collegherebbe la scheda ad un PC (presumo un portatile) allora ti consiglio proprio di usare l'IDE visto che offre un ambiente facile e veloce per questa operazione, a differenza dell'uso di avrdude, che implica a monte la creazione del file .hex ed al "tecnico" che esegue l'aggiornamento l'utilizzo della shell.

Per quanto riguarda il logging, puoi eseguirlo sia su EEPROM sia su SD: entrambe le soluzioni sono supportate dalle librerie standard di Arduino (dalla vers. 0022 in poi). Alcune Ethernet shield integrano sia la gestione della connessione Ethernet sia uno slot per SD/microSD: in questo modo hai 2 piccioni con 1 fava.
Ti manca solo un RTC per tenere il tempo e sei a posto.

quoto.
L'IDE lo puo' usare anche chi non sa niente di elettronica: colleghi arduino, avvii l'IDE, carichi lo sketch e premi il tasto upload.
fine.

Bella la faccenda dello SHIFT! :slight_smile:

se la shell non ti sta simpatica googla avrdude GUI
a me personalmente non piace molto se non su xp, vista e 7 troppi controlli e crasha. ma penso esistano varie versioni magari sono io niubbo... ;D

bello eh shift? scoperto da poco ma utilissimo

Quanto sarà il tempo cercherò questo programma, ma già i vostri consigli sono piu' che preziosi!!

L'RTC l'ho già implementato, ma a dire il vero ho già implementato una stazione che utilizza i sensori di cui ho gia' parlato, con salvataggio dei dati nella eeprom e gestione delle minime e massime. Il problema e' pero' lo spazio limitato! Avevo pensato di usare altre eeprom, solo che quando ho scoperto l'esistenza dell'ethernet shield ho subito pensato ad un web server che salva ed organizza i dati in maniera testuale.

Voglio includere anche la possibilita' di scaricare questi file via web server, ma anche la creazione di pagine html preformate, che utilizzano anche dei template, con l'opzione dell'upload automatico su sito web.

I propositi sono buoni, ma la strada e lunga... vi tempesterò di domande!! ;D

Ciao GinfrancoPa, che forse sei in provincia di palermo?
Io lo sono.

Scusa leggo evitando di interpretare ma quando scrivi:

Volevo sapere se c'era la possibilità di poter inserire lo stesso schetch all'interno di piu' arduino, senza dover passare dal loro software, in maniera del tutto automatica, magari con un semplice eseguibile che fa tutto quanto da solo.

Per me più arduino significa due o più contemporaneamente.

Comunque viste le necessità io non sono a conoscenza di un programma che faccia quello ti serve.
Avrdude viene messo in esecuzione da riga di comando dove devi anche specificare una sfilza di argomenti, quindi non è pratico per l'utente ignaro.

L'idea potrebbe essere quella di fare un'applicazione web in flash o in javascript, che permetta all'utente di scaricare e scrivere il firmware in un solo apparente passo per l'utente.

L'applicazione web scarica il firmware, poi tramite avrdude legge la versione del firmware oppure lo acquisisce da micro e lo salva in una file nomefirmware-versione_data, compara quest'ultimo con il firmware scaricato se è diverso scrive il nuovo altrimenti avverte l'utente.

Ps: Un modo sicuro per sapere qual'è la versione del firmware presente nel micro deve essere trovato altrimenti si rischia di confondere l'utente.

Poi si può anche creare una versione modificata di avrdude ma c'è da controllare la licenza.

Ciao.

Se per aggiornare il firmware intendi un sistema che lo faccia internamente all'Arduino, ti dico che non si può programmare l'Atmega senza usare un qualche altro dispositivo esterno. Mi ci sono già scontrato, con questo problema.

Una soluzione alternativa potrebbe essere l'uso di Bitlash, un linguaggio interpretato che esegue file script esterni all'Arduino, ad esempio salvati su una SD. In questo caso basterebbe aggiornare il file testo ed avresti risolto. Però non so che potenzialità ha questo linguaggio: riesce ad interfacciarsi con i pin, quindi può leggere/scrivere su periferiche esterne ma non so ad esempio se riesce a fare il log dei dati su SD o su EEPROM esterna (su quella interna ci riesce ma hai solo 1 KB di memoria).

@ MauroTec e uwefed

Non ho mica detto di non essermi espresso male :slight_smile:
Nella mia risposta non c'era alcun tono polemico, ho solo voluto essere chiaro (dopo però...) perchè alla fine mi sono accorto che stato diventando troppo "misterioso", e non ce n'era motivo!!

Sembra interessante la soluzione in Flash, poichè lo conosco un poco, vedrò di approfondire la cosa, assieme a tutto il resto ovviamente! Mi avete dato una infinità di alternative, in ogni caso tutte al di fuori, e di molto, delle mie conoscenze attuali. grazie mille!!

Ps Si, sono di Palermo città!!

Visto che monti un XBee

Lo sketch puoi inviare anche attraveso XBee usandolo come collegamento seriale virtuale.
Questo funziona bene se fai un collegamento 1 a 1 tra 2 XBee. Nel caso che vuoi collerage un XBee (PC) a tanti XBee (i vari arduini) non so come é possibile scegliere il singolo Arduino da parte del IDE o un altro interfaccia. Questo é necessario perché l' upload é una trasmissione in tutti due i sensi e non solo da PC al Arduino.

Ciao Uwe