на главную
Карта сайта
English version
Вы читаете:

Программа Arduino - начинающему радиолюбителю

Р/л технология
8 лет назад

Знакомство с Arduino (часть 1)


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

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

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

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

Несмотря на дороговизну специализированных конструкторов, сама идея использовать для создания сложного устройства относительно небольшой ряд стандартных функциональных узлов выглядит довольно здраво. Именно по такому пути пошли разработчики платы Arduino с микроконтроллером серии AVR и множества плат расширения к ней. Самая распространённая сегодня версия этой платы - Arduino UNO. Для создания пользовательских программ существует специализированная среда разработки Arduino IDE, в которой программирование ведётся на языке, основанном на широко распространённом языке C++.

Большое достоинство Arduino - практически полная открытость. На официальном сайте разработчика можно бесплатно скачать среду разработки [1,2]. При её запуске откроется изображённое на рис. 1 окно, в которое можно ввести программу, транслировать её в машинный код, загрузить в микроконтроллер платы Arduino и запустить на исполнение.

Окно ввода программы

Рис. 1. Окно ввода программы

 

Следует заметить, что компания-разработчик Arduino разделилась на две независимые компании Arduino LLC и Arduino SRL, которые продолжают выпускать продукцию под одной торговой маркой, что создаёт путаницу. Тем не менее программное обеспечение регулярно обновляется, имеются версии для Windows, Linux, MacOS. Кроме программного обеспечения, поставляемого разработчиками платы, существует немало других сред разработки, например, [3].

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

Использование языка высокого уровня упрощает разработку и сильно снижает требования к квалификации программиста, но, с другой стороны, полученная программа не будет оптимальной по занятой памяти и скорости исполнения. Программа, написанная на языке низкого уровня (языке ассемблера), заняла бы значительно меньше места в памяти и работала бы быстрее. Но в любительских разработках этим можно пренебречь.

Естественно, в ответственных случаях использовать Arduino нужно с крайней осторожностью. Однако принципиально возможно использовать Arduino в самых разных устройствах: от простейшего термостата до беспилотных летательных аппаратов. Например, российская аэро космическая компания "Лин Индастри ал" [4], занимающаяся конструированием сверхлёгких ракет-носителей, создала на основе Arduino блок регистрации параметров полёта (рис. 2) для своей экспериментальной ракеты (рис. 3). А учёные из Индийского института исследований и естественнонаучного образования (г. Тривандрам) применили Arduino в учебном радиотелескопе [5].

Блок регистрации параметров полёта

Рис. 2. Блок регистрации параметров полёта

 

Экспериментальная ракета

Рис. 3. Экспериментальная ракета

 

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

На плате Arduino UNO (рис. 4) установлен микроконтроллер ATmega328P, имеющий 2 Кбайт оперативной памяти и 32 Кбайт памяти программ. Тактовую частоту микроконтроллера 16 МГц задаёт кварцевый резонатор. Arduino UNO не нуждается в отдельном программаторе, плату можно напрямую подключить к разъёму USB компьютера, для чего на ней имеются разъём USB-BF и преобразователь интерфейса USB в последовательный интерфейс микроконтроллера. В других вариантах плат Arduino для подключения к компьютеру может служить разъём micro-USB. На устаревших и самодельных платах можно встретить и обычный COM-порт.

Плата Arduino UNO и микроконтроллер

Рис. 4. Плата Arduino UNO и микроконтроллер

 

Питается плата Arduino UNO, подключённая к компьютеру, от разъёма USB. А для работы без компьютера на неё нужно подать напряжение 7...12 В от внешнего источника, для чего на плате имеется специальный разъём. Благодаря встроенному стабилизатору напряжения Arduino UNO не предъявляет особых требований к качеству питающего напряжения. Так что его источником может быть почти любой малогабаритный блок питания, выходное напряжение которого лежит в требуемом интервале, и даже гальваническая батарея на 9 В, например, "Крона" (6F22) или две последовательно соединённые батареи 3336 (3R12).

