Программирование нескольких Arduinos одновременно с помощью беспроводной трансляции

9

У меня будет много устройств на основе микроконтроллеров, которые будут независимы друг от друга, но все будут запускать одну и ту же программу.

Я хотел бы загрузить программу для всех из них одновременно с помощью беспроводной трансляции. В идеале пользователь должен подключить USB-контроллер к своему компьютеру и загрузить программу из среды Arduino, как будто он / она программирует одно устройство.

Чтобы лучше понять, о чем я говорю, посмотрите это видео . Это было достигнуто с помощью микроконтроллеров Atmel, но с нестандартным загрузчиком без Arduino.

Из поиска Google "Arduino инфракрасное программирование" появился этот интересный проект . Основным недостатком является то, что кнопку сброса все еще нужно нажимать вручную. В идеале мне бы хотелось, чтобы устройства по умолчанию находились в состоянии низкого энергопотребления и просыпались, чтобы получить программу, когда они чувствуют сигнал от контроллера. Тем не менее, это может быть хорошей отправной точкой для меня.

Я просто хотел узнать мнение людей, знакомых с Arduinos, относительно того, считают ли они это возможным, прежде чем я прыгну.

MGA
источник
2
Проверьте этот сайт lowpowerlab.com/blog/category/moteino/wireless-programming
Микаэль Патель
С какой платформы вы загружаете свои эскизы?
Greenonline

Ответы:

2

TL; DR -

У вас есть варианты BlueTooth или XBee (среди прочего: IR, например?) Для беспроводной загрузки. Тем не менее, я считаю, что одновременно можно загружать только одну плату, поэтому вам нужно будет переключаться между ними по одной, см. Программирование нескольких ATMegas / Arduinos одновременно .

При загрузке эскиза или использовании программатора (для эскиза или загрузчика) программное обеспечение не просто пишет код, оно фактически связывается с микроконтроллером.

Вы не можете запрограммировать их все сразу. Но вы можете запрограммировать их один за другим каким-то автоматическим способом.


Ваш вопрос очень интересный и задает вопрос, который, я уверен, я бы никогда не подумал, но был бы чрезвычайно полезен и экономил труд, особенно если бы у меня, как и у меня, было много контролируемых Arduino сенсорных точек, расположенных вокруг жилой дом. Вот одно довольно не элегантное решение, которое стоит попробовать.

Оборудование для беспроводной загрузки

Если вы используете BlueTooth для беспроводной загрузки своих эскизов, то может пригодиться это решение - программа беспроводной загрузки в Arduino без USB-кабеля . Обратите внимание, что это решение связывает контакты D0 и D1:

Но будьте осторожны, что он может быть несовместим с некоторыми проектами, которые должны использовать D0 и D1 в качестве аппаратного UART TX, RX. Потому что беспроводной программист должен постоянно занимать два контакта.

Глядя на это, в нем работает пользовательский беспроводной программатор Arduino , о котором вы, возможно, упоминали в своем вопросе. Однако, не обманывайте себя по имени, это просто щит Bluetooth. В основном это устройство BT HC-05 (или аналогичное), прикрепленное болтами к Arduino, см. Также Беспроводная загрузка Bluetooth .

В качестве альтернативы, вместо BlueTooth, вы можете использовать устройства XBee , см. Беспроводное программирование Arduino . Преимущество использования XBees заключается в том, что вам не придется проходить через цикл создания нового устройства (см. Ниже), что потребуется при использовании BT. Вместо этого вам просто придется циклически просматривать идентификаторы сети XBee.

Однако, в дополнение к этому, вам нужно будет автоматизировать переключение устройств BT, выбрать соответствующий порт и поочередно загрузить их на каждый Arduino, поскольку вы не можете транслировать эскизы . (Если я ошибаюсь, то, пожалуйста, поправьте меня).

Выбор порта и загрузка эскиза

Вы можете использовать скрипт вместе с версией командной строки Arduino IDE, чтобы выбрать порт, к которому подключено устройство BT, перед каждой загрузкой. То, как вы это сделаете, будет зависеть от того, на какой платформе вы компилируетесь, см. Компиляция и загрузка Arduino из командной строки? Это можно сделать, используя переменную окружения ARDUINO_COMPORT(см. Возможно устаревшую сборку командной строки Windows ) или параметр строки arduino cmd --port <portname>(см. Справочную страницу ). Эскиз будет загружен с использованием опции --upload <filename>. Вы можете сделать это одним махом:

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

Обратите внимание, что в Windows вы должны использовать arduino_debug.exe.

Или вы можете использовать Ino , если вы не используете ПК с Windows ... но это может сделать следующую часть, которая занимается циклом более сложным, чем это необходимо.

Выбор каждого из Arduinos (то есть устройств BT)

Затем вам нужно будет добавить цикл в скрипт, который по очереди соединяет ПК с каждым устройством BT, а затем вызывает IDE Arduino для выбора и загрузки порта. К сожалению, это не будет зависеть от платформы и потребует другого решения для любой платформы, которую вы используете. Взгляните на Bluetooth из командной строки , но для Windows вам, вероятно, потребуется пакет инструментов Blue Tooth Command Line .

В OS X лучше всего прибегнуть к использованию AppleScript, см. Подключение к устройству Bluetooth (iPhone) через командную строку в MacOSX , поскольку инструменты командной строки для управления BT кажутся немного скудными - есть BlueUtil , см. Как управлять беспроводной связью Bluetooth радио из командной строки? но это только кажется, чтобы выключить BT. Однако приклеивание AppleScript к остальной части скрипта управления Arduino IDE быстро усложняет ситуацию, хотя, я думаю, вы могли бы просто поместить команду Arduino в AppleScript.

Greenonline
источник
0

Вы можете использовать ESP-LINK для программирования Arduino через WiFi.

ESP8266 - это простой дешевый микроконтроллер Wi-Fi, который можно запрограммировать с помощью Arduino IDE.

ESP-LINK - это прошивка для ESP8266, которая заставляет ESP действовать как последовательное соединение (USB) с Arduino.

Прошивка может быть найдена здесь в ESP-LINK ESP8266 .

NccWarp9
источник
0

Можно использовать что-то вроде этого . Это пользовательский загрузчик для обновления кода Arduino через радиомодуль NRF24L01 +. *

* Работает только на машинах Linux.

Avamander
источник