Програмування багатьох Arduinos одночасно з бездротовим мовленням


9

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

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

Щоб краще зрозуміти, про що я говорю, перегляньте це відео . Цього вдалося досягти за допомогою мікроконтролерів Atmel, але на замовлення, не-Arduino завантажувач.

З пошуку в Google для "інфрачервоного програмування Arduino" вийшов цей цікавий проект . Основним недоліком є ​​те, що кнопку скидання ще потрібно натиснути вручну. В ідеалі я хотів би, щоб пристрої за замовчуванням перебували в режимі низької потужності, і прокидаються, щоб отримати програму, коли вони почують сигнал від контролера. Все-таки це може бути для мене гарною відправною точкою.

Мені просто хотілося отримати певну перспективу від людей, які знайомі з Ардуїносом, чи вони вважають, що це можливо, перш ніж я заскочу.


2
Перевірте цей веб-сайт lowpowerlab.com/blog/category/moteino/wireless-programming
Mikael Patel

З якої платформи ви використовуєте для завантаження своїх ескізів?
Greenonline

Відповіді:


2

TL; DR -

У вас є можливості BlueTooth або XBee (серед інших: ІЧ, наприклад?) Для бездротового завантаження. Однак я вважаю, що одночасно може бути завантажена лише одна дошка, тому вам потрібно буде обходити плати по черзі, див. Програмування декількох ATMegas / Arduinos одночасно .

Завантажуючи ескіз або використовуючи програміст (для ескізу чи завантажувача), програмне забезпечення не просто записує код, воно фактично спілкується з мікроконтролером.

Ви не можете запрограмувати їх відразу. Але ви можете запрограмувати їх по черзі деяким автоматичним способом.


Ваше запитання є дуже цікавим, і він задає питання, на який я впевнений, що я ніколи б не замислювався над цим, але був би надзвичайно корисним та економією праці, особливо якщо в мене є, як і я, багато сенсорних точок, що контролюються Arduino, розташованих навколо будинок. Ось одне досить неелегантне рішення, яке, можливо, варто спробувати.

Обладнання для бездротового завантаження

Якщо ви використовуєте BlueTooth для бездротового завантаження ескізів, то це рішення може бути корисним програмою бездротового завантаження в Arduino без кабелю USB . Зауважте, що це рішення пов'язує шпильки D0 і D1:

Але будьте обережні, що це, можливо, не сумісне з деякими проектами, які потребують використання D0 і D1 як апаратних UART TX, RX. Тому що бездротовому програмісту потрібно постійно займати два штирі.

Дивлячись на це, у ньому є спеціальний програміст бездротового зв'язку Arduino , до якого ви, можливо, посилалися у своєму запитанні. Однак не обманюйте ім'я, це просто щит Bluetooth. Це в основному BT HC-05 (або подібний) пристрій, прикріплений на Arduino, див. Також Bluetooth Wireless Upload .

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

Однак, крім цього, вам знадобиться автоматизувати комутацію BT-пристроїв, вибираючи відповідний порт і завантажуючи до кожного Arduino по черзі, оскільки ви не в змозі транслювати ескізи . (Якщо я помиляюся, то хтось, будь ласка, виправить мене).

Вибір порту та завантаження ескізу

Ви можете використовувати сценарій разом з версією командного рядка ID Arduino для вибору порту, до якого підключений BT-пристрій, перед кожним завантаженням. Як це буде залежати від будь-якої платформи, яку ви збираєте, див. Командний рядок Arduino, який збирає та завантажує? Це можна зробити за допомогою змінної середовища ARDUINO_COMPORT(див. Можливо застарілу збірку командного рядка Windows ) або опції рядка cmdu arduino --port <portname>(див. Сторінку man ). Потім ескіз буде завантажено за допомогою опції --upload <filename>. Ви можете зробити це одним махом:

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

Зауважте, що в Windows ви повинні використовувати arduino_debug.exe.

Або ви можете використовувати Ino , якщо ви не використовуєте ПК з Windows ..., але це може зробити наступну частину, яка стосується циклу, більш складною, ніж це потрібно.

Вибір кожного з Arduinos (тобто пристроїв BT)

Далі вам потрібно буде додати цикл до сценарію, який підключає ПК до кожного пристрою BT по черзі і після цього викликає ID Arduino для вибору порту та завантаження. На жаль, це взагалі не буде агностиком платформи, а вимагатиме іншого рішення для будь-якої платформи, яку ви використовуєте. Погляньте на Bluetooth з командного рядка , але для Windows вам, ймовірно, знадобиться набір інструментів « Синій зуб» .

У ОС X вам, можливо, найкраще вдаватися до використання AppleScript, див. Підключення до пристрою Bluetooth (iPhone) за допомогою командного рядка на MacOSX , оскільки інструменти рядка cmd для керування BT здаються трохи мізерними - є BlueUtil , див. Як керувати бездротовим Bluetooth радіо з командного рядка? але це, здається, лише вимикає BT. Однак, прив’язання AppleScript до решти скрипту управління Arduino IDE швидко робить речі більш складними, хоча, ви можете просто ввести команду Arduino в AppleScript.


0

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

ESP8266 - це простий дешевий Wi-Fi MCU, який можна запрограмувати за допомогою Arduino IDE.

ESP-LINK - це прошивка для ESP8266, яка змушує ESP діяти як послідовне з'єднання (USB) до Arduino.

Прошивку можна знайти тут на ESP-LINK ESP8266 .


0

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

* Він працює лише під машинами Linux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.