Шагающий и танцующий робот на Arduino


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

Внешний вид шагающего и танцующего робота на основе платы Arduino

Также вы можете использовать программу, приведенную в конце статьи, чтобы управлять движениями робота с помощью положения его сервомоторов и используя для этого последовательный монитор (Serial monitor). Если у вас есть 3D принтер, то вы можете сделать этот проект очень впечатляющим, но если у вас его нет, то вы можете изготовить компоненты корпуса робота из любого доступного материала: пластмасса, дерево, жесткий картон и т.д.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Сервомотор SG90 (4 шт.) (купить на AliExpress).
  3. Bluetooth модуль (HC-05/HC-06) (купить на AliExpress).
  4. Соединительные колодки (типа папа).
  5. 3D принтер (опционально).

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

Внешний вид комплектующих для сборки робота

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

Печать на 3D принтере необходимых компонентов

3D принтеры, появившиеся сравнительно недавно, дают большой простор для разнообразных DIY (сделай сам) проектов.

Мы в нашем проекте полностью напечатали тело робота на 3D принтере. Все необходимые STL файлы для этого вы можете скачать по следующей ссылке. Вы можете загрузить эти файлы программным обеспечением вашего 3D принтера (например, Cura) и непосредственно напечатать их. Принтер, который мы использовали, называется FABX v1, который доступен по приемлемой цене и может печатать в объеме до 10 кубических сантиметров. Мы использовали программное обеспечение Cura чтобы напечатать STL файлы. Мы сделали следующие настройки в данном программном обеспечении для печати нашего проекта:

Настройки 3D принтера для печати комплектующих робота

Напечатанные нами части корпуса робота выглядят следующим образом:

Внешний вид напечатанных компонентов робота

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

Работа схемы

Схема устройства представлена на следующем рисунке.

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

Сборка робота

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

Motor Number (номер мотора) Motor place (место мотора) Motor position (позиция мотора)
1 Left Hip motor 110
2 Right Hip motor 100
4 Right Ankle Motor 90
5 Right Hip motor 80

Эти углы можно выставить с помощью программы, приведенной в конце статьи. Просто загрузите программу в плату Arduino (когда все соединения уже сделаны) и напечатайте в окне последовательного монитора (serial monitor) (бодовая скорость: 57600):

1, 100, 110

2,90,100

4,80,90

5,70,80

Окно последовательного монитора у вас после установки всех сервомоторов в необходимые позиции должно выглядеть примерно так:

Вид окна последовательного монитора

После того как оси сервомоторов повернуты на необходимые углы смонтируйте их на роботе как показано на следующем рисунке.

Названия сервомоторов робота

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

Объяснение программы для Arduino

Если вы не уверенно чувствуете себя в программировании действий сервомоторов, то вначале рекомендуем изучить следующую статью – подключение сервомотора к плате Arduino. Также вы можете посмотреть на нашем сайте все статьи, связанные с управлением сервомоторами.

Полный текст программы приведен в конце статьи, либо вы можете скачать его по этой ссылке. Здесь же объяснены наиболее важные части программы. С помощью этой программы можно управлять движениями робота при помощи монитора последовательной связи (serial monitor) или технологии Bluetooth. Также вы на основе этой программы можете запрограммировать свой собственный набор движений для робота.

В следующих строчках кода мы укажем плате Arduino какие сервомоторы к каким ее контактам подключены. В нашем случае сервомоторы 1, 2, 4 и 5 подключены к контактам 3, 5, 9 и 10.

В следующих строчках кода инициализируем последовательную связь с Bluetooth на скорости 9600 бод/с (под именем “Bot_BT”) и последовательную связь на скорости 57600 (для управления через монитор последовательного порта).

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

К примеру, если мы хотим повернуть сервомотор №1 (left hip motor) с его позиции по умолчанию (60 градусов) на позицию 110 градусов, то мы можем просто написать в окне монитора последовательной связи (serial monitor) команду “1,110,60” и нажать клавишу ввода (Enter). Пробуя разные команды таким образом вы можете составить свой индивидуальный набор движений для робота и потом оформить их в виде функции.

Следующие строки позволяют расшифровать поступающие команды по последовательному порту (из окна монитора последовательной связи) и распределить поступающие параметры по необходимым переменным.

Если мы получаем информацию по Bluetooth, то мы сохраняем ее в переменной “BluetoothData”. Затем значение этой переменной сравнивается с заранее определенными значениями чтобы выполнить необходимые действия.

В следующем участке кода происходит вызов необходимой функции в соответствии с командой, поступившей по последовательному порту или через Bluetooth. Как было показано раньше, переменная gmotor будет содержать данные, поступившие по последовательному порту, а переменная BluetoothData – данные, поступившие через Bluetooth. Числа с 10 по 13 и с 49 по 54 – это заранее определенные значения.

К примеру, если вы введете в окне монитора последовательной связи число 49, то произойдет вызов функции say_hi() и робот выполнит соответствующие движения.

Все запрограммированные функции доступны на странице “Bot_Functions” – вы можете открыть ее и посмотреть что происходит внутри каждой функции. Все эти функции составлены с учетом наших экспериментов по управлению серводвигателями робота.

Программирование Android приложения с помощью Processing

Android приложение для управления этим роботом было написано с помощью бесплатной программной среды Processing. Если вы хотите внести какие-нибудь свои изменения в его код, то исходный код данного приложения вы можете скачать по данной ссылке.

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

Примечание: ваш Bluetooth модуль должен иметь имя “HC-06”, иначе приложение не сможет с ним соединиться.

После установки приложения на мобильный телефон вы можете соединить ваш телефон по Bluetooth с Bluetooth модулем (подключенным к Arduino) и после этого запустить приложение. Это будет выглядеть примерно следующим образом:

Вид запущенного приложения для управления танцующим роботом

Если же вы хотите сделать приложение более привлекательным или соединить его с другим Bluetooth-устройством (названным не “HC-06”), то вам в этом случае будет необходимо внести изменения в исходный код приложения.

Принцип работы танцующего робота

После того как схема собрана и программа загружена в плату Arduino вы можете насладиться управлением роботом. Для управления из Android приложения вам необходимо нажимать в нем соответствующие кнопки (см. рисунок выше), а для управления из окна монитора последовательной связи вам следует в этом окне вводить необходимые команды как показано на следующем рисунке:

Вид команд для управления роботом, вводимым в окне монитора последовательной связи

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

Робота можно запитать от адаптера на 12V или с помощью батареи на 9V, которую несложно будет разместить внутри корпуса робота.

Вид различных движений робота

Более подробно весь этот процесс можно посмотреть в видео в конце статьи.

Исходный код программы для Arduino

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
3 384 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *