Операционная система: Linux Mint 21 Vanessa
IDE: Arduino 2.0.4
Плата: Китайская Arduino Nano
При попытке прошить скетч сообщает, что не может найти устройство
Наслоилось несколько ошибок. Ниже гайд по включению.
-
В системе установлен пакет brltty, который мешал нормальной работе с tty сh341.
Выяснилось это по логу в dmesg.
Если последнее сообщение типа
ch341 1-4.1.3:1.0: device disconnected
Значит что то пошло не так.
При более детальном просмотре dmesg обнаружил, что пакет brltty конфликтует с ch341 за /dev/ttyUSB0.
Удаляем пакет brltty из системы:
-
У меня получалось запрограммировать Arduino Nano через программатор и я наивно полагал, что программирование через usb это то же самое. Ан нет. Это другой интерфейс.
Подключаем Arduino Nano к usb и смотрим как она видится в системе:
$ lsusb
...
Bus 001 Device 015: ID 1a86:7523 QinHeng Electronics CH340 serial converter
...
У меня она подключена к Bus 001, как Device 015. Зависит от того в какой разъем usb воткнута Arduino.
Важным является ID 1a86:7523
Нужно разрешить системе работать с этим устройством.
Для этого создаем файл /etc/udev/rules.d/99-Arduino.rules и прописываем в него такие правила:
# Arduino Nano rule
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666″, GROUP:="dialout"
# Arduino USBASP rule
SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", MODE:="0666″, GROUP:="dialout"
Чтоб два раза не вставать я добавил второе правило для программатора USBasp.
Для применения правил нужно дать в терминале команду:
$ sudo udevadm control --reload-rules
-
В предыдущем пункте я указал группу dialout.
Эта группа создана для доступа к последовательным портам. Нужно проверить что вы включены в эту группу.
Можно просто дать команду:
$ usermod -aG dialout $USER
-
Проверяем результат выполения предыдущих пунктов.
Для этого открываем терминал и вводим команду:
$ tail -f /var/log/syslog | grep ch34
Подключаем нашу Arduino к usb. Должно появиться что то вроде этого
Apr 11 14:00:19 x-270 kernel: [ 2911.934831] ch341 1-4.1.3:1.0: ch341-uart converter detected
Apr 11 14:00:19 x-270 kernel: [ 2911.936002] usb 1-4.1.3: ch341-uart converter now attached to ttyUSB0
Отключаем от usb:
Apr 11 14:00:17 x-270 kernel: [ 2909.300300] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
Apr 11 14:00:17 x-270 kernel: [ 2909.303921] ch341 1-4.1.3:1.0: device disconnected
Отлично. Наша Arduino подключается к ttyUSB0
-
Все. Система настроена. Теперь выбираем в IDE следующие параметры
Board: Arduino Nano
Port: /dev/ttyUSB0
Processor: ATMega328P (Old Bootloader)
Programmer: - можно выбрать любой. От этого в данном случае ничего не зависит
Выбираем пункт меню Tools -> Get Board Info
В окне должны увидеть параметры устройства, которые мы определили в П.2:
После выполнения указанных действий Arduino Nano должна шиться через свой USB разъем.
Все равно ничего не работает.
Если после указанных действий не получается ничего записать в Arduino, то попробуйте следующее.
-
Если в каталоге /etc/udev/rules.d/ есть другие файлы правил. Возможно они конфликтуют. Попробуйте временно переместить их в другой каталог. Не забудьте дать команду sudo udevadm control --reload-rules
В Arduino стерт загрузчик.
Его нужно записать с помощью программатора.