Nuova scommessa: Programmare ATmega da ATmega + sdcard

Salve a tutti! Considerando l'elevata specializzazione di alcuni nostri utenti riguardo la programmazione degli ATmega, mi chiedevo se non fosse possibile programmare un ATmega da un altro ATmega, prelevando il codice da aggiornare da una sdcard, e perche' no, anche da una eeprom.

Mi piacerebbe dotare alcuni lavoretti che lavorano sul web mediante ethernet shield, di un modulo di auto aggiornamento contenente un atmega (328P ma anche di meno costosi se possibile) e una eeprom, oppure sd card (anche se l'ethernet shield ne dispone già di uno).

Che ne dite?

Posto che finora non ho ancora mai lavorato né con Sd card che con eprom, non ho capito niente di ciò che hai e vuoi ottenere:
in pratica hai delle schede sparse in giro che operano interfacciate ad internet e vorresti aggiornarle senza doverti recare sul posto? Non potresti spiegare più dettagliatamente la struttura hardware con cui operi (senza ovviamente dover spiegare a cosa serve, quelli sono fatti tuoi...)?

Posso pure spiegare, si tratta di una piccola stazione meteo che invia la temperatura in rete, per cui uno un normale arduino uno + l'ethernet shield. Ecco, una volta che installo la stazione, recarmi in loco è mooooolto difficile in quanto dista diversi km.

Potendo aggiornare a distanza non avrei alcun problema!

Come già detto gli esperti siete voi, in ogni caso una idea su come potrebbe funzionare me la sono fatta:

Innanzitutto facciamo in modo che l'atmega della stazioncina sia collegata al modulo di aggiornamento proprio come usiamo collegare due arduino UNO in modalità programmazione (Uno as programmer, ne sai qualche cosa??? :slight_smile: :))

Poichè da pc è possibile usare un atmega come programmatore, l'unica differenza in questo caso sarebbe che l'atmega anzicchè prendere i dati dalla seriale (pc) li prelevi direttamente dalla sd/eeprom. Che ne dite? Panzanata?

Ovviamente precedente l'aggiornamento è stato prelevato dalla rete e salvato sul supporto di memoria scelto!

...anzicchè prendere i dati dalla seriale (pc) li prelevi direttamente dalla sd/eeprom
...l'aggiornamento è stato prelevato dalla rete e salvato sul supporto di memoria scelto

Come farai a mettere il nuovo sketch, anche fosse solo l'hex sulla eeprom, sd o altro senza essere là fisicamente?

me lo scarico usando l'ethernet shield che collego all'adsl oppure ad un modem + penna umts

Ciao,
il modem/router è tuo?
Nel senso, ci puoi mettere le mani?

Nel caso di chiavetta UMTS, come pensi di gestire la connessione (non da Arduino, per forza XD)?
O pensi di utilizzare piccoli device tipo Linksys NSLU2?

Perchè, in entrambi i casi, potresti utilizzare openwrt, con cui potresti poi fare anche upload di sketch.
http://www.arduino.cc/playground/Italiano/Avrdude-openwrt

Considerando poi che per fare l'aggiornamento utilizzeresti la seriale, a tal punto verrebbe meno l'esigenza di utilizzare lo shield ethernet.

Potresti infatti fare tutto utilizzando arduino connessa in seriale a openwrt.

Premetto che non so mettere mani nel mondo linux, in ogni caso il modem/router con ingresso usb per penna umts ancora lo devo acquistare.

Per scaricare il file pensavo di realizzare una chiamata ad un file php per sapere se esiste un file dopodichè procedere con il download dello stesso. Onestamente non so come poter scaricare un file, ma considerando che è possibile inviare/ricevere informazioni, non penso che sia un problema scaricare un file!

Del modulo ethernet ne ho di bisogno perche' la stazioncina non deve essere interfacciata ad alcun pc, ma deve funzionare autonomamente.
Niente Linksys NSLU2 e simili (tipo Anemos)!!

Flashare con uno sketch salvato su una SD è possibile.
Ci sarebbe da lavorare molto come codice ma, ripeto, è possibile.

Purtroppo io più di lanciare l'idea non penso di poter fare, in ogni caso se reputate la cosa interessante, si ci può "giocare" un pò!

Prima di tutto, il programmatore dev'essere un ATmega 328, oppure si può utilizzare un micro più economico?

Secondo, si dovrebbe capire come lo sketch ArduinoISP interpreti il segnale che riceve da seriale, o meglio, che cosa riceve da seriale? Caratteri? Viene inviato carattere per carattere il contenuto dello schetch in formato bin?

Lo sketch va letto in formato binario e flashato così come viene ricevuto.
Se si intende usare la SD, non si può usare un micro inferiore perché la libreria di gestione della SD prende diversi Kb di memoria. Casomai si può usare un Atmega168, se proprio si vuol risparmiare qualche centesimo.,

ciao

con questo bootloader sulla ethernet puoi programmare via SDCARD o via seriale

in particolare quello che funziona sulla ETH è questo

Stiamo testandolo per metterlo di default su quelle in produzione.

m

ottimo!!! Che dire, meglio di così?? :smiley:

C'è anche lo schetch che per "battezzare" la scheda :smiley: Vediamo se potrò fare qualche test uno di questi giorni!!