Робот валли своими руками на ардуино

Добавил пользователь Владимир З.
Обновлено: 05.10.2024





Чтобы сделать робота в домашних условиях вам понадобится собственно сама плата микроконтроллера и ультразвуковой сенсор. Если сенсор зафиксирует препятствие, сервопривод позволит ему обогнуть препятствие. Сканируя пространство справа и слева, робот выберет наиболее предпочтительный путь для обхода препятствия.

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

Шаг 1: Необходимые материалы



Также вам понадобится одна большая металлическая скрепка и бусина (для заднего опорного колеса).

Для изготовления каркаса робота использован кусок плексигласа (оргстекла) 12х9,5 см. Можно сделать каркас из дерева или металла, или даже из компакт-дисков.

  • Дрель
  • Суперклей
  • Отвертка
  • Клеевой пистолет (опционально)

Для питания робота используется батарейка 9В (крона), она достаточно компактная и дешевая, но разрядится уже примерно через час. Возможно, вы захотите сделать питание от аккумулятора на 6 В (минимум) или 7 В (максимум). Аккумулятор мощнее батарейки, но и дороже и больше по габаритам.

Шаг 2: Делаем каркас робота



Положите всю электронику на плексиглас и маркером отметьте места, где нужно будет просверлить монтажные отверстия (фото 1).

На нижней стороне пластины плексигласа приклейте на суперклей электромоторы. Они должны быть параллельны друг другу, с помощью линейки-угольника проверьте их положение прежде чем клеить (фото 2). Затем приклейте на суперклей отсек для батарейки.

Можно также просверлить отверстия под провода электромоторов и питания.

Шаг 3: Монтируем электронику




Закрепите на каркасе плату контроллера и драйвер двигателей, используя стойки для печатных плат, винты и гайки. Миниатюрная макетная плата клеится на липкий слой (уже есть на нижней стороне) (фото 1).

Теперь делаем заднее опорное колесо из скрепки и бусины (фото 2). Концы проволоки закрепите на нижней стороне каркаса суперклеем или термоклеем.



На передней части каркаса приклейте на суперклей миниатюрный сервопривод. Рассмотрите на первом фото, как крепится плата ультразвукового датчика к сервоприводу с помощью маленького вала.
На втором фото показано, как выглядит завершенное соединение датчика и сервопривода.

Шаг 5: Схема подключений



Теперь приступаем к подключению электронных компонентов. Подключение компонентов происходит согласно схеме на рисунке 1.

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

Шаг 6: Код


Код, который приведен ниже, сделан с помощью Codebender.

Вставьте батарейку в отсек и нажмите на функциональную кнопку один раз, и робот начнет движение вперед. Для остановки движения нажмите на кнопку еще раз.

Если робот не двигается, может изменить контакты электромоторов (motorA1 и motorA2 или motorB1 и motorB2).

Шаг 7: Завершенный робот


Ваш самодельный робот, обходящий препятствия, на базе микроконтроллера Arduino готов.

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Нам кажется что многие из вас находятся под сильным впечатлением от быстро развивающихся технологий современного мира, одними из впечатляющих технологий современности являются двигатели от RYNO и самобалансирующиеся скутеры от Segway. Мы думаем, что многих из вас посещала мысль создать что либо подобное. Поэтому в данной статье мы рассмотрим создание DIY (самодельного, своими руками) самобалансирующегося робота на основе платы Arduino. Во многом принципы работы данного робота будут основаны на алгоритмах PID (PID - proportional, integral, derivative - пропорционально-интегрально-дифференцирующий (ПИД) регулятор), используемых для построения самобалансирующихся скутеров.

Внешний вид самобалансирующегося робота на Arduino Uno

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

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Приводной двигатель постоянного тока желтого цвета (Geared DC motor (Yellow coloured) ) – 2 шт.
  3. Модуль драйвера мотора L298N (L298N Motor Driver Module) (купить на AliExpress).
  4. Гироскоп MPU6050 (купить на AliExpress).
  5. Два колеса.
  6. 7.4V Li-ion Battery (литий-ионная батарея или литий-полимерная батарея) (купить на AliExpress).
  7. Соединительные провода.
  8. Напечатанный на 3D принтере скелет (остов) робота.

