Підключення 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.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/05/31 10:08
  • by vazaz