Для связи с внешними исполнительными устройствами, а также съёма информации с датчиков имеются 14 цифровых линий ввода-вывода, которые называются D0-D13. На шесть из них микроконтроллером могут быть выведены импульсы с программно управляемым коэффициентом заполнения (ШИМ). Они помечены на плате знаками "~". Кроме того, имеются шесть аналоговых линий ввода A0-A5. Аналоговые входы подключены к встроенному в микроконтроллер десятиразрядному аналого-цифровому преобразователю, но при необходимости их можно использовать и в качестве дополнительных цифровых линий ввода-вывода D14-D19.

Следует заметить, что от версии к версии платы число линий аналогового ввода и линий, способных работать в режиме ШИМ, изменяется. Например, плата Arduino Leonardo и её отечественная копия Iskra Neo имеет 12 аналоговых линий и семь линий с ШИМ. Как правило, все линии ввода-вывода на платах промаркированы, так что разобраться в них не составляет труда.

На плате Arduino UNO установлены четыре светодиода: индикатор питания (ON), светодиод, постоянно подключённый к линии D13 (L), и два светодиода для индикации обмена информацией с внешним устройством через последовательный порт (ТХи RX), а также кнопка для приведения микроконтроллера в исходное состояние.

Одно из достоинств Arduino - широкий набор дополнительных плат, так называемых "шилдов" (англ. shield - щит). Они позволяют подключать к Arduino электродвигатели и другие мощные нагрузки, обеспечивают работу в компьютерных сетях по протоколам Ethernet и WiFi, передают информацию по сети сотовой связи GSM, работают со звуком и т. д. Обеспечивают работу с шилдами немало готовых программных библиотек, как официальных, так и написанных сторонними авторами.

Плата Arduino UNO хорошо подходит для отладки программ на стадии разработки и налаживания конструкций. Но для множества практических приложений возможности Arduino UNO избыточны, а её размеры могут оказаться слишком большими для установки в готовое изделие. На использование в готовых конструкциях ориентированы платы Arduino Nano и Arduino Mini. По параметрам они практически идентичны Arduino UNO, но имеют упрощённую конструкцию, меньшие габариты и несколько дешевле. Если же возможностей Arduino UNO недостаточно, можно применить плату Arduino Mega с большим объёмом памяти и числом линий ввода-вывода. Перечень вариантов плат Arduino этим не исчерпывается, но другие варианты для первоначального изучения подходят хуже.

Авторским правом охраняется только само название Arduino, поэтому множество производителей выпускают свои варианты под названиями Free-duino, Craft Duino, Funduino, Diavolino и пр. Среди всего этого многообразия есть конструкции, как полностью повторяющие оригинальные, так и собственные разработки, совместимость которых с оригиналом иногда под вопросом. Впрочем, как правило, устройства разных производителей стандартизованы, так что если плата заявлена как копия Arduino UNO, то всё сказанное об Arduino UNO относится и к ней, хотя за каждого производителя поручиться, конечно, нельзя.

Приемлемый для любителя уровень качества способны обеспечить не только производители оригинальных устройств, но и малоизвестные фирмы, которые предлагают аналогичные конструкции по гораздо меньшей цене. Плата Arduino не очень сложна и вполне доступна для самостоятельного изготовления, документацию для этого можно найти на официальном сайте производителя [6]. Описание самодельной платы, входящей в семейство Arduino, было опубликовано и в журнале "Радио" [7].

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

Печатные издания на русском языке, посвящённые описанию Arduino, существуют, но, прямо сказать, не лежат на полке каждого книжного магазина или библиотеки. В качестве примера можно привести книгу [8], а среди периодических изданий можно отметить цикл статей в журнале "Левша" (приложение к журналу "Юный техник"). Там, начиная с 

№6 за 2012 г., ежемесячно публикуют статьи, посвящённые использованию Arduino [9]. Впрочем, в сети Интернет можно найти немало ресурсов, как полностью посвящённых Arduino [10-12], так и сайтов более широкой научно-технической направленности, имеющих соответствующиеразделы [13-16].

В заключение можно заметить, что для облегчения работы с Arduino можно изготовить несколько простых приспособлений. Например, не очень удобно втыкать зачищенные концы проводов в гнёзда разъёмов. Для этого существуют показанные на рис. 5 специальные соединительные провода с наконечниками, которыебывают как штырями, так и гнёздами. Аналогичные провода несложно изготовить самостоятельно, используя контакты от разъёмов. А для быстрого подключения внешних устройств лучше использовать соединительные провода, подобные показанному на рис. 6, на одном конце которых припаян разъём "крокодил", а на другом - штыревой контакт.

Соединительные провода с наконечниками

Рис. 5. Соединительные провода с наконечниками

 

Соединительный провод, на концах которого разъём "крокодил" и штыревой контакт

Рис. 6. Соединительный провод, на концах которого разъём "крокодил" и штыревой контакт

 

Часто требуется подключить к одному выводу платы несколько проводов, например, чтобы подать питание на несколько датчиков. Здесь можно использовать гнездовые колодки PBS или аналогичные, все выводы которых нуж- № 8, с. но соединить вместе и припаять к соединительному проводу, на противоположном конце которого имеется штыревой контакт.

Для быстрой сборки несложных устройств без применения паяльника хорошо подходят специальные макетные платы. Внешний вид одной из них показанна рис. 7, а схема - на рис. 8.

Макетные платы

Рис. 7. Макетные платы

 

Схема макетных плат

Рис. 8. Схема макетных плат

 

Жёсткие выводы деталей вставляют в пружинные гнёзда таких плат, а недостающие соединения между ними выполняют проволочными перемычками или описанными выше проводами.

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

Продолжение следует

Литература

1. Download the Arduino Software. - URL: https://www.arduino.cc/en/Main/Software (13.04.16)/.

2. Arduino Software. - URL: http://www. arduino.org/software (13.04.16).

3. Глушенко С. FLProg - система визуального программирования для Arduino. - Радио, 2015, № 10, с. 27-30.

4. Официальный сайт компании "Лин Индастриал". - URL: http://spacelin.ru (13.04.16).

5. Mandal P. и др. Everyday Radio Telescope. - URL: http://arxiv.org/abs/1601. 02982 (13.04.16).

6. Arduino Single-Sided Serial Board (version 3). - URL: https://www.arduino.cc/en/ Main/ArduinoBoardSerialSingleSided3 (13.04.16).

7. РюмикО. Микроконтроллерный модуль "InterDuino". - Радио, 2010, № 10, с. 27-30.

8. Блум Д. ИзучаемArduino: инструменты и методы технического волшебства. Пер. с англ. - СПб.: БХВ-Петербург, 2015.

9. Холостов К. Не удивляйтесь: робот - это просто. - Левша, 2012, № 7, с. 12-14; 12-14.

10. Сайт "Робокрафт". - URL: http:// robocraft.ru (13.04.16).

11. Официальный российский сайт Arduino. - URL: http://arduino.ru (13.04.16).

12. Официальный украинский сайтArduino (на русском языке). - URL: http://arduino. ua/ru (13.04.16).

13. Сайт "Роботоша", рубрика Arduino. - URL: http://robotosha.ru/category/arduino (13.04.16).

14. Сайт "technopage". Статьи. Arduino. - URL: http://tehnopage.ru/arduino (13.04.16).

15. Сайт "Интеркот". Робототехника. - URL: http://interkot.ru/category/blog/ robototechnika/ (13.04.16).

16. Курс Arduino для начинающих. - URL: http://edurobots.ru/kurs-arduino-dlya-nachinayushhix/ (13.04.16).

Автор: Д. Лекомцев, г. Орёл


Рекомендуем к данному материалу ...