FreeBSD, Arduino IDE и клоны Arduino Uno

()

Среди разработчиков различной автоматики большой популярностью пользуются платы от проекта Arduino, а так же их различные клоны вроде китайской Tenstar Robot Uno R3. Среда разработки Arduino IDE формально доступна только для Windows и Linux, однако поскольку она написана на Java то возможен её запуск и в других ОС.

Операционную систему FreeBSD отличает нетребовательность к ресурсам. Как показывает практика, рабочая станция со стареньким одноядерным Pentium 4 540 и 1GB RAM под управлением FreeBSD с Lumina Desktop позволяет вполне комфортно писать скетчи для Arduino не испытывая какого-либо дискомфорта. Нижен приведено по возможности подробное описание запуска Arduino IDE на FreeBSD.

Китайский клон Arduino UNO R3 - Tenstar Robot Uno R3

Всё ниже описанное справедливо для FreeBSD 11.2 с установленной средой Lumina Desktop, однако инструкция будет актуальная как минимум для FreeBSD начиная с ветки 10.x.

Arduino IDE есть в портах и пакетах FreeBSD и установить её можно установив пакет «arduino18». Кроме того ещё понадобится установить пакет «uarduno», содержащий модуль ядра для поддержки плат Arduino. Установим их:

pkg install arduino18 uarduno

Далее добавляем в «/etc/fstab» строки для автоматического монтирования procfs и fdescfs:

fdesc           /dev/fd         fdescfs         rw      0       0
proc            /proc           procfs          rw      0       0

И сразу монтируем их:

mount /proc && mount /dev/fd

Теперь добавим нашего пользователя (в данном примере его логин - «moose») в группу «operator»:

pw groupmod operator -m moose

Прежде чем перейти к настройке devfsd нужно сделать небольшое замечание: модуль ядра «uarduno» необходим только для официальных плат Arduino. Большинство китайских клонов Arduino используют в качестве программатора чипы CH340/CH341 и их различные модификации (например в Tenstar Robot Uno R3 стоит CH341). Многие руководства упускают этот нюанс и если следовать им то получится работать только с оригинальными платами.

Для настройки devfsd необходимо дописать следующие строки в файл «/etc/devfs.rules» (если файл не существует его необходимо создать):

[localrules=10]
    # Правила для основных USB-устройств
    add path 'ugen*' mode 0660 group operator
    add path 'usb/*' mode 0660 group operator
    add path 'usb'   mode 0770 group operator
    # Правила для COM-портов, создаваемых модулем uchcom (драйвер чипов CH340/CH341)
    add path 'ttyU*' mode 0660 group operator

Добавляем в файл «/etc/rc.conf» строку:

devfs_system_ruleset="localrules"

После чего перезапускаем сервис devfsd:

service devfsd restart

Теоретически на этом всё. Можно подключать плату к компьютеру, запускать Arduino IDE и начинать писать скетчи.

Arduino IDE 1.8.2 на FreeBSD 11.2

Если пункт выбора порта в Arduino IDE не активен то нужный порт можно указать в файле «~/.arduino15/preferences.txt» примерно так:

serial.databits=8
serial.debug_rate=9600
serial.parity=N
serial.port=/dev/ttyU0
serial.port.file=ttyU0
serial.stopbits=1

Если возникают сложности с определением используемого порта то сначала надо посмотреть что "падает" в dmesg при подключении платы. Например:

ugen3.3: <vendor 0x1a86 USB2.0-Serial> at usbus3
uchcom0 on uhub0
uchcom0: <vendor 0x1a86 USB2.0-Serial, rev 1.10/2.62, addr 3> on usbus3
uchcom0: CH341 detected

Здесь видно что устройство подхватывается драйвером «uchcom» и получает номер ноль (uchcom0). Соответственно имя tty-устройства можно получить из вывода команды:

sysctl dev.uchcom.0.ttyname

В результате будет получена строка вроде «U0» и устройство будет «/dev/ttyU0». В качестве альтернативного способа можно перебрать все устройства из вывода команды:

ls /dev/tty*|sort

Возможно понадобится добавить правила в «/etc/devfsd.rules» и перезапустить devfsd. На этом всё. Приятной работы!

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

Комментарии:

Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности