Descargar controladores sin usar una consola Arduino IDE

Introduccion

Al trabajar con controladores de un sistema distribuido, a menudo tiene que reiniciar los controladores. El uso de la consola Arduino IDE para reiniciar por el cliente no es muy conveniente, ya que para cada tipo de controlador es necesario configurar (o verificar) el tipo de placa y los n煤meros de puerto COM, este trabajo debe ser realizado por personal familiarizado con el IDE, y no todos los clientes desean saber que el sistema est谩 construido en controladores Arduino.

En este trabajo, consideramos las opciones para descargar controladores (Arduino en Atmega328 y Atmega32u4 y un controlador Teensy compatible) en comandos separados y a trav茅s de un archivo por lotes, sin usar el IDE.

Disposici贸n de placas de comunicaci贸n COM USB Arduino

Al organizar el canal de comunicaci贸n en serie, las placas Arduino se pueden dividir en placas con un convertidor USB-UART y placas con microcontroladores que admiten la comunicaci贸n USB sin convertidores externos. Los primeros incluyen Arduino UNO, Arduino NANO, Arduino Mini, Arduino UNO Ethernet, placas WiFi Arduino UNO basadas en microcontroladores Atmega328 . Los segundos son Arduino Leonardo, Arduino Micro, Arduino Yun Mini, Arduino Industrial 101, placas Arduino Leonardo Ethernet con controladores Atmega32u4 [1].

Descargar Arduino Controller (Atmega328) con avrdude.exe

La descarga del archivo hexadecimal al controlador Arduino se puede hacer con avrdude.exe . Este programa es parte del paquete de consola IDE, por ejemplo, Arduino versi贸n 1.8.5. El cargador avrdude.exe se inicia mediante la utilidad cmd o Command Prompt , que se inicia como se muestra en la Figura 1.


Figura 1 Un ejemplo de ejecuci贸n de la utilidad del s铆mbolo del sistema.

Para obtener un ejemplo de c贸mo escribir un comando para cargar c贸digo hexadecimal en un controlador Arduino en su computadora, complete la siguiente secuencia.

鈥 Conectar Arduino
鈥 Descargue el IDE de Arduino
鈥 Seleccione un tipo de placa Arduino en el men煤> Herramientas> Placa>
鈥 Seleccione el puerto COM en la placa desde el men煤> Herramientas> Puerto>
鈥 Configure el indicador de carga en la pesta帽a Preferencias: men煤 Arduino IDE> Archivo> Preferencias> Mostrar salida detallada durante> carga
鈥 Men煤 de inicio> Boceto> Cargar
鈥 Una vez completada la descarga, en la ventana de salida de la consola Arduino IDE, busque el comando con avrdude , se ve, por ejemplo, as铆:

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\user-2\AppData\Local\Temp\arduino_build_628118/Blink.ino.hex:i 

Para ejecutar el comando avrdude con la utilidad S铆mbolo del sistema, se deben ingresar comillas dobles en el comando, como se muestra a continuaci贸n.

 "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/<b>avrdude</b>" -"CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\user-2\AppData\Local\Temp\arduino_build_628118/Blink.ino.hex:i 

El comando anterior se puede usar para cargar programas hexadecimales en un controlador Arduino con un chip Atmega328 y un convertidor USB-UART separado. Para los controladores con Atmega32u4 que admite la comunicaci贸n USB sin un convertidor de hardware, se requieren pasos adicionales para ejecutar el comando, que se describen a continuaci贸n en la secci贸n correspondiente.

Desde el programa compilado: el archivo hexadecimal se almacena en la carpeta de archivos temporales mientras la consola IDE est谩 abierta (.. \ AppData \ Local \ Temp \ ..), es mejor copiar el archivo hexadecimal en una carpeta separada, copiar el cargador de arranque avrdude.exe y el archivo avrdude.conf all铆 .

Despu茅s de mover los archivos (Figura 2), por ejemplo, a la carpeta C: \ ArdIDE, el comando de descarga con las rutas de acceso de archivos actualizadas toma la forma, como se muestra en la Figura 3.

imagen
Figura 2 Colocar el gestor de arranque y el archivo hexadecimal en una carpeta separada.

imagen
Figura 3 Lanzamiento del gestor de arranque avrdude con s铆mbolo del sistema.

El controlador Teensy se carga con el cargador teensy_post_compile.exe
Despu茅s de instalar el software Teensyduino de los controladores Teensy , los controladores correspondientes aparecen en la lista de dispositivos de la consola Arduino IDE (consulte la Figura 4).

imagen
Figura 4 Lista de controladores Teensy en la consola Arduino IDE.

Se puede obtener un ejemplo de c贸mo escribir un comando para cargar c贸digo hexadecimal en un controlador Teensy siguiendo la secuencia que se muestra arriba para los controladores Arduino. En la ventana de salida, debe encontrar el ejemplo del gestor de arranque: el comando teensy_post_compile . Para la descarga sin conexi贸n, puede copiar los archivos necesarios en una carpeta separada, por ejemplo, como se muestra a continuaci贸n. Los archivos teensy_post_compile, teensy_post_compile.exe y teensy.exe pueden tomarse del paquete Arduino complementado por la aplicaci贸n Teensy.

imagen

A continuaci贸n se muestran ejemplos de comandos para descargar archivos hexadecimales Blink_1.ino y Blink_2.ino a dos controladores Teensy conectados a una computadora a trav茅s de un concentrador USB.

 "C:\TnsIDE/teensy_post_compile" -file=Blink_2.ino "-path=C:\TnsIDE" "-tools=C:\TnsIDE" -board=TEENSY31 -reboot -port=usb:0/1A0000/0/1/1/1 -portlabel=COM19 (Teensy 3.2) Serial -portprotocol=Teensy 

 "C:\TnsIDE/teensy_post_compile" -file=Blink_1.ino "-path=C:\TnsIDE" "-tools=C:\TnsIDE" -board=TEENSY31 -reboot -port=usb:0/1A0000/0/1/1/2 -portlabel=COM23 (Teensy 3.2) Serial -portprotocol=Teensy 

En estas entradas, los puertos del concentrador se designan como usb: 0 / 1A0000 / 0/1/1/1 y usb: 0 / 1A0000 / 0/1/1/2.

Descargar Arduino Controller (Atmega32U4) con avrdude.exe

Las placas Arduino UNO, Leonardo, Micro, etc. est谩n basadas en el microcontrolador ATmega32U4. Este microcontrolador tiene un canal USB incorporado (USB 2.0 de alta velocidad), por lo tanto, la descarga de programas en 茅l difiere de la carga considerada en los microcontroladores ATmega328 a trav茅s de un convertidor USB-UART adicional.

El n煤mero de puerto COM del controlador Arduino aparece en la lista del administrador de dispositivos, por ejemplo.

imagen

Cuando se abre el puerto COM virtual del controlador Arduino pro Micro (con cualquier frecuencia de transmisi贸n de 1200, ..., 9600, ... 115200 baudios), el controlador se reinicia y se inicia el programa de usuario. En el entorno MATLAB, el programa de creaci贸n de puerto virtual es el siguiente.

 % create port. s=serial('COM15','Baudrate',9600); % 115200 fopen(s); 

Despu茅s de cerrar el puerto COM virtual con una frecuencia no igual a 1200 baudios, por ejemplo, como se muestra a continuaci贸n

 fclose(s); delete(s); clear s 

Se ejecuta el programa de usuario del controlador.

El reinicio del controlador e inicio del cargador de arranque del controlador se realiza despu茅s de abrir y cerrar el puerto COM con una frecuencia de 12000 baudios por el entorno externo, por ejemplo, MATLAB, como se muestra a continuaci贸n.

 % create port. s=serial('COM15','Baudrate',1200); % 115200 fopen(s); pause(1.5); fclose(s); delete(s); clear s 

La misma operaci贸n se puede realizar con el comando de modo , como se muestra en la Figura 5.

imagen
Figura 5 Ejecutando el comando de modo en S铆mbolo del sistema. El comando establece la frecuencia de transmisi贸n para el puerto COM15 a 1200 baudios, lo que hace que el controlador se reinicie y se inicie el cargador de arranque, y tambi茅n cambia temporalmente los n煤meros de puerto virtual del controlador en la lista de dispositivos.

Despu茅s de cerrar el puerto (comando fclose (s)), el cargador del controlador crea su propio puerto virtual (CDC), que aparece en la lista del administrador de dispositivos con un nuevo n煤mero durante aproximadamente 8 segundos.

imagen

Despu茅s del tiempo de existencia del nuevo puerto virtual (8 segundos), el puerto COM con el n煤mero original se devuelve a la lista del administrador de dispositivos.

imagen

Durante la existencia del nuevo puerto COM, a trav茅s de 茅l se puede descargar el programa de usuario al controlador utilizando el comando avrdude de muestra de la consola Arduino IDE. Obtener un comando de ejemplo del gestor de arranque avrdude en un IDE de Arduino es similar a la opci贸n anterior para los microcontroladores Atmega328. El puerto virtual creado desaparece de la lista de dispositivos despu茅s de reiniciar la placa y el puerto COM con el n煤mero original se devuelve a la lista.

El cargador de arranque tambi茅n se puede iniciar conectando el pin RST de la placa Arduino a tierra GND.
Si el restablecimiento autom谩tico del controlador (mediante la creaci贸n y desactivaci贸n del puerto COM a una frecuencia de 1200 baudios) no funciona, la carga de dispositivos (Arduino Leonardo, Arduino Pro Micro) basados 鈥嬧媏n el microcontrolador ATmega32U4 se puede realizar a trav茅s de la consola Arduino IDE en la siguiente secuencia.

1. Presione y mantenga presionado el bot贸n "Reset" (o cortocircuite el pin RST a tierra). La conexi贸n USB serie est谩 desconectada. El puerto COM del controlador desaparece de la lista del administrador de dispositivos.

2. Presione el bot贸n imagen Cargar (Ctrl + U) Arduino IDE. La Figura 6 muestra el estado inicial del administrador de dispositivos (izquierda) y el IDE Arduino (derecha) en este punto
imagen
Figura 6 El n煤mero de puerto COM en el administrador de dispositivos y una indicaci贸n del proceso de compilaci贸n del programa en la consola Arduino IDE.

3. Espere hasta que el indicador de estado termine de compilar "Compilando" y contin煤e con la descarga de "Carga", como se muestra en la Figura 7.

imagen
Figura 7 El n煤mero del nuevo puerto COM temporal en el administrador de dispositivos y una indicaci贸n del proceso de carga del programa en la consola Arduino IDE.

4. Suelte el bot贸n "Restablecer" (abra el pin RST). Se restablece la conexi贸n USB. Descarga en progreso. El indicador indica el final de la carga con la frase Carga finalizada (consulte la Figura 8)

imagen
Figura 8 El n煤mero de puerto COM en el administrador de dispositivos y una indicaci贸n de la finalizaci贸n de la carga del programa en la consola Arduino IDE.

Descargar controladores a trav茅s de un archivo bat de lotes (comando)

La carga sin conexi贸n (sin usar la consola Arduino IDE) se puede hacer usando un archivo por lotes (lote). Un ejemplo de un archivo por lotes (con la extensi贸n bat) para descargar archivos HEX a dos controladores Arduino Pro Micro (Atmega32u4) conectados a la computadora a trav茅s del primer concentrador, a dos controladores Teensy conectados a la computadora a trav茅s del segundo concentrador y al controlador Arduino UNO (Atmega328) abajo Los archivos HEX descargados y todos los programas necesarios para esto se colocaron previamente en la carpeta compartida que se muestra en la Figura 9.

imagen
Figura 9 Contenido de ejemplo de una carpeta para la carga sin conexi贸n de 5 controladores: Arduino Pro Micro (Atmega32u4), Teensy y Arduino UNO (Atmega328)

El archivo por lotes mcLoad.bat para la carga sin conexi贸n de cinco controladores se muestra a continuaci贸n. Se agrega un segundo retraso (TIMEOUT / T 1 / NOBREAK) antes de cargar los controladores Arduino Pro Micro. Se ingresa un retraso de 2 segundos antes de cargar el segundo controlador Teensy. Una vez que todos los controladores hayan terminado de cargarse, la ventana del programa Teensy.exe se cierra.

 echo OFF echo UPLOAD: Arduino Pro Micro 1 mode COM42 BAUD=12000 TIMEOUT /T 1 /NOBREAK avrdude -Cavrdude.conf -v -patmega32u4 -cavr109 -PCOM45 -b57600 -D -Uflash:w:micro.ino.hex:i echo UPLOAD: Arduino Pro Micro 2 mode COM43 BAUD=12000 TIMEOUT /T 1 /NOBREAK avrdude -Cavrdude.conf -v -patmega32u4 -cavr109 -PCOM44 -b57600 -D -Uflash:w:micro.ino.hex:i echo UPLOAD: Arduino UNO avrdude -Cavrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w: BlinkUNO.ino.hex:i echo UPLOAD: Teensy 1 "C:\mcLOAD/teensy_post_compile" -file=Blink_1_Teensy.ino "-path=C:\mcLOAD" "-tools=C:\mcLOAD" -board=TEENSY31 -reboot -port=usb:0/1A0000/0/1/1/2 -portlabel=COM23 (Teensy 3.2) Serial -portprotocol=Teensy REM Delay 2 seconds: TIMEOUT /T 2 /NOBREAK echo UPLOAD: Teensy 2 "C:\mcLOAD/teensy_post_compile" -file=Blink_2_Teensy.ino "-path=C:\mcLOAD" "-tools=C:\mcLOAD" -board=TEENSY31 -reboot -port=usb:0/1A0000/0/1/1/1 -portlabel=COM19 (Teensy 3.2) Serial -portprotocol=Teensy REM Close Teensy.exe taskkill /f /IM Teensy.exe 

Desconectar el controlador de la l铆nea USB no afecta la carga de los controladores restantes.

Para excluir el nombre Arduino de la lista del administrador de dispositivos, por ejemplo, "Arduino UNO (COMX)", puede usar programas, por ejemplo, RegOwnersahipEx, o clones de hardware de controladores Arduino, por ejemplo, WAVGAT, que se indica en la lista de dispositivos como "USB-SERIAL CH340 (COMX) ) ".

Lista bibliogr谩fica

1. Comparaci贸n de placas Arduino (tabla) digitrode.ru/arduino-comparison.html
2. Arduino Micro, shop.pimoroni.com/products/arduino-micro
3. Dr. Bob Davidov. Tecnolog铆as de control inform谩tico en sistemas t茅cnicos portalnp.ru/author/bobdavidov.

Source: https://habr.com/ru/post/437360/


All Articles