Programando muitos Arduinos simultaneamente com uma transmissão sem fio

9

Terei muitos dispositivos baseados em microcontroladores que serão independentes um do outro, mas todos executarão o mesmo programa.

Gostaria de fazer upload de um programa para todos eles ao mesmo tempo com uma transmissão sem fio. Idealmente, o usuário conectaria um controlador USB ao computador e faria o upload de um programa do ambiente Arduino como se estivesse programando um único dispositivo.

Para ter uma idéia melhor do que estou falando, dê uma olhada neste vídeo . Isso foi alcançado com os microcontroladores Atmel, mas com um gerenciador de inicialização não-Arduino personalizado.

A partir de uma pesquisa no Google por "programação de infravermelho do Arduino" , surgiu um projeto interessante . A principal desvantagem é que o botão de reset ainda precisa ser pressionado manualmente. Idealmente, eu gostaria que os dispositivos estivessem em um estado de baixa energia por padrão e acorde para receber um programa quando sentirem um sinal do controlador. Ainda assim, esse pode ser um bom ponto de partida para mim.

Eu só queria ter algumas perspectivas de pessoas familiarizadas com o Arduinos sobre se elas acham isso viável antes de eu entrar.

MGA
fonte
De qual plataforma você está usando para enviar seus esboços?
Greenonline 8/02/16

Respostas:

2

TL; DR -

Você tem as opções de BlueTooth ou XBee (entre outras: IR, por exemplo?) Para upload sem fio. No entanto, acredito que apenas uma placa pode ser carregada para, de cada vez, então você precisará percorrer as placas uma por vez, consulte Programando vários ATMegas / Arduinos de uma só vez .

Ao fazer upload de um esboço ou usar um programador (para esboço ou carregador de inicialização), o software não apenas escreve o código, mas também se comunica com o microcontrolador.

Você não pode programá-los todos de uma vez. Mas você pode programá-los um por um de maneira automática.


Sua pergunta é muito interessante e faz uma pergunta que eu tenho certeza que nunca teria pensado, mas seria extremamente útil e economizaria trabalho, especialmente se você tiver, como eu, muitos pontos de sensores controlados pelo Arduino localizados ao redor do casa. Aqui está uma solução bastante deselegante que vale a pena tentar.

Hardware de upload sem fio

Se você usar o BlueTooth para fazer upload de seus esboços sem fio, esta solução poderá ser útil, programa de upload sem fio para o Arduino sem cabo USB . Observe que esta solução amarra os pinos D0 e D1:

Mas tenha cuidado para que ele talvez não seja compatível com alguns projetos que precisam usar o D0 e o D1 como hardware UART TX, RX. Porque o programador sem fio precisa ocupar permanentemente os dois pinos.

Olhando para ele, ele emprega um programador sem fio Arduino personalizado , ao qual você pode estar se referindo na sua pergunta. No entanto, não se deixe enganar pelo nome, é simplesmente um escudo Bluetooth. É basicamente um dispositivo BT HC-05 (ou similar), parafusado em um Arduino, veja também Bluetooth Wireless Upload .

Como alternativa, no lugar do BlueTooth, você pode usar dispositivos XBee , consulte Programação sem fio do Arduino . A vantagem de usar o XBees é que você não precisaria passar pelo emparelhamento do novo loop do dispositivo (veja abaixo), que seria necessário ao usar o BT. Em vez disso, você apenas teria que percorrer os IDs de rede XBee.

No entanto, além disso, você precisaria automatizar a comutação dos dispositivos BT, selecionando a porta apropriada e fazendo o upload para cada Arduino por vez, pois não é possível transmitir esboços . (Se eu estiver errado, alguém por favor me corrija).

Selecionando a porta e carregando o esboço

Você pode usar um script junto com a versão da linha de comando do Arduino IDE, para selecionar a porta à qual o dispositivo BT está conectado, antes de cada upload. Como isso varia de acordo com a plataforma em que você está compilando, consulte Linha de comando do Arduino compilando e baixando? Isso pode ser feito usando a variável de ambiente ARDUINO_COMPORT(consulte a compilação da linha de comando do Windows possivelmente desatualizada ) ou a opção de linha do cmd do arduino --port <portname>(consulte a página de manual ). O esboço, então, ser carregados usando a opção --upload <filename>. Você poderia fazer isso de uma só vez:

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

Observe que no Windows você deve usar arduino_debug.exe.

Ou você pode usar Ino , se você estiver não usando um PC com Windows ... mas isso pode fazer a parte seguinte, que lida com o looping mais complexo do que precisa ser.

Selecionando cada um dos Arduinos (ou seja, os dispositivos BT)

Em seguida, você precisará adicionar um loop ao script, que emparelhe o PC com cada dispositivo BT e, posteriormente, chame o IDE do Arduino, para a seleção e o carregamento da porta. Infelizmente, isso não seria independente da plataforma e exigiria uma solução diferente para qualquer plataforma que você esteja usando. Dê uma olhada no Bluetooth na linha de comando , mas para o Windows você provavelmente precisará do conjunto de ferramentas Blue Tooth Command Line .

No OS X, é melhor recorrer ao AppleScript, consulte Conectar ao dispositivo bluetooth (iPhone) via linha de comando no MacOSX , pois as ferramentas de linha cmd para controlar o BT parecem um pouco escassas - existe o BlueUtil , consulte Como controlar o Bluetooth sem fio rádio a partir da linha de comando? mas isso apenas parece ativar o BT. No entanto, aparafusar o AppleScript ao restante do script de controle do Arduino IDE rapidamente torna as coisas mais complexas, embora você possa colocar o comando do Arduino no AppleScript, eu acho.

Greenonline
fonte
0

Você pode usar o ESP-LINK para programar o Arduino por WiFi.

O ESP8266 é um MCU Wi-Fi barato e simples que pode ser programado com o Arduino IDE.

O ESP-LINK é um firmware para o ESP8266 que faz o ESP funcionar como uma conexão serial (USB) com o Arduino.

O firmware pode ser encontrado aqui no ESP-LINK ESP8266 .

NccWarp9
fonte
0

Pode-se usar algo como este . É um gerenciador de inicialização personalizado para atualizar o código de um Arduino por meio de um módulo de rádio NRF24L01 +. *

* Ele funciona apenas em máquinas Linux.

Avamander
fonte