Как собрать домашнего робота


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

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

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

Список деталей:

У меня используется шасси из комплекта я его допиливал руками, нижнюю пластину выпилил из фанеры и на алюминиевых уголках прикрепил мотор редукторы с колёсами, вот такими:

МОТОР РЕДУКТОР С КОЛЕСОМ

Драйвер двигателя L298N такой

Можно использовать и такой МОДУЛЬ ДРАЙВЕРА МОЩНОГО КОЛЛЕКТОРНОГО ДВИГАТЕЛЯ (L298) с небольшими изменениями скетча, так как на моем используется 6 пина, а на этом можно обойтись 4-мя.

Понижающий dc-dc преобразователь dfrobot DC-DC Power Module 25W для питания серв и периферии чтобы хватало тока.

Можно использовать и такой вместо него ПОНИЖАЮЩИЙ DC-DC ПРЕОБРАЗОВАТЕЛЬ
Как вариант можно запитать мощные сервы и от 5v L298N, я так делал когда не было понижающего стабилизатора напряжения.

Микроконтроллер Arduino Uno

ARDUINO UNO
Или
CRAFTDUINO

Sensor shield v5 второй этаж для arduino позволяет удобно подключить периферию.

Bluetooth модуль HC-RC04

Подойдет и такой BLUETOOTH МОДУЛЬ

Микро серва

SERVO SG-90

Ультразвуковой дальномер

HC-SR04

Инфракрасный дальномер SHARP GP2Y0A41SKOF измеряет расстояние от 4 до 30 сантиметров.

Опционально для манипулятора телефона две сервы mg995 c креплениями.

SERVO MG-995

По мелочи провода и крепеж, батарейки.

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

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

Для связи по блютус на телефоне я использую программу Bluetooth SPP ее можно свободно скачать в play.
Как всё это связать тоже объясняю в видео.

Основные команды управления:
W – вперёд
A – поворот на месте влево
D – поворот на месте вправо
S — назад
T — остановиться
F – автоматический режим по ультразвуковому ,инфракрасному дальномеру и энкодерам.

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

В основе лежит так сказать локатор – вращающиеся на микро серве дальномеры.

Инфракрасный дальномер SHARP GP2Y0A41SKOF, заявлено что измеряет на дистанцию от 4х до 30 сантиметров. В реальности же может измерять и дальше, но уже с большей погрешностью. При препятствии до 4х сантиметров дает искаженные данные, как будто препятствие находиться дальше. Сектор луча небольшой.

Из следующего графика можно примерно понять зависимость сигнала от расстояния.

Ультразвуковой дальномер HC-SR04, заявлено что измеряет на дистанции от 2 до 450 сантиметров. Сектор измерения большой в зависимости от стороны колеблется от 30 до 60 градусов. Вычисление расстояния линейно, время отраженного звука делится на скорость звука.

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

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

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

Энкодеры используются вот такие.


Механизм их действия прост, там установлен оптически датчик на просвет отверстий в диске. Повесил изменения датчика на прерывания arduino.

Примерно раз в 200 миллисекунд, вычисляется скорость колес. Соответственно если при движении скорость колес сильно падает, то считается что робот столкнулся с препятствием. После этого он отъезжает назад и разворачивается.

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

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

Несколько фоток робота с разных ракурсов.

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

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

Группа вконтакте данного проекта – vk.com/club23358759
скетч для ардуины с несколькими библиотеками
Bluetooth SPP

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


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

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение