Para subir un sketch a un Arduino PLC (M-Duino o Ardbox) desde la línea de comandos de Windows tienes dos opciones. Arduino CLI compila el .ino y lo carga con un solo comando: arduino-cli compile --upload -p COM5 --fqbn industrialshields:avr:mduino:cpu=mduino42plus MySketch. avrdude solo escribe un archivo .hex ya compilado: avrdude -C avrdude.conf -p atmega2560 -c wiring -P COM5 -b 115200 -D -U flash:w:MySketch.ino.hex:i. Las dos necesitan el puerto COM del PLC y, para ejecutarlas desde cualquier carpeta, la carpeta del programa en el Path de Windows.
Esta guía muestra los pasos en Windows con capturas: añadir una carpeta al Path, encontrar el puerto COM, cargar con Arduino CLI y cargar un .hex con el avrdude que el Arduino IDE 2 ya instaló.
¿Arduino CLI o avrdude: cuál necesitas?
| Arduino CLI | avrdude | |
|---|---|---|
| Entrada | El sketch (.ino) | Un archivo compilado (.hex) |
| Compila | Sí, con las placas de Industrial Shields | No |
| Instala | Él mismo, el core, el compilador y avrdude | Viene con el core de Industrial Shields |
| Uso típico | Compilar y cargar desde scripts o sin el IDE | Cargar un .hex que te han enviado |
Qué necesitas
- Un Arduino PLC de las familias M-Duino o Ardbox y su cable USB.
- Un PC con Windows 10 u 11.
- Para avrdude: el Arduino IDE 2 con las placas de Industrial Shields instaladas (consulta cómo instalar las placas de Industrial Shields en el Arduino IDE), o Arduino CLI con las mismas placas.
¿Cómo se añade un programa al Path de Windows?
Un terminal solo encuentra un programa sin su ruta completa si su carpeta está en la variable de entorno Path. Añade la carpeta de arduino-cli.exe o, para avrdude, su carpeta bin:
- Busca "variable" en el menú Inicio y abre Editar las variables de entorno del sistema.
- En Propiedades del sistema, haz clic en Variables de entorno.
- Selecciona Path (en las variables de usuario, o en las del sistema para todos los usuarios) y haz clic en Editar.
- Haz clic en Nuevo, pega la carpeta y acepta todas las ventanas.
- Abre una ventana nueva de Símbolo del sistema o PowerShell. Los terminales que ya estaban abiertos mantienen el Path anterior; no hace falta reiniciar el PC.




¿Cómo se encuentra el puerto COM del PLC?
Conecta el PLC por USB y abre Administrador de dispositivos > Puertos (COM y LPT). El M-Duino aparece con el nombre de la placa Arduino que lleva dentro (Arduino Mega 2560) y su puerto, COM8 en la captura. Con Arduino CLI instalado, arduino-cli board list muestra la misma lista en el terminal.

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 COM:
arduino-cli compile --fqbn industrialshields:avr:mduino:cpu=mduino42plus MySketch
arduino-cli upload -p COM5 --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
Primero consigue el .hex. En el Arduino IDE 2, Sketch > Exportar binario compilado lo guarda en una carpeta build dentro de la carpeta del sketch. Con Arduino CLI, añade -e al comando de compilación.
El core de Industrial Shields instala avrdude y su archivo de configuración aquí (la carpeta de versión depende del core que tengas instalado):
%LOCALAPPDATA%\Arduino15\packages\industrialshields\tools\avrdude\6.3.0-arduino17\bin\avrdude.exe
%LOCALAPPDATA%\Arduino15\packages\industrialshields\tools\avrdude\6.3.0-arduino17\etc\avrdude.conf
Añade la carpeta bin al Path o escribe la ruta completa en el comando. Con el antiguo Arduino IDE 1.x, avrdude estaba en C:\Program Files (x86)\Arduino\hardware\tools\avr\bin y el archivo de configuración en ...\avr\etc\avrdude.conf.
M-Duino (ATmega2560, protocolo wiring, 115200 baudios):
avrdude -C "%LOCALAPPDATA%\Arduino15\packages\industrialshields\tools\avrdude\6.3.0-arduino17\etc\avrdude.conf" -p atmega2560 -c wiring -P COM5 -b 115200 -D -U flash:w:MySketch.ino.hex:i
Ardbox (ATmega32u4, protocolo avr109, 57600 baudios): abre el puerto a 1200 baudios para arrancar el bootloader, vuelve a comprobar el puerto en el Administrador de dispositivos y ejecuta avrdude en pocos segundos:
mode COM5 BAUD=1200
avrdude -C "%LOCALAPPDATA%\Arduino15\packages\industrialshields\tools\avrdude\6.3.0-arduino17\etc\avrdude.conf" -p atmega32u4 -c avr109 -P COM6 -b 57600 -D -U flash:w:MySketch.ino.hex:i
| Opción | Significado |
|---|---|
-C | Archivo de configuración de avrdude. Usa el que está junto al avrdude que ejecutas |
-p | Microcontrolador: atmega2560 (o m2560) en M-Duino, atmega32u4 en Ardbox |
-c | Protocolo del bootloader: wiring en M-Duino, avr109 en Ardbox |
-P | Puerto COM del PLC |
-b | Velocidad: 115200 en M-Duino, 57600 en Ardbox |
-D | No hace el borrado completo del chip antes de escribir, igual que el Arduino IDE |
-U flash:w:file.hex:i | Escribe el archivo en la memoria flash, en formato Intel HEX |
Ejecuta avrdude sin opciones para ver la lista completa.
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. Los comandos de carga no se ejecutaron en un PLC para esta actualización.
Cargar por Ethernet. Con un archivo binario y un reset remoto puedes actualizar un M-Duino sin cable USB. La guía siguiente explica cómo obtener el archivo .bin del sketch.

Preguntas frecuentes sobre cargar desde la línea de comandos de Windows
¿Por qué Windows dice que no reconoce avrdude o arduino-cli?
Su carpeta no está en el Path, o el terminal estaba abierto antes de editar el Path. Abre un terminal nuevo o escribe la ruta completa del programa.
¿Por qué avrdude se detiene con "not in sync" o "can't open device"?
El puerto COM no es el correcto u otro programa lo tiene abierto, por ejemplo el monitor serie del IDE. En el Ardbox, el puerto puede haber cambiado después del reset a 1200 baudios.
¿Puedo cargar un archivo .ino con avrdude?
No. avrdude solo escribe archivos compilados (.hex). Para pasar del .ino al PLC en un paso, usa Arduino CLI.
¿Qué FQBN usa mi modelo?
Ejecuta arduino-cli board listall industrialshields y arduino-cli board details -b con tu familia. Es la misma elección que Herramientas > Placa y Herramientas > Model en el IDE.
Más sobre la programación de Arduino PLC
- Subir un sketch a un M-Duino o Ardbox desde la shell de Linux
- Cómo instalar las placas de Industrial Shields en el Arduino IDE
- Cómo configurar el puerto serie en el Arduino IDE industrial
- Cómo elegir un controlador industrial
Consulta los modelos en la familia Arduino PLC, por ejemplo el M-Duino 42 o el Ardbox Analog.