Долгосрочное соединение между Arduino и компьютером
Я хочу сделать индикаторные лампы для своего компьютера, чтобы они показывали такие вещи, как загрузка системы, использование ввода-вывода и т. д., используя Arduino и NeoPixels. Я хотел бы просто подключить его к своему компьютеру и иметь какое-то пользовательское программное обеспечение, которое будет подключаться к нему и отправлять ему необходимые данные во время работы моего компьютера.
У меня возникли трудности с подключением Arduino к компьютеру таким образом, чтобы обеспечить его постоянство в долгосрочной перспективе.
У меня были проблемы с переключением Arduino, какой порт /dev/ttyAMC* ему назначен, поэтому я искал варианты, отличные от последовательного порта USB. Похоже, единственный другой способ — это USB, так как это единственный распространенный порт общего назначения в наши дни.
Вот в чем моя проблема. Люди, похоже, не делают подобных вещей, или, по крайней мере, не пишут об этом.
Teensy может работать как USB HID, но функция raw HID не обновлялась почти десять лет, код на стороне хоста основан на устаревших библиотеках и, похоже, больше ориентирован на передачу данных Teensy на компьютер.
Похоже, что не существует никаких доступных микросхем USB-интерфейса потребительского уровня.
Я нашел V-USB, который кажется решением моих проблем, на самом деле кто-то даже использовал его, чтобы сделать в принципе то, что я хочу сделать. Однако мне все равно нужно будет изучить библиотеку.
Итак, мой вопрос: какой рекомендуемый способ взаимодействия между компьютером и Arduino в долгосрочной перспективе? Действительно ли необходима поддержка USB, или я просто все переосмыслил?
@theJack, 👍2
1 ответ
Лучший ответ:
Я думаю, что самым простым вариантом будет сохранить USB (ACM)-соединение, так что вы не нужно ничего особенного делать на Arduino, и попытаться выяснить способ определения правильного устройства на стороне компьютера.
В Linux предоставление согласованных имен устройств для определенных периферийных устройств является
обычно это работа udev. Вы можете добавить свое собственное правило udev, чтобы создать
символическую ссылку для вашего Arduino каждый раз, когда вы его подключаете. Затем, ваш
пользовательское программное обеспечение всегда открывало /dev/neopixel-monitor
, что
быть символической ссылкой на соответствующее устройство /dev/ttyACMx
.
На самом деле, вам, возможно, не нужно писать свое собственное правило. Я посмотрел на
Правила udev установлены по умолчанию на моем Ubuntu 16.04 и нашли файл
с именем /lib/udev/rules.d/60-serial.rules
, предназначенный для заполнения
/dev/serial/by-path/
и /dev/serial/by-id/
каталоги. Затем я
подключил свой Arduino Uno R3 и увидел символическую ссылку
/dev/serial/by-id/usb-Arduino__www.arduino.cc__0043_93140364233351E00101-if00
автоматически созданный, который сейчас указывает на ../../ttyACM0
. В
это имя, 0043
- это идентификатор USB-устройства Uno, а следующее
Буквенно-цифровая последовательность выглядит как серийный номер. if00
выглядит как
номер интерфейса, и может меняться (но не будет, см. комментарий Маженко).
Имя ссылки должно
будет хорошим способом однозначно идентифицировать этот конкретный Arduino.
- Использование USB-порта для связи с автономной схемой atmega328p
- Не удается подключиться через /dev/ttyACM0 (Ubuntu 18.04)
- Сброс Arduino Due SerialUSB
- Используйте ATtiny85 для выполнения начальной настройки маршрутизатора Cisco с использованием его консольного порта USB.
- Arduino MEGA — Как отправлять и получать данные асинхронно?
- Убедиться, что плата всегда подключена к одному и тому же порту
- Собственный USB-порт Arduino и Simulink
- Ошибка: avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_ReceiveMessage(): timeout