Микроконтроллер: в качестве управляющего микроконтроллера в данном проекте мы выбрали плату Arduino UNO потому что с ней просто работать. Вы можете также использовать платы Arduino Nano или Arduino mini, но мы все таки рекомендовали использовать бы Arduino UNO потому что ее можно программировать без использования внешнего аппаратного обеспечения.

Двигатели: конечно, лучшим выбором для построения самобалансирующегося робота были бы шаговые двигатели, но в целях упрощения проекта мы использовали приводные двигатели (gear motor) постоянного тока желтого цвета – они значительно проще и дешевле чем шаговые.

Драйвер мотора (Motor Driver): если вы, как и мы, выбрали приводные двигатели постоянного тока, то вы можете использовать модуль драйвера мотора L298N или даже L293D (с ним проект будет также работать отлично). Более подробно об управлении электродвигателем постоянного тока с помощью платы Arduino и драйвера мотора L293D можно прочитать в этой статье.

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

Акселерометр и гироскоп: наилучшим выбором в качестве акселерометра и гироскопа для нашего проекта будет модуль MPU6050 – на нашем сайте вы можете прочитать статью о его подключении к плате Arduino. Ни в коем случае не пытайтесь создать подобного робота с использованием обычного акселерометра, например, ADXL345 или подобного ему – это не будет работать. Более подробно объяснение этого фактора будет приведено в конце статьи.

Батарея: для проекта необходима батарея, которая по возможности будет максимально легкой и ее напряжение должно быть больше 5V чтобы мы могли запитать от нее плату Arduino непосредственно, без использования повышающего напряжения модуля. Идеальным выбором в данном случае будет 7.4V Li-polymer (литий-полимерная) батарея. Но в нашем распоряжении была только 7.4V литий-ионная батарея, поэтому мы ее и использовали при создании робота. Но помните о том, что литий-полимерная батарея в данном случае будет все таки лучше чем литий-ионная.

Шасси робота: еще один элемент робота, при создании которого неуместны компромиссы. Для изготовления шасси робота вы можете использовать листы картона, дерево, пластик и т.п. Но помните о том, что шасси должно быть достаточно прочным и не изгибаться когда робот пытается балансировать. Мы для изготовления шасси робота использовали 3D принтер, ссылки на необходимые файлы для него будут приведены далее в статье.

3D печать и сборка шасси робота

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

Компоненты данного шасси робота не имею нависающих структур, поэтому вы без особых проблем можете напечатать их на практически любом 3D принтере. Мы для этой цели использовали программное обеспечение Cura и 3D принтер Tevo Tarantula, установки для печати компонентов показаны на следующем рисунке.

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

Вам необходимо напечатать скелет робота и 4 компонента для крепления двигателей. Для сборки робота можно использовать 3 мм болты (шурупы). После сборки у вас должна получиться конструкция примерно следующего вида:

Конструкция робота после сборки

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

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

Альтернативная конструкция самобалансирующегося робота

Работа схемы

Схема самобалансирующегося робота на основе платы Arduino UNO представлена на следующем рисунке.

Схема самобалансирующегося робота на основе платы Arduino UNO

Как видите, схема достаточно проста и в ней вам всего лишь необходимо подключить гироскоп MPU6050 и драйвер мотора к плате Arduino, а также соединить двигатели с драйвером мотора. Схема запитывается от литий-ионной батареи на 7.4V.

Плата Arduino и модуль драйвер мотора L298N непосредственно запитываются через контакты Vin и 12V соответственно. Встроенный в плату Arduino регулятор напряжения преобразует входное напряжение 7.4V в напряжение 5V, с помощью которого и запитывается микроконтроллер ATmega на плате и гироскоп MPU6050. Электродвигатели постоянного тока могут запитываться от напряжения от 5V до 12V, в нашем случае они будут работать от напряжения 7.4V.

Распиновка подключения контактов гироскопа MPU6050 представлена в следующей таблице.

MPU6050 контакт Arduino
Vcc +5V
Ground Gnd
SCL A5
SDA A4
INT D2

