Cargar un HEX almacenado en una SD desde un arduino a otro

Hola

Después de volverme loco buscando la solución a esto he decidido preguntar a ver si alguien sabe alguna forma o conoce referencias o links de como resolver este caso.

Las cosas están así:

He montado un clon de 'Arduboy', una miniplataforma para juegos OpenSource. (usando un pro-micro)

Lo que me 'molesta': Cada vez que quiero cambiar de juego tengo que conectar por USB al PC y cargar desde el PC.

Lo que me gustaría: Tener una tarjeta SD con los juegos compilados (archivos HEX) y poder cargar cualquiera desde la tarjeta.

La solución que se me ocurre: Usar otro arduino con un lector de tarjetas y que de alguna manera yo pudiera seleccionar al archivo de la tarjeta y 'flashearlo' por USB al clon de Arduboy.

Creo que tengo hardware para eso: USB host shield, arduinos varios, displays nokia y botonoes para mostrar un listado de archivos de la tarjeta, seleccionar una y mandarlo.

Puedo hacer el programa que me muestre el listado de archivos, y me permita seleccionar uno. Hasta aquí bien

Pero.... No se como hacer que el arduino que selecciona los archivos 'flashee' el arduboy con el .HEX seleccionado.

También he pensado que sería genial tener un arduino con los programas compilados y cargador en una SD para poder 'flashear' otros arduinos sin tener que depender tanto del PC.

Espero haber expuesto bien el caso. Si alguien tiene alguna duda que pregunte y espero que sea de utilidad para más miembros de la comunidad

Saludos Fernando

Cambio toda mi respuesta porque encontré información que dice que se puede hacer

See topic #16812, “Load sketch code from SD Card”, in forum.arduino.cc, which explains how to replace the ordinary Arduino bootloader with one that can load programs from an SD card.

Also see Bootdrive loads Arduino sketches from SD card at dangerousprototypes.com, which gives different code to do the same thing. It also mentions BootDrive for Arduino from baldwisdom.com. Note, the program code that these loaders install into flash is already compiled, as opposed to being original C source code. If you want to load source-level code into the Arduino, look for an interpreter / interpretive language to run on the Arduino.

Fuente : Load sketch code from SD Card Solo un comentario. El hilo es del 2009, comienzos del Arduino. Han pasado 8 años casi.. asi que cuidado con la versión de IDE con la que trabajes. El segundo enlace BootDrive loads Arduino sketches from SD Card tiene 5 años.

como tu requerimiento es más práctico que teórico para no depender del ordenador te recomiendo que uses el móvil para programarlo

otra opción es que uses una raspberry pi para correr el ide de arduino

surbyte: Cambio toda mi respuesta porque encontré información que dice que se puede hacer Fuente : Load sketch code from SD Card Solo un comentario. El hilo es del 2009, comienzos del Arduino. Han pasado 8 años casi.. asi que cuidado con la versión de IDE con la que trabajes. El segundo enlace BootDrive loads Arduino sketches from SD Card tiene 5 años.

Gracias por los links, es segundo 'BootDrive' creo que puede ser un buen punto de partida. Tengo mucho que investigar.

Esto lo hago por puro hobby, espero conseguir algo que funcione y compartirlo con la comunidad. No garantizo nada ;)

GO_zalo: como tu requerimiento es más práctico que teórico para no depender del ordenador te recomiendo que uses el móvil para programarlo

otra opción es que uses una raspberry pi para correr el ide de arduino

He considerado las opciones de movil/raspberry pero no es lo que tengo en mente.

La idea es tener un 'cargador' de archivos HEX previamente compilados en una SD montado sobre un Arduino con un pequeño display (nokia/oled,LCD) para navegar por los archivos de la SD y cargarlos sobre otro arduino.

He encontrado cosas pero no termino de comprender bien como funciona todo.

Más que una necesidad es una idea que se me ha pasado por la cabeza y estoy investigando como poder hacerla.

Gracias por las recomendaciones.

¿Y si intentaras simular lo que hace la IDE con el Arduino?

Por el lado de hardware: sería con los pines del USART (0 y 1), tierra, alimentación (5v) y alguno que controle al RESET.

Por el lado de software: tendrías que estudiar cómo funciona el bootloader, el protocolo de comunicación, manejo de errores y manipulación de archivos binarios.

también podrías programar el objetivo mediante icsp? lo digo por que podrías usar como base el código que se mete en un arduino cuando se usa este para programar otro a través del ide de arduino.

en ese caso seguramente el ide de arduino este enviando el hex al arduino programador y es este el que controla el icso

me explico??

Lucario448: ¿Y si intentaras simular lo que hace la IDE con el Arduino?

Por el lado de hardware: sería con los pines del USART (0 y 1), tierra, alimentación (5v) y alguno que controle al RESET.

Por el lado de software: tendrías que estudiar cómo funciona el bootloader, el protocolo de comunicación, manejo de errores y manipulación de archivos binarios.

Creo que esa es la clave. Tengo que mirar el link que me recomendaron antes sobre 'BootDrive' porque parece que tiene el código resuelto y un esquema de cableado y pines similar al que tu propones.

Gracias

GO_zalo: también podrías programar el objetivo mediante icsp? lo digo por que podrías usar como base el código que se mete en un arduino cuando se usa este para programar otro a través del ide de arduino.

en ese caso seguramente el ide de arduino este enviando el hex al arduino programador y es este el que controla el icso

me explico??

Creo que lo he entendido, pero no veo claro como 'enganchar' eso con una SD llena de archivos HEX....no se... la idea es buena pero por ahora voy a investigar la opción del 'BootDrive'

Sigo pensando que son muchas las posibilidades de llevar un cargador basado en Arduino y una tarjeta SD con los HEX preparados para flashear otros arduinos.

Pensando en instalaciones de exterior o actualizaciones de algún programa, puede ser bastante cómodo compilar y testear en casa tranquilamente con el PC para luego llevarte el HEX y cargarlo donde lo necesites.

Gracias por comentar