Introducción
En este post veremos cómo tomar el archivo binario de un sketch.ino
Requisitos
Ethernet o 20 I/Os PLC: Ethernet PLC 20 I/Os PLC
Placas de Industrial Shields: Placas de Industrial Shields:
Descripción
En primer lugar, tenemos que conocer las diferencias entre la carga de un código a través de USB y la carga a través de Ethernet. Cuando se sube un código a una placa Arduino usando el USB, el software Arduino IDE hace automáticamente su magia y transforma el código sketch.ino en un archivo.hex que es el que se sube automáticamente. Si queremos subir un código a través de Ethernet tenemos que hacerlo manualmente. Para empezar, no subimos un archivo .hex como en el USB, ahora es un archivo .bin por lo que la primera parte es conseguir este archivo binario.
Es un proceso diferente para obtener el archivo binario usando Windows que usando Linux, así que este post será separado en estas 2 partes.
1. Parte común. Modificación de una preferencia en el software Arduino IDE.
En el software Arduino IDE vaya a Archivo -> Preferencias. marca la casilla Mostrar salida verbosa durante la compilación *opcional: Cargar (no es necesario).
2. Verifica tu boceto en el software Arduino IDE.
*Ten en cuenta por el momento que quieres cargar un código usando Ethernet tienes que ser hecho un Reset al PLC, si el PLC no ha sido configurado para resetearse automáticamente, tendrá que ser manualmente (presionando físicamente el botón de reset). Aquí se deja el post que explica el código que hay que añadir para hacer un reset remoto.
COMO RESETEAR UN PLC USANDO EL ETHERNET SHIELD
3. Windows
Para crear el archivo binario necesitamos saber dónde se encuentra el archivo .hex. Este archivo se crea en una carpeta temporal. En el momento en que se verifica un código teniendo esta marca de Compilación (en Preferencias), podremos ver la ruta.
Tenemos que situarnos en las últimas líneas. Después de "Enlazando todo..." la siguiente línea muestra este camino. No se muestra en la primera foto porque es demasiado grande para representarla en una sola foto. En la siguiente foto acabo de mover a la derecha las ventanas negras encontrando la ruta del archivo temporal. (SUGERENCIA: busque /Temp/)
Por defecto, debe guardarse en la carpeta temporal del sistema Windows de su usuario.
Si vas a ese directorio encontrarás algo así en la carpeta temporal:
Como se puede ver he encontrado mi archivo .hex creado después de verificar mi boceto.
3.1 Abrir CMD
Esta es una terminal para insertar comandos que Windows entiende, usaremos esta terminal para enviar un comando que ejecutará una herramienta de Arduino IDE que convertirá el .hex en el .bin.
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-objcopy.exe" -I ihex [sketchname].ino.hex -O binary [sketchname].ino.bin
Tenemos que situarnos en las últimas líneas. Después de "Enlazando todo..." la siguiente línea muestra esta ruta. (SUGERENCIA: busque /Tmp/)
Por defecto, debe guardarse en la carpeta temporal del sistema Linux.
Si vas a ese directorio encontrarás algo así en la carpeta temporal:
Como se puede ver he encontrado mi archivo .hex creado después de verificar mi boceto.
Una vez que hemos llegado a esta parte tenemos que convertir el archivo .hex en un archivo .bin utilizando la herramienta de Arduino IDE avr-objcopy. Para implementar esta parte necesitamos abrir una terminal y dirigirnos al directorio donde se encuentra el archivo .hex usando el comando cd "path". Una vez que hayamos llegado allí tendremos que utilizar el siguiente comando para implementar la compilación binaria del archivo .hex.
avr-objcopy -I ihex [sketch].hex -O binary [sketch].bin
Y aquí está el resultado:
1ª PARTE:
CARGANDO UN SKETCH A UN PLC USANDO ETHERNET. PASO 1. ARIADNE BOOTLOADER
3ª PARTE: CARGANDO UN SKETCH A UN PLC USANDO ETHERNET. PASO 3. CLIENTE TFTP
Cargar un sketch a un PLC mediante Ethernet - Paso 2 - Archivo binario