Робот-гуманоид REY 2021 на Arduino Pro mini

Просмотров:
759
Добавлено:
31.05.2021
Эта статья — описание попытки реализации бюджетной версии мобильного человекоподобного робота -игрушки. На рис. 1 показан его внешний вид. Элементы шасси распечатаны из PLA-пластика на ЗЭ-принтере. Робот имеет 17 сервоприводов (13 штук — SG90 и четыре — MG90S), его рост — 275 мм и масса — около 450 г. Питание осуществляется от двух последовательно соединённых Li*lon аккумуляторов типоразмера 18650. Для обновлений прошивки микроконтроллера платы из Arduino IDE используется беспроводной способ передачи данных посредством блютуз-модуля.

На рис. 2 представлена схема электронной ’начинки" робота. Через модуль А1 могут осуществляться управление роботом, программное обновление робота и мониторинг его состояния. Модуль А2 управляет сервоприводами A3—А19. Модуль А20 понижает напряжение батареи до 5 В для питания сервоприводов. Модуль А21 — самодельный — это глаза робота. Модуль выполняет декоративную функцию и придает выразительность игрушке (рис. 3) при движении или в статичном положении. Внешний вид используемых модулей дан на рис. 4 Их выгоднее приобретать в интернет-магазинах.

Изготовление конструкции начинают с распечатки элементов на Зй-прин-тере. Внешний вид комплекта элементов шасси представлен на рис. 5, а дополнительных элементов — на рис. 6 Были использованы следующие базовые настройки принтера: высота слоя — 0,2 мм; ширина линии — 0,4 мм; плотность заполнения —    20 %;

поддержка — да, температура сопла — 190 °С; температура стола — 50 °С; тип прилипания к столу — кайма. Детали с выемками под качалки на столе желательно ориентировать плашмя и выемками вниз. Соответствие нумерации и названий элементов в файлах приложения поясняет таблица

При распечатке на конкретном принтере полученные значения размеров деталей могут отличаться от исходных по разным осям на 1...5 % (например, детали 3. 6, 14). В этом случае могут понадобиться их корректировка и повторная печать. При сборке автор использовал для исправлений (без повторной печати) варианты элемента 1 (их три). Такое применение делает цилиндрическое шарнирное соединение суставов разъемным и в то же время достаточно надёжным.

Далее приступают к сборке непосредственно шасси робота в соответствии с рис. 7. Для удобства желательно использовать штырь-подставку 3 с резьбой под гайки М4 на конце. Сначала (см. рис. 5) с помощью двух винтов (с потайной головкой) и гаек М3 стягивают элементы 4, 5, 13, получая туловище робота. Его крепят к штырю. Затем последовательно "наращивают" голову, руки, ноги. Номера модулей-сервоприводов в их расположении на шасси выделены синим цветом (рис. 7). Как и во всех предыдущих конструкциях, валы сервоприводов в исходном состоянии устанавливают в положение 90 градусов. Качалки одевают так, чтобы все конечности были вытянуты вниз, голова повёрнута прямо (по стойке "смирно"). Шлейфы сервоприводов скрепляют стяжками 1, шарнирные соединения — пробками 2. Качалки прикручивают к печатным элементам винтами-саморезами 5 (рис. 7), такими же, как для крепления сервоприводов. Предварительно в элементах соосно валам сверлят отверстия. Валы всех сервоприводов, при одетой качалке, должны свободно вращаться при среднем усилии. Автору для этого пришлось ремонтировать часть приобретённых сервоприводов SG90. Для этого, сняв крышки и разобрав редуктор сервопривода, между боковой стенкой и двигателем (рис. 8) вставляют отрезок бумаги. Он сложен в несколько слоев, их число (1—4) подбирают опытным путём.

Далее привинчивают винтами-саморезами крышку 10 (см. рис. 5). Пропускают внутрь шлейфы, вставляют выключатель (предварительно припаяв соединительные провода). Все электрические соединения производят пайкой. Провода питания сервоприводов распаивают на колодку из двухстороннего фольгированного гетинакса размерами 34x5 мм, провода управляющих выводов сервоприводов припаивают непосредственно к контактам на модуле А2 (см. рис. 2). Аналогично поступают с модулем А1. Перед монтажом в микроконтроллер записывают скетч regulator

Затем проводами большего сечения производят соединение по схеме модуля А20 и аккумуляторов. Перед монтажом выставляют подстроечным резистором напряжение на выходе этого модуля — 5 В. Аккумуляторы предварительно вставляют в захваты 5 (см. рис. 5). К выводам аккумуляторов припаивают шлейф 4 (см. рис. 7) для их внешней подзарядки. Все открытые контакты взаимоизолируют, закрывают монтаж крышкой 8. которую крепят винтами-саморезами к элементу 4. Перед включением проверяют все суставы на подвижность. После включения робот принимает позу по стойке "смирно’*. На этом аппаратная часть изготовления завершена.

Для дальнейшей проверки работоспособности устройства надо использовать разработанное автором приложение (рис. 9) для ПК — регулятор положения качалок приводов робота, — реализованное в среде HiAsm. Оно, после установки связи между роботом и ПК, позволяет выставлять любой привод в заданное положение, получать строку значений выставленных углов, задавать различные позы робота и запоминать их. Окно приложения содержит 17 виртуальных регуляторов, расположенных в форме контура игрушки. Каждый имеет окно индикации, в котором отображается угол, выставленный на качалке сервопривода. Кроме этого, в рабочем окне есть две кнопки и три информационные строки. Кнопка -ПЕРЕЗАГРУЗКА РОБОТА” (находится в центре окна) дистанционно перезапускает микроконтроллер игрушки, кнопка -Да” записывает текущее значение выставленных углов в строку (расположены в нижней части окна). Также в центральной части имеется строка с выпадающим списком для выбора номера COM-порта связи и строки последней команды, переданной роботу. Например, команда ”1074" означает — выставить угол первого привода в 74 градуса. Команда "12154" — выставить 12 привод в 154 градуса. Определить соответствие номеров и положений приводов можно, двигая ползунки регуляторов.

Текущая концепция анимации робота следующая. Движение состоит из зацикленной последовательности плавных переходов между различными позами или кадрами положений робота. То есть одни наборы значений углов положений качалок плавно сменяются другими за одинаковое время — время перехода между кадрами. Например, анимация "Приседание'* (выложена на редакционном сайте) будет состоять из двух кадров — робот присел и робот стоит. Соответственно в скетче servo_5_17 переменная kolvoKAD будет иметь значение 2, а массив ugolServ [kolvoKADHkolvoSV] будет содержать 34 элемента из двух строк углов. Скорость анимации задается переменной п=2500

Подбирая регулятором лозы, вставляя в массив скетча строки углов, число кадров и длительность переходов, можно создать новые вариации скетчей анимации, которые можно будет дистанционно загружать в робота и проверять их работоспособность на практике.

Теперь поговорим чуть подробнее о дистанционной загрузке скетчей в модуль Arduino Pro mini из среды Arduino IDE На канале Youtube есть несколько обучающих видеоуроков на данную тему [1.2].

Кроме этого, можно найти обзорные статьи и дискуссии на профильных форумах по данной тематике (3—5]. Все они используют модули НС-05 или НС-06 и требуют его перенастройки с использованием AT-команд. Поэтому вначале, следуя рекомендациям [6]. желательно научиться изменять скорость обмена данными между ПК и микроконтроллером для обновления его прошивки. Выставляем скорость на модуле А1 — 57600. Далее следует внести поправку в софт Arduino IDE на компьютере. Дело в том, что Arduino IDE при каждой попытке заливки скетча делает очистку буферов COM-порта, что приводит к закрытию Bluetooth соединения и отмене загрузки. Чтобы избежать этого, нужно поправить конфигурацию Arduino IDE, который в большинстве случаев находится в файле arduino\hardware\arduino\avr\boards.txt, который находится в папке Arduino Для этого открываем этот файл в текстовом редакторе, ищем секцию, соответствующую плате, с которой работаем (у нас это Pro mini), и добавляем следующую строку pro. menu.cpu. 16MHzatmega328. upload. disable_flushing=true. При этом не забываем впаять перемычку для аппаратной перезагрузки платы между выводами RST и А5 (см. рис. 2).

Следующий этап — корректировка встроенной в Arduino IDE библиотеки Servo. Она позволяет одновременно управлять 12-ю сервоприводами, но этого недостаточно для нашего робота. Поэтому в файле Servo, h строку #define SERVOS_PER_TIMER 12  \\the maximum number of servos controlled by one timer нужно заменить строкой #define SERVOS_PER_TIMER 

17 \\ the maximum number of servos controlled by one timer Теперь возможности библиотеки стали больше, и максимальное число управляемых приводов возросло до 17.

Реализовав все опыты, получив успешные результаты, возникает желание улучшить конструкцию. Автор, например. добавил модуль глаз и макет пары лыжных палок (рис. 10) для более выразительной ходьбы (вид элементов — на рис. 6) Можно задуматься о соединении вариантов разных движений в общий вариант под управлением аппаратного пульта или о мониторинге состояния аккумуляторов. Для этого можно использовать свободные выводы А6 и А7 у модуля Arduino Pro mini. Можно видоизменить отдельные элементы шасси для улучшения его прочности или эстетики.



















Теги:
Комментарии (0)
Написать
Кликните на изображение чтобы обновить код, если он неразборчив
Похожие темы: