Programar muchos Arduinos simultáneamente con una transmisión inalámbrica

9

Tendré muchos dispositivos basados ​​en microcontroladores que serán independientes entre sí, pero todos ejecutarán el mismo programa.

Me gustaría subir un programa a todos al mismo tiempo con una transmisión inalámbrica. Idealmente, el usuario enchufaría un controlador USB a su computadora y cargaría un programa del entorno Arduino como si estuviera programando un solo dispositivo.

Para tener una mejor idea de lo que estoy hablando, mira este video . Esto se logró con los microcontroladores Atmel, pero con un gestor de arranque personalizado que no es Arduino.

De una búsqueda en Google de "programación infrarroja Arduino" surgió este interesante proyecto . El principal inconveniente es que el botón de reinicio aún debe presionarse manualmente. Idealmente, me gustaría que los dispositivos estén en un estado de baja potencia por defecto, y que se activen para recibir un programa cuando perciban una señal del controlador. Aún así, este puede ser un buen punto de partida para mí.

Solo quería obtener algunas perspectivas de las personas que están familiarizadas con Arduinos en cuanto a si piensan que esto es factible antes de entrar.

MGA
fuente
2
Visite este sitio web lowpowerlab.com/blog/category/moteino/wireless-programming
Mikael Patel
¿Desde qué plataforma está utilizando para cargar sus bocetos?
Greenonline

Respuestas:

2

TL; DR -

Tiene las opciones de BlueTooth o XBee (entre otras: ¿IR, por ejemplo?) Para la carga inalámbrica. Sin embargo, creo que solo se puede cargar una placa a la vez, por lo que deberá recorrer las tablas una por una; consulte Programación de ATMegas / Arduinos múltiples a la vez .

Al cargar un boceto o usar un programador (para boceto o cargador de arranque), el software no solo escribe el código, sino que se comunica con el microcontrolador.

No puedes programarlos todos a la vez. Pero puede programarlos uno por uno de manera automática.


Su pregunta es muy interesante y hace una pregunta que estoy seguro de que nunca habría pensado, pero que sería extremadamente útil y que ahorraría trabajo, especialmente si uno tiene, como lo hago, muchos puntos de sensores controlados por Arduino ubicados alrededor del casa. Aquí hay una solución poco elegante que vale la pena probar.

Hardware de carga inalámbrica

Si usa BlueTooth para cargar sus bocetos de forma inalámbrica, entonces esta solución podría ser útil, programa de carga inalámbrica a Arduino sin cable USB . Tenga en cuenta que esta solución ata los pines D0 y D1:

Pero tenga cuidado de que tal vez no sea compatible con algunos proyectos que necesitan usar D0 y D1 como hardware UART TX, RX. Porque el programador inalámbrico necesita ocupar permanentemente los dos pines.

Mirándolo, emplea un programador inalámbrico Arduino personalizado , al que puede haber hecho referencia en su pregunta. Sin embargo, no se deje engañar por el nombre, es simplemente un escudo Bluetooth. Básicamente es un dispositivo BT HC-05 (o similar), atornillado a un Arduino, consulte también Carga inalámbrica Bluetooth .

Alternativamente, en lugar de BlueTooth, puede usar dispositivos XBee , consulte Programación inalámbrica de Arduino . La ventaja de usar XBees es que no tendría que pasar por el ciclo de emparejamiento del nuevo dispositivo (ver más abajo), que sería necesario cuando se usa BT. En su lugar, simplemente tendría que recorrer las ID de red de XBee.

Sin embargo, además de eso, necesitaría automatizar el cambio de dispositivos BT, seleccionando el puerto apropiado y cargando a cada Arduino a su vez, ya que no puede transmitir bocetos . (Si me equivoco, alguien me corregirá).

Seleccionar el puerto y subir el boceto

Puede usar un script junto con la versión de línea de comando del IDE Arduino, para seleccionar el puerto al que está conectado el dispositivo BT, antes de cada carga. La forma en que haga esto variará para cualquier plataforma en la que esté compilando, consulte la línea de comando Arduino compilando y descargando. Esto se puede hacer usando la variable de entorno ARDUINO_COMPORT(vea la construcción de la línea de comandos de Windows posiblemente desactualizada ), o la opción de línea cmd de arduino --port <portname>(vea la página del manual ). El boceto sería entonces cargado usando la opción --upload <filename>. Podrías hacer esto de un solo golpe:

arduino --upload --port <portname> FILE.ino

Tenga en cuenta que en Windows debe usar arduino_debug.exe.

O usted podría utilizar Ino , si está no está usando un PC con Windows ... pero que podría hacer que la parte siguiente, que se ocupa del bucle más compleja de lo que debe ser.

Seleccionar cada uno de los Arduinos (es decir, los dispositivos BT)

A continuación, deberá agregar un bucle al script, que empareje la PC con cada dispositivo BT y luego llame al IDE Arduino, para la selección y carga del puerto. Desafortunadamente, esto no sería agnóstico de plataforma en absoluto, y requeriría una solución diferente para cualquier plataforma que esté utilizando. Eche un vistazo a Bluetooth desde la línea de comandos , pero para Windows probablemente necesite el conjunto de herramientas Blue Tooth Command Line .

En OS X, es mejor que recurra al uso de AppleScript, consulte Conectarse a un dispositivo Bluetooth (iPhone) a través de la línea de comandos en MacOSX , ya que las herramientas de línea cmd para controlar BT parecen un poco escasas: hay BlueUtil , consulte Cómo controlar la conexión inalámbrica Bluetooth radio desde la línea de comando? pero eso solo parece encender o apagar el BT. Sin embargo, atornillar AppleScript al resto del script de control Arduino IDE rápidamente hace las cosas más complejas, aunque supongo que podría simplemente poner el comando Arduino dentro del AppleScript.

Greenonline
fuente
0

Puede usar ESP-LINK para programar el Arduino a través de WiFi.

El ESP8266 es un MCU Wi-Fi simple y barato que se puede programar con Arduino IDE.

ESP-LINK es un firmware para el ESP8266 que hace que el ESP actúe como una conexión en serie (USB) a Arduino.

El firmware se puede encontrar aquí en ESP-LINK ESP8266 .

NccWarp9
fuente
0

Uno puede usar algo como esto . Es un gestor de arranque personalizado para actualizar el código de un Arduino a través de un módulo de radio NRF24L01 +. *

* Solo funciona en máquinas Linux.

Avamander
fuente