Ir al contenido

Cómo subir un sketch a un M-Duino o Ardbox desde la línea de comandos de Linux

Sube un sketch a un M-Duino o Ardbox desde la shell de Linux con Arduino CLI o avrdude
10 de diciembre de 2018 por
Cómo subir un sketch a un M-Duino o Ardbox desde la línea de comandos de Linux
Alejandro Jabalquinto

Para subir un sketch a un M-Duino o Ardbox desde la shell de Linux, usa Arduino CLI para compilar y cargar el .ino con un solo comando, arduino-cli compile --upload -p /dev/ttyACM0 --fqbn industrialshields:avr:mduino:cpu=mduino42plus MySketch, o usa avrdude para escribir un archivo .hex ya compilado. En los dos casos tu usuario necesita acceso al puerto serie (grupo dialout) y el nombre de puerto correcto, normalmente /dev/ttyACM0.

Esta guía muestra los pasos en Linux: encontrar el puerto, instalar Arduino CLI con las placas de Industrial Shields, compilar y cargar, y los comandos de avrdude con las herramientas que el Arduino IDE 2 ya instaló.

Qué necesitas

  • Un Arduino PLC de las familias M-Duino o Ardbox y su cable USB.
  • Un PC con Linux (Ubuntu, Debian o similar) o una Raspberry Pi con Raspberry Pi OS.
  • Tu usuario en el grupo dialout, para que pueda abrir el puerto serie sin sudo:
sudo usermod -aG dialout $USER

Cierra y vuelve a abrir la sesión para que se aplique el grupo nuevo.

¿Cómo se encuentra el puerto serie del PLC?

Conecta el PLC por USB y lista los dispositivos serie:

ls /dev/ttyACM* /dev/ttyUSB*

El M-Duino y el Ardbox suelen aparecer como /dev/ttyACM0. Si no estás seguro, ejecuta el comando con el PLC desconectado y otra vez conectado: el dispositivo nuevo es el PLC. Con Arduino CLI instalado, arduino-cli board list muestra los puertos con la placa que detecta.

Método 1: compilar y cargar con Arduino CLI

Cuando Arduino CLI y las placas de Industrial Shields ya están instalados (la guía de abajo explica cómo), compila y carga con el FQBN de tu modelo y tu puerto serie:

arduino-cli compile --fqbn industrialshields:avr:mduino:cpu=mduino42plus MySketch
arduino-cli upload -p /dev/ttyACM0 --fqbn industrialshields:avr:mduino:cpu=mduino42plus MySketch

Guía completa de Arduino CLI. La guía completa, con el sketch de ejemplo, el FQBN de cada modelo y el monitor serie, está en Arduino CLI con un Arduino PLC: compilar y cargar en Windows y Linux.

Método 2: cargar un archivo .hex con avrdude

avrdude solo escribe archivos compilados. Consigue el .hex con Sketch > Exportar binario compilado en el Arduino IDE 2 (va a una carpeta build dentro de la carpeta del sketch) o con arduino-cli compile -e.

No hace falta instalar avrdude desde la distribución: el core de Industrial Shields instala la versión que usan sus placas, con su archivo de configuración (la carpeta de versión depende del core):

AVRDUDE=~/.arduino15/packages/industrialshields/tools/avrdude/6.3.0-arduino17
ls $AVRDUDE/bin/avrdude $AVRDUDE/etc/avrdude.conf

M-Duino (ATmega2560, protocolo wiring, 115200 baudios):

$AVRDUDE/bin/avrdude -C $AVRDUDE/etc/avrdude.conf -p atmega2560 -c wiring -P /dev/ttyACM0 -b 115200 -D -U flash:w:MySketch.ino.hex:i

Ardbox (ATmega32u4, protocolo avr109, 57600 baudios): su bootloader arranca cuando se abre el puerto a 1200 baudios, y después el puerto puede cambiar durante unos segundos. Ábrelo a 1200, vuelve a comprobar el puerto y ejecuta avrdude enseguida:

stty -F /dev/ttyACM0 1200
ls /dev/ttyACM*
$AVRDUDE/bin/avrdude -C $AVRDUDE/etc/avrdude.conf -p atmega32u4 -c avr109 -P /dev/ttyACM0 -b 57600 -D -U flash:w:MySketch.ino.hex:i
OpciónSignificado
-CArchivo de configuración de avrdude. Usa el que está junto al avrdude que ejecutas
-pMicrocontrolador: atmega2560 en M-Duino, atmega32u4 en Ardbox
-cProtocolo del bootloader: wiring en M-Duino, avr109 en Ardbox
-PPuerto serie del PLC
-bVelocidad: 115200 en M-Duino, 57600 en Ardbox
-DNo hace el borrado completo del chip antes de escribir, igual que el Arduino IDE
-U flash:w:file.hex:iEscribe el archivo en la memoria flash, en formato Intel HEX

La versión anterior de esta guía instalaba avrdude desde un PPA de terceros. Ya no hace falta, y el avrdude de tu distribución puede ser una versión distinta de la que usan las placas de Industrial Shields, así que los comandos de arriba usan el avrdude del core.

Cómo hemos comprobado esta guía. Los FQBN, microcontroladores, protocolos, velocidades y la carpeta de avrdude salen de los archivos boards.txt y platform.txt del core AVR 1.2.1 de Industrial Shields, descargado desde la URL oficial de placas el 27 de octubre de 2026, y de un sketch de prueba compilado para estos FQBN con ese core en Ubuntu 24.04. Los comandos de carga no se ejecutaron en un PLC para esta actualización.

Preguntas frecuentes sobre cargar desde la shell de Linux

¿Por qué la carga falla con "Permission denied" en /dev/ttyACM0?

Tu usuario todavía no está en el grupo dialout, o no cerraste la sesión después de añadirlo. Compruébalo con groups.

¿Por qué avrdude se detiene con "not in sync" o "butterfly_recv"?

El puerto, el protocolo o la velocidad no coinciden con el PLC, u otro programa tiene el puerto abierto. En el Ardbox, ejecuta avrdude justo después del reset a 1200 baudios.

¿Puedo programar un M-Duino desde una Raspberry Pi?

Sí. Arduino CLI tiene versiones para ARM, y el índice de Industrial Shields incluye el compilador y avrdude para Linux ARM de 32 y 64 bits.

¿Puedo cargar por Ethernet?

Sí, con un archivo binario y un reset remoto. Consulta cargar un sketch en un PLC por Ethernet, paso 2: archivo binario.

Buscar en nuestro blog

Cómo subir un sketch a un M-Duino o Ardbox desde la línea de comandos de Linux
Alejandro Jabalquinto 10 de diciembre de 2018
Compartir esta publicación

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.

Comparativa de PLCs