Обзор робототехнической платформы Strela или простой bluetooth-бот своими руками
Недавно мы получили подарок для нашей мастерской от одного из ведущих производителей учебных наборов по электронике в России — от Амперки. Плата Strela — это новая разработка компании и они предложили нам попробовать применить ее в реальных условиях.Основная идея платформы Strela — отказ от модульного принципа построения робототехнического Arduino-проекта. Вместо набора шилдов, Амперка предлагает использовать одну универсальную плату, в которой реализован функционал многих шилдов.В статье я предлагаю вам свой взгляд на то, что из этого получилось, и расскажу, как мы построили своего робота, управляемого по bluetooth с Android-смартфона. Я постарался быть максимально беспристрастным, но определенная доля субъективности, конечно, присутствует.ПредысторияЯ преподаю специальные дисциплины в радиотехническом колледже и в свободное время занимаюсь со студентами проектной деятельностью. Это нельзя назвать кружком в привычном понимании этого слова. У меня просто есть группа молодых людей, которые индивидуально или в очень маленьких группах работают над тем что им нравится. Кто-то занимается 3D-печатью, кто-то коптерами, кто-то программированием и т.д. То есть я имею представление об обучении людей электронике на практике.На основном месте работы я профессионально занимаюсь разработкой электроники и имею большой опыт работы над настоящими железными проектами. Я могу высказать свои впечатления не только как учитель, но и как инженер.Когда мне предложили попробовать использовать в своей работе Стрелу и поделиться полученным опытом я, кончено, сразу согласился. Все, что Амперка нам подарила, я в полном комплекте передал одному из своих студентов, который заинтересовался задачей, и вот что он сделал:[embedded content]Итак, перейдем к описанию комплектующих.Strela Платформа Strela — это Arduino-совместимая плата, полностью подготовленная для строительства роботов. Она разработана компанией Амперка и совмещает в себе практически все, что может понадобиться для быстрой постройки робота. Построена на основе контроллера Atmega32u4 и работать с ней надо, как с Arduino Leonrdo. Приехала она нам вот в такой коробочке: Вообще, Амперка внимательно относится к упаковке. Все их продукты аккуратно упакованы в специально разработанные коробочки. Ориентируются они в первую очередь на довольно юную аудиторию и, я думаю, ребятам приятно получать свои покупки в таком виде, а не завернутые в пупырчатую пленку.В коробке сама плата: При первом взгляде я удивился, что в коробочке ничего кроме платы нет. Позже, начав работать с платой, я не раз возвращался к этой мысли, но так и не смог придумать, что бы еще могло в ней быть, но так ничего и не придумал. На плате уже установлено действительно много всего, но получать какие-то дешевые плюшки бонусом всегда очень приятно.Сама плата с лицевой…… и с обратной стороны: Вот основные характеристики платы: Питание
Входное напряжение: 7–24В. От этого же напряжения питается драйвер двигателя
Встроенный импульсный стабилизатор на 5В, 3А. Сама плата потребляет очень мало, то есть все это можно использовать для питания подключаемых элементов (датчиков, сервоприводов и т.д.)
Линейный стабилизатор на 3,3В для питания модулей связи
Питание от USB. На Стреле установлен компаратор, который при отключении основного питания автоматически переключается на питание от USB-порта. Нагрузочная способность по 5-ти вольтовому каналу при этом упадет до 500 мА, а силовые выходы на двигатели перестанут работать
Периферия, установленная на платеДрайвер двигателей L298P
Пьезоизлучатель без встроенного генератора. Может быть использован для воспроизведения произвольной мелодии
Переключатель RESET. То есть именно переключатель. Он, по сути, служит выключателем платы. Можно отключить плату если поставить внешний тумблер на питание, а можно просто «выключить» микроконтроллер переключателем RESET
Четыре пользовательских кнопки без фиксации
Четыре пользовательских светодиода
Десять индикаторных светодиодов состояния двигателей, питания и линий передачи
Разъемы для подключения внешних элементовДве клеммные колодки для подключения двух моторов постоянного тока по 2А, либо одного мощного на 4А, либо одного шагового двигателя
12 стандартных трехконтактных PLS-разъемов (GND, 5V, SIG). К ним можно подключать разнообразные датчики, сервоприводы и т.д. Восемь из них могут работать, как аналоговые входы и 4 как PWM-выходы
Разъем для установки модулей связи. Вся необходимая обвязка уже есть на плате — остается только установить нужный модуль формата XBee
Разъем для подключения ИК-приемника для управления с пульта по оптическому каналу
Разъем для подключения жидкокристаллических дисплеев
Интерфейсы TWI/I2C, SPI, UART
Надеюсь, читатель простит меня за вольный пересказ. Все характеристики можно найти в вики.На сегодняшний день роботостроители чаще всего используют модульный принцип. То есть им приходится покупать по отдельности практически все эти функции, а потом соединять их вместе.Примерно так бы выглядел наш робот, сделанный на шилдах: Strela включает в себя несколько устройств, которые обычно покупают отдельно — Arduino, шилд с драйвером двигателей, преобразователь напряжения и breadboard для прототипирования. Это основная идея платы и у нее есть две стороны.С одной стороны, если попробовать все эти функции купить в виде раздельных шилдов, то получится намного дороже и больше по размеру. То есть если, к примеру, планировать закупку оборудования для класса робототехники, то Strela становится выгодна даже с экономической точки зрения.С другой стороны, если есть конкретный проект, который задуман на Arduino и известны все составляющие системы заранее, то скорее всего можно будет обойтись одним-двумя шилдами и получить выигрыш и в стоимости и в размерах.Мне кажется, что использование платформы будет оправдано в рамках кружка робототехники. Можно будет постоянно переставлять ее на разных роботов, быстро добавлять функции и т.д. В видеообзоре от Амперки они вообще построили робота, в котором реализовали одновременно чуть-ли не весь функционал. Также Стрела может заинтересовать людей, сведущих в программировании, которым в их проекте понадобилась относительно несложная аппаратная часть. Strela прекрасно впишется в качестве исполнителя команд робота телеприсутствия или поможет вдохнуть новую жизнь в сломанную RC-модель.Подводя итоги этой части, хочется перечислить плюсы и минусы платы. Итак, вот то, что я считаю достоинствами: Внешне одна плата выглядит лучше, чем набор шилдов. Как минимум, она будет выделяться на фоне других роботов
Меньше соединений придется делать навесным монтажем. Проще сборка, выше надежность
Крепежные отверстия на плате повторяют расположение отверстий на Arduino Uno и есть дополнительные четыре отверстия
Подробнейшая документация с огромным количеством примеров (сложу основные ссылки в конце статьи)
Библиотека для работы с платой. О ней мы позже поговорим отдельно
Коробочка
А вот то, что лично мне не понравилось: Очень часто схемотехника сделана без запаса прочности. Но нужна ли в домашнем роботостроении экстремальная безотказность?
Я не люблю белую маску. Я понимаю, что с ней платы выглядят интересней, но под ней же ничего не видно!
5-ти вольтовая часть платы питается от одного источника питания. Я бы сделал раздельные стабилизаторы для цифровой и силовой части
Все-таки плата по моим меркам большая — 100×80 мм. Большая и все
Strela несовместима с шилдами для Arduino. Для этого нет стадартного посадочного места
О комплектации я уже говорил
Вот столько эта плата стоит сейчас. Трудно сказать много это или мало. Вполне может оказаться, что при строительстве робота с нуля это дешевле, чем собрать на шилдах. По моему опыту, цена честная. Именно столько и стоит электроника, если разрабатывать ее в России, продавать официально и организовывать масштабную техническую поддержку.Шасси для робота
Также нам подарили удобную двухколесную платформу Turtle.Она довольно крупная и подходит к Стреле с точки зрения мощности двигателей и количества элементов питания во встроенном держателе батарей. На ней уже есть крепления для популярных сенсоров и датчиков.Bluetooth-модуль, датчики и индикатор
Помимо контроллера и колесной платформы нам подарили еще много полезных штук: Модуль Bluetooth Bee, совместимый с платформой и очень простой в использовании. К контроллеру он подключается через UART, а операционные системы видят его как COM-порт. Наверное, самый простой способ подключить что-то к ПК/смартфону без проводов
Текстовый экран 8×2. Очень удобно, если робот может показывать какие-то статусные сообщения, тем более, что этот дисплей поддерживает еще и русский алфавит
Два аналоговых датчика линии для постройки line-tracer’а. В комплекте с ними есть обычные трехжильные кабели для подключения
Инфракрасный дальномер 10–80 см с креплением. На выходе у него напряжение, величина которого зависит от измеренного расстояния
Два инфракрасных датчика препятствий. На его выходе либо ноль, либо единица в зависимости от выставленного порога срабатывания и измеренного расстояния
Сборка bluetooth-бота
Для быстрой проверки возможностей системы мы решили собрать робота, управляемого через bluetooth. За основу мы взяли пример из вики по Стреле.Для этого будет достаточно самой платформы Strela, как контроллера, модуля связи, колесной платформы и аккумулятора. Мы решили не использовать батарейный отсек. Вместо этого мы подключили LiPo-аккумулятор на 11,1В, 3А/ч. Дополнительно мы подключили еще и индикатор.Вот, что у нас получилось в итоге: Как видите, вся сборка сводится к тому, чтобы собрать шасси, прикрутить и соединить платы и подключить десяток проводов.На этом вся сборка заканчивается и начинается программирование.Программирование Стрелы
Внимательный читатель мог заметить, что количество «ног», которыми управляет Strela, значительно больше чем у Arduino Leonardo. Для одного только ЖК-индикатора их нужно восемь штук. Все это реализовано и работает одновременно благодаря использованию расширителей портов, управляемых через I2C. Использовать возможности этих расширителей было бы довольно трудно новичку, если бы не готовая библиотека Strela.Разработчики электроники очень часто небрежно относятся к вопросам упаковки, документирования и программного обеспечения. Но это не относится к Амперке. Для платы Strela есть масса готовых примеров и отличная библиотека. В ней всего несколько функций для работы с цифровыми выводами, но без них заставить работать одновременно всю возможную периферию было бы очень трудно. Они такие же простые, как стандартные функции Arduino. Их использование позволяет не вдаваться в тонкости использования шины I2C, иначе для начала работы с ней потребовалось гораздо больше времени. На Стреле изменено обозначение выводов по отношению к Arduino, но путаницы в этом не возникает.Если вы планируете использовать ЖК-дисплей, то лучше скачать гарантированно работающую библиотеку из вики по Стреле. И там же вы найдете примеры работы с ней.Для управления с телефона, как и в примере, мы использовали готовое приложение Bluetooth RC car из Play Market.Мой студент уже имел небольшой опыт программирования микроконтроллеров на C и написания программ для операционных систем. С освоением Стрелы у него не возникло никаких проблем. Добавление индикатора было его инициативой, из чего я сделал вывод что ему действительно понравилось. На индикатор он вывел установленную в приложении скорость (а точнее относительную скважность ШИМ-сигнала)Я выложу его код в первозданном виде, просто чтобы показать что он есть и что его писал человек с небольшим опытом. Вы можете заглянуть под спойлер, но вы не найдете там ни идеального кода, ни чего-то нового.Программа bluetooth-бота
#include