Ir al contenido

Cómo subir un sketch a un PLC Arduino usando la línea de comandos

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

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 CLIavrdude
EntradaEl sketch (.ino)Un archivo compilado (.hex)
CompilaSí, con las placas de Industrial ShieldsNo
InstalaÉl mismo, el core, el compilador y avrdudeViene con el core de Industrial Shields
Uso típicoCompilar y cargar desde scripts o sin el IDECargar un .hex que te han enviado

Qué necesitas

¿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:

  1. Busca "variable" en el menú Inicio y abre Editar las variables de entorno del sistema.
  2. En Propiedades del sistema, haz clic en Variables de entorno.
  3. Selecciona Path (en las variables de usuario, o en las del sistema para todos los usuarios) y haz clic en Editar.
  4. Haz clic en Nuevo, pega la carpeta y acepta todas las ventanas.
  5. 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.
Búsqueda de variable en el menú Inicio de Windows con la opción Editar las variables de entorno del sistema
1. Busca "variable" en el menú Inicio.
Ventana Propiedades del sistema de Windows, pestaña Opciones avanzadas, con el botón Variables de entorno
2. Propiedades del sistema: Variables de entorno.
Ventana Variables de entorno de Windows con la variable del sistema Path seleccionada
3. Selecciona Path y haz clic en Editar.
Lista Editar variable de entorno de Windows con la carpeta de avrdude del antiguo Arduino IDE 1.x añadida al final
4. Carpeta nueva añadida al Path. La captura muestra la carpeta de avrdude del antiguo Arduino IDE 1.x; con el IDE 2 o Arduino CLI, usa las carpetas de los apartados siguientes.

¿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.

Administrador de dispositivos de Windows con Puertos COM y LPT abierto, donde un M-Duino aparece como Arduino Mega 2560 en COM8

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ónSignificado
-CArchivo de configuración de avrdude. Usa el que está junto al avrdude que ejecutas
-pMicrocontrolador: atmega2560 (o m2560) en M-Duino, atmega32u4 en Ardbox
-cProtocolo del bootloader: wiring en M-Duino, avr109 en Ardbox
-PPuerto COM 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

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.

Ilustración de un túnel de código binario para la guía del archivo binario para cargar por Ethernet

Leer: carga por Ethernet, paso 2, archivo binario

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.

Buscar en nuestro blog

Cómo subir un sketch a un PLC Arduino usando la línea de comandos
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