Как подключить китайский клон Arduino DCcduino в Ubuntu Linux


В данной статье на примере DCcduino Uno опишем особенности подключения китайских клонов в системах GNU/Linux. Предварительно в качестве лирического отступления скажем несколько слов о феномене Arduino.


Oh, cherie, cherie! Made in Italy

Arduino — семейство популярных электронных плат для любителей электроники на основе семейства микроконтроллеров Atmel AVR ATmega. Отцами-разработчиками этого проекта являются итальянцы Массимо Банци (Massimo Banzi) и Джанлука Мартино (Gianluca Martino). Равно как и основным производителем этих плат под официальной торговой маркой является итальянская фирма Arduino SRL.

Рис. Семейство Arduino
Рис. Семейство Arduino

Эти платы позволяют изучать микроконтроллеры даже школьнику, создавать вполне рабочие электронные устройства для домашних нужд или даже — прототипы для промышленных задач. Поэтому Arduino полюбили как новички и любители электроники, так и мастера-электронщики. Arduino имеет удобный способ программирования. Для этих плат написано много программ, создана большая серия плат расширений и имеется много различной периферии, начиная с выключателей и заканчивая компонентами робототехники.

С другой стороны ардуиномания не вызывает большого восторга у многих профессиональных микроконтроллёрщиков, и они не приветствуют ардуинозависимость большого числа любителей электроники. Суровые микроконтролёрщики не одобряют тот факт, что программирование микроконтролёров с приходом Arduino становится таким же лёгким как итальянская поп-музыка.

Видео приложение. Программирование Arduino лёгкое как итальянский поп
Видео приложение. Программирование Arduino лёгкое как итальянский поп

Однако, надо обязательно сказать, феномен Arduino лежит гораздо глубже чем проблематика микроэлектроники и встраиваемых систем и затрагивает компьютерный мир в целом. Arduino — это ведь не только контроллер, но и практически полноценный компьютер. Эдакий велосипед по сравнению, например, с ПК. И Arduino — это также результат культурно-технического развития компьютерной техники в целом.

Но этот культурно-технический аспект — тема другой статьи. Мы же рассмотрим исключительно практический вопрос: подключение китайских клонов Arduino в системах GNU/Linux. Потому что в силу открытой архитектуры этих плат выпускать их клоны может кто-угодно. Особенно преуспели в клонировании Arduino наши китайские товарищи. И в китайских интернет-магазинах можно отыскать большое количество различных «дуино»: Freduino, Freeduino, DCcduino, Xdruino, Funduino и др.

Главной особенностью этих китайских плат является, естественно, цена. Так, например, DCcduino Uno — аналог официальной модели Arduino Uno — стоит где-то четыре доллара с копейками, что в раза три дешевле, чем официальная модель.

Рис. DCcduino Uno
Рис. DCcduino Uno

Подключение DCcduino Uno в Ubuntu Linux

По своим характеристикам на уровне программ и интерфейсов ввода-вывода для периферии китайские клоны идентичны официальным версииям Arduino. Однако есть и нюансы. В первую очередь — это подключение китайской «дуины» к компьютеру. Например, официальные драйверы, которые идут в комплекте с официальной средой разработки Arduino IDE могут не заработать вс китайскими платами. Рассмотрим это на примере DCcduino Uno.

В официальных платах Arduino для связи с персональным компьютером и средой программирования Arduino IDE используется чип Atmega8U2, запрограммированный на преобразование USB - Serial. Также использовался чип чип FT232RL.

А в DCcduino Uno для записи подпрограммы в память контроллера используется в качестве конвертора USB-Serial чип CH340/41. Этот чип также часто используется в недорогих китайских программаторах.

Рис. CH340
Рис. CH340

Соответственно для пользователей Windows, чтобы заработала их плата DCcduino Uno, нужно искать драйвер именно для CH340/341. Для пользователей Linux скачивать ничего, скорее всего, не придётся, так как драйвер CH340/341 входит в состав драйверов ядра. (Исходный код модуля ядра ch341.c для микросхемы CH341) Но нужно сделать кое-какие манипуляции в системе. Хотя возможны случаи, когда этот драйвер не собран для какой-то конкретной системы.

Итак вы подсоединили DCcduino Uno к компьютеру с Ubuntu Linux (всё сказанное верно и для других дистрибутивов), скачали и установили согласно инструкции Arduino IDE для Linux c официального сайта arduino.cc, и пытаетесь из этой среды запустить первый какой-нибудь простой скетч для проверки работоспособности вашей DCcduino Uno. Но ничего не получается и Arduino IDE выдаёт ошибку.

Рис. Arduino IDE ERROR
Рис. Arduino IDE ERROR

Дело вот в чём. Ubuntu Linux определяет DCcduino Uno как устройство ttyUSB*. Обычно это ttyUSB0. Что можно узнать через вывод команды dmesg.

$ dmesg

....
[19326.883282] usb 3-2: new full-speed USB device number 10 using xhci_hcd
[19327.012463] usb 3-2: New USB device found, idVendor=1a86, idProduct=7523
[19327.012471] usb 3-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[19327.012474] usb 3-2: Product: USB2.0-Serial
[19327.013035] ch341 3-2:1.0: ch341-uart converter detected
[19327.014132] usb 3-2: ch341-uart converter now attached to ttyUSB0

То есть, говоря по-научному, у нас появился в системе интерфейс /dev/ttyUSB0. Но чтобы с ним работать, нужны права доступа. Обычно читать и писать на устройство /dev/ttyUSB0 имеет пользователь root и пользователи группы dialout.

$ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout Mar 21 01:04 /dev/ttyUSB0

Работать с правами суперпользователя — этого нужно избегать. Лучше занести себя в пользователи группы dialout. Для этого можно выполнить следующую команду (обратите внимание, команда whoami в обратных кавычках):

sudo usermod -a -G dialout `whoami`

После чего нужно перелогиниться. И дальше запускаем Arduino IDE, в меню «Инструменты — Порт» ставим галочку напротив /dev/ttyUSB0. Теперь мы можем загружать из Arduino IDE в DCcduino Uno любые скетчи.

Рис. Работающая DCcduino Uno
Рис. Работающая DCcduino Uno

Такой вот тривиальный процесс подключения китайского клона Arduino в Ubuntu Linux. Тем не менее, многие начинающие испытывают затруднения.

Ⓜ ⬇ 2015-03-21