Підключення Arduino до OpenWrt

Arduino — це мікроконтролер Atmel, зазвичай змонтований на платі, яка відкриває його виводи для використання в електронних проєктах, та програмується мовою “Arduino” (це C++ з певними обмеженнями). Існує велика екосистема бібліотек, проєктів та апаратних рішень (розширювальні плати та клони), що підтримують Arduino.

Для зручності програмування плати Arduino мають USB-інтерфейс, що дозволяє підключати їх до ПК через USB. Це означає, що плата або має адаптер “serial-to-USB”, або сам мікроконтролер імітує з'єднання “serial-over-USB” (що цілком можливо для середнього та вищого рівня Arduino).

Пристрій OpenWrt з USB-портом також може бути підключений до Arduino. Потрібно лише встановити модулі ядра для підтримки usb-to-serial.

Встановіть такі пакети (через opkg у терміналі або через сторінку Software в LuCI):

>opkg install kmod-usb-serial kmod-usb-serial-ark3116 kmod-usb-serial-belkin kmod-usb-serial-ch341 kmod-usb-serial-cp210x kmod-usb-serial-ftdi kmod-usb-serial-mct kmod-usb-serial-mos7720 kmod-usb-serial-oti6858 kmod-usb-serial-pl2303 kmod-usb-acm kmod-usb-serial-simple kmod-usb-serial-ti-usb

На практиці, ймовірно, вам знадобиться лише один з цих модулів — залежно від чіпа USB-to-Serial, що використовується у вашій платі Arduino (або її клоні). Ці модулі займають небагато місця, тому, якщо ви не впевнені або вам лінь — просто встановіть усі.

Після встановлення підключіть Arduino до USB-порту та виконайте команду dmesg, щоб перевірити, чи пристрій розпізнано, і який серійний пристрій йому присвоєно (зазвичай це /dev/ttyUSB0, якщо підключено лише один Arduino).

Якщо ви хочете відкрити серійний “термінал” до Arduino безпосередньо з терміналу OpenWrt, вам потрібно встановити емулятор терміналу на пристрій OpenWrt.

Доступні емулятори терміналу для OpenWrt: screen, picocom, minicom.

Наприклад, встановимо picocom:

opkg install picocom

А потім запустимо термінал так:

picocom -b 115200 /dev/ttyUSB0

Усе, що ви набиратимете в терміналі, буде надсилатися безпосередньо на Arduino, а його відповіді з’являться на екрані. Звісно, це передбачає, що Arduino виконує програму, яка читає дані з послідовного порту і якось на них реагує.

Для виходу з picocom і повернення до командного рядка OpenWrt натисніть Ctrl + a.

Якщо вам потрібно лише надсилати команди на Arduino (наприклад, зі скрипту):

Шістнадцяткові дані:

echo -e "\x7E\x03\xD0\xAF" > /dev/ttyUSB0

Текст:

*echo -e "hello world" > /dev/ttyUSB0

Щоб прочитати відповіді від Arduino, використовуйте:

cat /dev/ttyUSB0

Вбудований UART роутера <> GPIO (не через usb-to-serial)

Для обмеженого використання, особливо на роутерах без USB, можлива взаємодія через UART-порт роутера. Для цього можуть знадобитися власні заголовки повідомлень і логіка підтвердження. Будьте готові до написання великої кількості коду для мікроконтролера, якщо оберете цей шлях... і будьте реалістами щодо його обмежень.

USB-UART-TTL-пристрій / подібні <> GPIO (не через usb-to-serial)

Схоже на попередній варіант, але ізольовано від консолі, що робить передавання повідомлень набагато чистішим.

telnet <> ESP8266 <> GPIO (не через usb-to-serial)

Використання мережевого серійного “мосту” для доступу до серійних виводів Arduino.

  • Last modified: 2025/05/31 10:08
  • by vazaz