Распиновка подключения контактов драйвера мотора L298N представлена в следующей таблице.

L298N контакт Arduino
IN1 D6
IN2 D9
IN3 D10
IN4 D11

Гироскоп MPU6050 взаимодействует с платой Arduino через интерфейс I2C, поэтому для его подключения мы использовали SPI контакты A4 и A5 платы Arduino. Двигатели постоянного тока управляются с помощью ШИМ (широтно-импульсная модуляция) контактов D6, D9, D10 и D11. ШИМ сигнал в данном случае необходим для управления скоростью вращения двигателей.

Программирование самобалансирующегося робота

Как мы уже видели, схема нашего проекта достаточно проста, но вся "магия" нашего проекта будет как раз заключаться в его программе для платы Arduino UNO. В программе мы с помощью гироскопа MPU6050 будем проверять наклоняется ли робот вперед или назад. Если робот будет наклоняться вперед, то нам необходимо вращать колеса в прямом направлении (прямо) для удержания баланса, а если он будет наклоняться назад, то нам необходимо будет вращать колеса в обратном направлении.

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

Для определения текущего положения робота в нашем проекте мы используем модуль MPU6050, который является 6-осевым акселерометром и гироскопом одновременно. Для того чтобы получить надежное значение позиции робота нам необходимо получать значения одновременно и от акселерометра, и от гироскопа поскольку значения от акселерометра обычно зашумлены, а значения от гироскопа имеют тенденцию смещаться (дрифтовать) с течением времени. То есть в программе мы будем комбинировать значения с контактов yaw, pitch и roll гироскопа, а использовать будем только значение с выхода yaw.

На первый взгляд задача создания подобного робота в домашних условиях звучит как невозможная, неправда ли? Но благодаря сообществу Arduino у нас в распоряжении уже есть готовая библиотека, способная выполнять вычисления по алгоритму PID, а также библиотека для работы с гироскопом MPU6050. Эти библиотеки разработаны авторами br3ttb и jrowberg соответственно. Перед началом написания программы вам необходимо их скачать по ниже приведенным ссылкам и добавить в папку с библиотеками Arduino на вашем компьютере.

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

Первым делом в программе мы должны подключить используемые библиотеки - I2C library, PID Library и MPU6050 Library (последние две мы как раз скачали).

Робот Валли на 3д-принтере + развёртки из бумаги

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

У Валли подвижные руки и голова, открывается передняя крышка. Гусеницы не вращаются, но они не приклеены. Ещё у WALL•E есть башмак и растущее растение.

Если у вас нет 3д-принтера, то игрушку можно склеить из бумаги, есть простая развёртка, с которой любой папа справится в течение часа часа.

Дальше я просто покажу как печатались детали на 3д-принтере и как я склеил робота Валли. Печатал на самодельном принтере, пластиком АБС зелёного и красного цвета, просто не было других цветов. Хотел покрасить робота после сборки, но дочь попросила оставить робота зелёным.

image

image

Робот Валли на 3д-принтере + развёртки из бумаги

Робот Валли на 3д-принтере + развёртки из бумаги

Робот Валли на 3д-принтере + развёртки из бумаги

Робот Валли на 3д-принтере + развёртки из бумаги

Робот Валли на 3д-принтере + развёртки из бумаги

Робот Валли на 3д-принтере + развёртки из бумаги

Робот Валли на 3д-принтере + развёртки из бумаги

Робот Валли на 3д-принтере + развёртки из бумаги

Робот Валли на 3д-принтере + развёртки из бумаги

КОММЕНТАРИИ

Дмитрий,
хорошая работа.
Отец и ребенок довольны!

Карета из ДВП своими руками

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

Самодельный браслет

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

ЧУДО психоанализа: заработать на модных профессиях не прочь даже бывший священник

ЧУДО психоанализа: заработать на модных профессиях не прочь даже бывший священник

Миролюбивые чистюли, а не кровожадные монстры: мифы и заблуждения о викингах

Авария дня. В Томской области в ДТП погибла пассажирка китайского хэтчбека

Авария дня. В Томской области в ДТП погибла пассажирка китайского хэтчбека

Грозившийся спрыгнуть с Крымского моста мужчина оказался мигрантом

