Cassetta (chip) per trasferire i programmi.

Uso Arduino Nano per i miei PLC e vorrei dotarlo anche di "slot" in modo che i miei clienti possano inserivi dentro un "chip" (che Mitsubishi chiama "cassetta") da cui fare il download / upload degli sketch aggiornati del loro programma, senza che debba andare io con laptop e cavo.

Il massimo sarebbe inserire una chiavetta USB nella presa USB di Arduino (tramite un cavetto/adattatore) e il programma fa il resto.
Ma posso pensare anche a un chip su una minischedina con uscita I2C.

  • Qualcuno ha mai fatto una cosa del genere?
  • Qualcuno ha un'idea di come implementarla?

Se non sbaglio il bootloader di Arduino, per la programmazione della parte di flash non occupata dal bootloader stesso, si aspetta dei comandi sulla seriale subito dopo il reset (non ricordo esattamente per quanto tempo aspetta).

Se non riceve alcun dato fa partire lo sketch altrimenti riceve i dati binari dello sketch compilato e li carica all'inizio della flash. Al reset successivo verrà eseguito il nuovo sketch.

Secondo me potresti portare fuori i pin della seriale e il reset (D0, D1, GND e RESET) su un connettore al quale collegare un micro (eventualmente un altro arduino) opportunamente programmato per triggerare un reset e inviare via seriale i dati corretti.

Lo sketch in formato binario compilato potrebbe essere preso da una SD o caricato direttamente nella flash del programmatore (in questo caso perderesti qualche K dei 32-bootloader solitamente disponibili) con PROGMEM.

Quello che non so è come ottenere il file binario dello sketch da caricare sui vari dispositivi da programmare dall'IDE Arduino. Eventualmente si potrebbe provare a compilare direttamente con la toolchain o usare Atmel Studio.

Ciao
Silvio

Metti direttamente il nano nella cassetta.
Cambi cassetta, cambi firmware.
Mandi quella nuova e contestualmente ti fai riconsegnare quella vecchia che poi riprogrammi e riutilizzi.

Io ho fatto un lavoro del genere, ma ho dovuto fare dei cambiamenti talmente radicali che poi non è più un Arduino!

La cosa è molto complessa.

Serve innanzitutto il file in formato .HEX dello sketch, che puoi trovare nella directory dove lavorano il compiler ed il linker.

Poi hai due strade: o lo fornisci al cliente, il quale sarà anche fornito di una utility che carica LUI, tramiter PC, l'hex sulla board (con l'hex salvaguardi la natura del tuo programma, che non può essere sondato da occhi "indiscreti"), oppure sviluppi un programma per auto-riprogrammazione da SD-CARD, il quale verifica la presenza di un particolare file (l'HEX appunto), e poi procede con tecniche convenzionali (linguaggio per gli AVR, non certo Arduino) per l'autoaggiornamento della Flash).

E ancora (più facile ma più oneroso come risorse): puoi sviluppare un programma che emula le operazioni fatte da PC, ovvero un secondo microcontrollore che invia reset e successivo programma (letto da SD-Card) alla seriale del Micro da riprogrammare, con il classico protocollo per le operazioni di scrittura a 115.200 baud.

L'aggiornamento da USB è possibile solo per schede dotate di USB nativo, non una USART emulata in USB come per la UNO e la MEGA, quindi tipo Arduino DUE o altre più recenti.

Effettivamente il NANO è così piccolo che si può inscatolare e inserire come una cassetta... Avrei dovuto pensarci prima, anche se sul mio PLC il nano è zoccolato, ma bisogna aprire il contenitore, togliere il NANO, inserire quello nuovo (stando attenti a non invertirlo) e richiudere....
Non alla portata del normale utente che non sa nulla di elettronica e nemmeno di elettricità e per di più è anche impedito su come aprire una scatola ad incastro....

Grazie per le risposte: sempre gentilissimi !!!!