Грозившийся спрыгнуть с Крымского моста мужчина оказался мигрантом

После государственного переворота жители Буркина-Фасо вышли на улицы с российскими флагами

После государственного переворота жители Буркина-Фасо вышли на улицы с российскими флагами

С такими лучше не связываться

Черный рынок, кошачий “спецназ” и медицина: необычные факты о блокадном Ленинграде

Черный рынок, кошачий “спецназ” и медицина: необычные факты о блокадном Ленинграде

В Ярославле автобус развернуло и он снёс тросовый барьер

В Ярославле автобус развернуло и он снёс тросовый барьер

Лабрадор: компаньон, друг, защитник

Скрытая и явная угроза ежедневных тренировок

Сильные в своей слабости, слабые в своей силе: о женщинах в армиях мира

Сильные в своей слабости, слабые в своей силе: о женщинах в армиях мира

Ужасные последствия интимного пирсинга (3 фото)

В Самаре дети мигрантов толпой избили школьницу

Пушистый помощник

55-летний советский ЗИЛ из гаража президента Монголии уйдёт с молотка в Париже

55-летний советский ЗИЛ из гаража президента Монголии уйдёт с молотка в Париже

Как сделать уличный холодильник из подручных материалов

Как сделать уличный холодильник из подручных материалов

Жестокое ограбление башкирского кафе попало на видео

Жестокое ограбление башкирского кафе попало на видео

Босс будет доволен

Хороший анестезиолог

Вот это благодарность

Ferrari 308 GTSi 1982 года — действительно особенная находка в сарае

Ferrari 308 GTSi 1982 года — действительно особенная находка в сарае

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

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

Хорошо звучит

В Краснодаре мужиков возмутили тиктокеры в платье

Зажигалка неожиданно взорвалась в руках курильщика

Зажигалка неожиданно взорвалась в руках курильщика

Короткий разговор с мошенником, притворяющимся полицейским

Короткий разговор с мошенником, притворяющимся полицейским

Московская старуха Шапокляк

Вот это драма

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

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

35 интересных снимков из кладовой истории

Необычная новогодняя ёлка

Когда выгорание подкралось незаметно: с юмором о модном нынче термине

Когда выгорание подкралось незаметно: с юмором о модном нынче термине

Грязевые развлечения

Что находится внутри сумки кенгуру

Прыжки на скакалке с неожиданным финалом

20 потрясающих фотографий с первых зимних Олимпийских игр, 1924 год

20 потрясающих фотографий с первых зимних Олимпийских игр, 1924 год

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

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

Правильная постановка света творит чудеса

Кулинарные хроники Африки: место, где едят всё

7 главных достижений гениального конструктора Сергея Королева

7 главных достижений гениального конструктора Сергея Королева

Утиные истории

Очень редкий и броский кабриолет Mercedes-Benz CLK DTM AMG

Очень редкий и броский кабриолет Mercedes-Benz CLK DTM AMG

В Тимашевске инвалид сам почистил снег, чтобы проехать

В Тимашевске инвалид сам почистил снег, чтобы проехать

Коала издает странные звуки, когда её чешут

Ирландец привел своего мертвого дядю на почту за пенсией

Ирландец привел своего мертвого дядю на почту за пенсией

Боль и разорение: как обстоят дела у начинающих инвесторов

Боль и разорение: как обстоят дела у начинающих инвесторов

В сети появилось видео собаки, привязанной цепью к грузовику, взволновавшее зоозащитников

В сети появилось видео собаки, привязанной цепью к грузовику, взволновавшее зоозащитников

Когда заиграла песня из молодости

Возвращение 90-х: в Калмыкии похищенного московского бизнесмена подвергли пыткам

Возвращение 90-х: в Калмыкии похищенного московского бизнесмена подвергли пыткам

Выдавил прыщ и умер: печальная и мистическая судьба композитора Скрябина

Выдавил прыщ и умер: печальная и мистическая судьба композитора Скрябина

Рождённый не плавать: зачем в США строили корабли, которые никогда не спускали на воду

Рождённый не плавать: зачем в США строили корабли, которые никогда не спускали на воду

Читайте также: