- Общее описание робота
- Общее описание проекта
- Автомобильный комплект умного робота на базе Arduino LAFVIN UNO R3
- Makeblock mBot Robot Kit
- UCTRONICS Smart Robot Автомобильный комплект Arduino
- Makeblock mBot Ranger Transformable STEM Обучающий робот-набор
- Базовый робототехнический набор Makeblock Ultimate Robot Kit V2.0 90040
- Роботизированная рука с DIY 5-осевым роботизированным рычагом, для Arduino UNO R3
- Robolink Rokit Smart (12 в 1) Arduino
- Обучающий робот автомобиль Emakefun Hummer Bot для Arduino, с дистанционным управлением
- OSOYOO Робот Стартовый комплект для автомобиля Arduino UNO R3
- Дальнейшее развитие
- Питание
- Компоненты
- Распиновка
- Программа управления
- Нюансы педагогики
- Программное обеспечение
- Подключаем Bluetooth HC-05
- Опыт создания первого робота на Ардуино (робот-«охотник»)
- Отдельные блоки
- Сборка
- Алгоритм управления движением
- Структура робота
Общее описание робота
Вначале несколько слов о самом роботе ( идея
). Собирать что-то типовое на старте не очень хотелось. В то же время, набор компонентов был довольно стандартным — шасси, двигатели, ультразвуковой датчик, датчик линии, светодиоды, пищалка. Вначале из этого «супового набора» был придуман робот, который охраняет свою территорию. Он едет на нарушителя, который пересек линию круга, а потом возвращается в центр. Однако в этом варианте была нужна прочерченная линия, плюс лишняя математика, чтобы постоянно оставаться в круге.
Поэтому после некоторых обдумываний я несколько изменил идею и решил делать робота-«охотника». На старте он поворачивается вокруг своей оси, выбирая поблизости цель (человека). Если «жертва» обнаружена, «охотник» включает мигалку и сирену, и начинает ехать на нее. Когда человек отходит/отбегает, робот выбирает новую цель и преследует ее, и так далее. Такому роботу не нужен ограниченный круг, и он может работать на открытой территории.
Общее описание проекта
В мире разработки программного обеспечения это называют еще «требования к системе».
Задумка проекта была следующей. Первый вариант машины-робота под названием RoboCar4W должен выполнять незамысловатые действия:
- двигаться вперед, назад, выполнять повороты
- измерять расстояние до препятствий
- уметь автоматически объезжать препятствия находящиеся впереди.
Второй вариант машины должен управляться вручную по bluetooth с Android телефона.
Чтобы вам лучше работалось вот весь финальный проект RoboCar4W в сборе (тут без блютуза).

Вот видео ходовых испытаний.
На первом видео RoboCar4W ездит в автоматическом режиме с объездом препятствий на двух разных версиях «прошивки», т.е. скетча, поэтому, если кто самый зоркий и заметил, что поведение робота в разных эпизодах немного отличается.

На втором видео RoboCar4W передвигается при помощи команд, передаваемых «водителем» по Bluetooth с мобильного телефона под Android. На телефоне установлена программа «Bluetooth RC Car». Причем, если близко впереди оказывается препятствие, то робот останавливается, т.е. протаранить что-нибудь не получится (однако есть «секретная» кнопка, которая отключает безопасный режим).

На третьем видео RoboCar4W показывает заранее запрограммированную демо-программу движения с поворотами. Демо-программа активируется по команде с того же мобильного телефона под Android. Робот просто едет некоторое время и делает повороты.

Начинать работу с Arduino, как и с любой другой платформой программной или аппаратной, всегда интереснее с какого-нибудь реального проекта. Программисты при этом пишут код выводящий «Hello, world», ардуинисты моргают светодиодом. И все радуются как дети.
Я же решил начать с продвинутого проекта, в том числе с тайной надеждой оторвать молодое поколение от Counter-Strike (не получилось).
Как можно догадаться из названия RoboCar4W, первым проектом стал робот-машина о четырех колесах. Начиная работу я уже имел опыт программирования, умел когда-то давно паять, но совершенно не знал даже распиновки Arduino и документацию совершенно не читал. Все премудрости изучал по ходу пьесы и Гугл в помощь.
Поскольку сам проект принципиально не нов, подобных описаний в сети достаточно, все компоненты известны, то никаких неожиданностей не предполагалось. Поэтому задумка была сформулирована в самых общих чертах и главной целью являлось погружение в «мир вещей» с помощью Arduino, как платформы для быстрого прототипирования. В этом опусе возможно кто-то узнает себя в самом начале пути.
Всё «железо» приобреталось на ebay, и по своему опыту хочу сказать, что проще приобрести сразу стартер кит (ищите по словам Arduino Starter Kit), а не собирать подетально. Да и приедет все сразу вместе. Решено было не мелочиться, купить нормальное шасси, нормальные колеса, нормальные моторы, чтоб было «дорохобохато».
Главный секрет успешных покупок на eBay — покупать у продавцов с высоким рейтингом и при этом внимательно читать описание товара. Об этом есть много статей в интернете.
Какую плату семейства Arduino выбрать?
Я взял Arduino UNO, под нее много проектов с описаниями. Но сейчас бы взял Arduino Mega 2560, у нее больше цифровых и аналогов выводов и полная совместимость по проектам с UNO.

Для начала были куплены 3 сервомотора Tower pro 9g (160 руб. каждый) и доска бальзы (из неё вроде делают модели самолетов). Не берите бальзу для такого! Я, конечно, этого не знал, поэтому пытался сделать что-то из нее, благо материал был мягкий и легко резался канцелярским ножом. Но обработка бальзы это ад, мягкость это и плюс, и огромный минус. Намучившись с этим материалом (знатоки не ругайтесь, бальза хороша для других задач), было принято решение печатать детали на 3D принтере (можно было резать и оргстекло, но очень хотелось попробовать 3D печать). Детали моделились в SketchUp, и экспортировались в .stl с помощью расширения.

В итоге получилось следующее:

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






В качестве прообраза был взят проект uArm
и meArm
. В первом использовались сервы u-servo us-d150a, а второй я увидел, когда уже смоделил свои детали, поэтому вышел некий гибрид .




Оказалось, что я превысил лимит по блокам в посте, поэтому через пару минут будет добавлена вторая часть с завершением сборки, рассказом про софт и прошивку, видео-примерами и общим итогом. Ссылку на вторую часть я добавлю сюда (надеюсь)
UPD. Часть 2!!!

p.s. баянометр ругается на господина и лигу инженеров
1) Робот-черепашка v3

Программируемый многофункциональный робот от Keyestudio V3.0 для Arduino. Умеет выполнять множество команд. Комплект для сборки отлично подойдет начинающим любителям робототехники и программирования. Ссылка
на источник.
Интересный набор для сборки фургона-автодома с множеством различных функций. ссылка
3) Робот с клешней
Набор для сборки умного робота с ‘рукой’. Умеет выполнять различные команды, брать/класть предметы и тд. Ссылка
4) Механический робот
Еще одна версия робота с ‘клешней’ для самостоятельной сборки и программирования. Ссылка
на источник
Комплект для сборки собственного робота-танка на гусеницах. Умеет выполнять множество команд. ссылка
6) 4WD Mecanum
Робот с интересными колесами, которые могут двигаться в любом направлении. Робот сборный, программирование на Microbit V2. ссылка
7) Самобалансирующийся робот
Электронный комплект «сделай сам» — робот балансир для взрослых и детей. Ссылка
на источник
8) Робот с камерой
Робот-машинка Pi 4B для сборки и программирования. Имеет камеру и функцию слежения/наблюдения, а также множество других возможностей. Ссылка

Необычный конструктор для программирования с множеством датчиков и солнечной панелью. ссылка
Забавный робот с ковшом и умеющим рисовать. ссылка
11) Игровая приставка
Геймпад Keyestudio ATMEGA32U4 с OLED-экраном, стартовый набор для Arduino. Ссылка
Генератор электричества с солнечной панелью, которая поворачивается вслед за солнцем и поможет зарядить ваши гаджеты в трудную минуту. Ссылка

Веселый робот-лягушка с сервоприводами для сборки. ссылка

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

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

Роботизированный паук с пультом управления. Ссылка

Робот-вездеход ELEGOO Conqueror с UNO R3. ссылка

Самый серьезный аппарат в нашей сегодняшней подборке. R OSMASTER X1 — это обучающий робот с приводом на 4 колеса, разработанный на основе операционной системы ROS robot. Он использует плату серии Jetson и Raspberry Pi 4B в качестве основного контроллера и оснащен высокопроизводительной аппаратной конфигурацией, такой как лидар и камера глубины, которые могут осуществлять управление роботом, дистанционную связь, картографирование и навигацию, отслеживание обхода препятствий, автопилот, распознавание особенностей человеческого тела и другие функции. Ссылка
на источник.
Автомобильный комплект умного робота на базе Arduino LAFVIN UNO R3
Первым в нашем списке стоит автомобильный комплект для умного робота LAFVIN UNO R3. Третья версия роботизированного автомобильного комплекта, совместимого с Arduino, предназначена специально для начинающих и профессионалов, увлеченных изучением электроники.

Он также поставляется с простым учебным пособием по его сборке. Этот учебный комплект STEM предназначен для обучения программированию и робототехнике.
Этот автомобиль представляет собой интегрированное решение для обучения робототехнике и поставляется с полным комплектом деталей из 24 модулей. Он включает в себя предотвращение препятствий, инфракрасный пульт дистанционного управления, модуль отслеживания, а также мобильный контроль (как для Android, так и для iOS)
Приложение позволяет управлять комплектом с помощью мобильного телефона. Модуль HC-08 прост в использовании, а с компакт-диском с инструкцией вам даже предоставляется руководство по его использованию.
Его легко собрать, а также интерфейс модуля был изменен с портом XH2.54. Это делает сборку намного проще и удобнее, что также снижает вероятность любых ошибок
Учебный компакт-диск поставляется с видео высокой четкости, которые подробно объясняют процесс рендеринга и сборки автомобиля-робота. Он также обучает вас программированию, необходимому для сборки автомобиля.
Даже аккумулятор в автомобиле легко перезаряжается. Минимальный дизайн и использование, это может быть отличным подарком для начинающих учеников в возрасте 12 лет и старше.
Возрастные группы:
12+
Что нам понравилось в наборе:
Отличный учебный робот для детей от 12 лет и старше.
Поставляется с подробным руководством и учебным CD
24 различных компонентов, которые могут быть легко собраны
Отличные функции, такие как интеллектуальное обход препятствий и отслеживание линий
Управляется мобильным приложением
Аккумуляторная батарея в комплекте
Что нам не понравилось в этом:
Makeblock mBot Robot Kit

Базовые и начальные программные модули помогают улучшить творческие и логические навыки ребенка. Простота сборки робота которая занимает около 15 минут.
Совместимые возрастные группы:
10+
Что нам понравилось:
Программирование начального уровня для детей
Приложение также может быть использовано для программирования робота.
Программирование можно выполнять с компьютера.
Робот может избегать препятствий, следовать по одной линии и многое другое.
Робот работает от 4 батареек ААА или 3,7 В литиевой батареи (без подзарядки). Пульт дистанционного управления требует батарейки CR2025
Что нам не понравилось в этом:
Нет данных о сроке гарантии
UCTRONICS Smart Robot Автомобильный комплект Arduino
Следующим в нашем списке стоит UCTRONICS Smart Robot Car. Это также учебный программируемый и самосборный роботизированный комплект STEM, на UNO R3 Arduino.
Хотя это набор для начинающих, он может потребовать базовых знаний об электронике, если вы хотите собрать его. Он поставляется с базовой платой UNO R3, как было упомянуто выше, а также с ультразвуковым датчиком HC-SR04, щитком привода двигателя L293D и микро серводвигателем 9G.
Все эти модули модифицированы с помощью порта XH2.54, поэтому монтаж и сборка очень просты. Это сводит ошибки установки датчика к минимуму.

Автомобиль поставляется с интересными функциями, такими как автоматическое обнаружение и избегание препятствий. Ультразвуковой датчик помогает в этом, посылая волны, чтобы вычислить расстояние как летучая мышь. Существует также учебный компакт-диск, который поставляется с комплектом, который помогает в строительстве.
Он также поставляется с необходимым программным кодом, который необходим для программирования.
Совместимые возрастные группы
: 8 лет и старше
Что нам понравилось:
Легко построить с минимальными ошибками, поскольку модули обновлены до портов XH2.54
Автоматическое обнаружение и устранение препятствий с ультра-датчиком HC-SR04
То, что нам не понравилось:
Необходимо повысить надежность продукта
Makeblock mBot Ranger Transformable STEM Обучающий робот-набор
Вы можете запрограммировать его с помощью разнообразных функций, которые делают этот робот забавным, чтобы научиться программированию детей. Робот может быть собран всего за пару часов с помощью простых в сборке строительных блоков. ( Хотя на упаковке написано, что ее можно построить за 45 минут, постройка в первый раз займет несколько часов)

Батареи для робота не включены в комплект, и вам понадобится 6 батареек АА, чтобы этот робот заработал.
Совместимые возрастные группы
: 10+ лет
Что нам понравилось:
Слегка продвинутый робот для детей
3 в одном. Может быть преобразован в другую форму, заменив несколько блоков
То, что нам не понравилось:
Не имеет собственного интерфейса. Вам нужно будет использовать Arduino Mega 2560 IDE
Базовый робототехнический набор Makeblock Ultimate Robot Kit V2.0 90040
Благодаря резьбовому щелевому дизайну и алюминиевым механическим деталям из анодированного 6061, он не только прост в сборке, но и прочен. 3 мощных двигателя энкодера управляют роботом так же легко и плавно.

Этот робот — отличная игрушка, чтобы научить своих детей основам электроники, программирования на Python и Arduino.
Возрастные группы
: 12+ лет
Что нам понравилось:
Роботизированный комплект STEM среднего уровня
Может быть построено 10 различных моделей роботов.
Прочная конструкция, выполненная из анодированного алюминия 6061 и имеющая резьбовую прорезь
Использует плату MegaPi (немного более продвинутую, чем плата Me Auriga)
Может кодироваться и управляться с помощью мобильного приложения и программного обеспечения для ПК.
Имеет связь Bluetooth
Что нам не понравилось:
Аккумуляторы не включены в стоимость
Роботизированная рука с DIY 5-осевым роботизированным рычагом, для Arduino UNO R3
Комплект роботизированной руки Adeept Arduino — один из самых доступных наборов роботов в этом списке. Этот комплект манипулятора робота предназначен для работы с платой Arduino UNI R3
Набор, созданный для любителей роботов, а также отлично подходит для начинающих, которые только начинают изучать робототехнику. Комплект 5-осевой роботизированной руки поставляется с подробным руководством, которое поможет вам построить и настроить робота.
В нем также есть много интересных подпрограмм кода Arduino, которые вы можете выполнить для выполнения некоторых интересных функций. Он имеет широкий спектр интересных функций, таких как функции самообучения, рисования и имитации.

Роботизированная рука Adeept поставляется с 2 вариантами управления. Вы можете управлять вручную с помощью ручки потенциометра, которая имеется на плате, а также с помощью пульта дистанционного управления. Дистанционное управление осуществляется через компьютер с использованием графического средства управления на компьютере.
Есть даже небольшой дисплей, чтобы контролировать функциональность робота. И Arduino UNO R3, и плата драйверов интегрированы в одну плату для лучшей стабильности. ( Кроме того, это облегчает работу новичкам).
Он поставляется со всеми необходимыми гаечными ключами и отвертками, которые вам понадобятся для его сборки.
Возрастные группы:
12 +
Что нам нам понравилось:
Простой и удобный для начинающих доступный роботизированный манипулятор
Рука робота может двигаться по 5 осям
Руководство по разработке также поставляется с интересными кодами Arduino для выполнения различных операций.
Ручное управление с помощью ручки потенциометра на плате
Построение программного обеспечения позволяет удаленное управление
Повышенная производительность и стабильность благодаря тому, что плата драйверов и Arduino UNO R3 интегрированы в одну печатную плату
Что нам не понравилось:
Только один робот без движения
Деликатные детали, с которыми нужно обращаться осторожно
Robolink Rokit Smart (12 в 1) Arduino
Следующим в нашем списке является набор для роботов Arduino, который подходит для начинающих, Robolink Rokit Smart. Robolink — это основанный в Калифорнии учебный центр робототехники, где Rokit Smart использует для обучения робота Robolink. Этот набор роботов был включен в список «Топ-10 известных роботов на CES».
Этот стартовый программный комплект имеет 11 различных программируемых режимов. Эти режимы включают робота, следующего за линией, робота для обнаружения краев и предотвращения падения, робота с резиновой лентой, робота с интерактивной игрой, робота-обезьяны и т.д.

Модуль программирования легко работает, чтобы улучшить базу знаний вашего ребенка по программированию. Сборка робота также очень проста с простой проводкой и без необходимости пайки.
Проверенный робот STEM, Rokit Smart — отличное дополнение не только к школе, но и к учебной программе для детей, обучающихся на дому.
Возрастные группы
: 9 лет и старше
Что нам понравилось:
Отличный набор для роботов, который был включен в список лучших наборов роботов на CES 2016 на CES
Легко построить без пайки
Поставляется со всем необходимым для сборки, как отвертки и т. Д.,
Может быть построен в 11 различных формах
Имеет учебный и строительный материал на компакт-диске, который поставляется с роботом.
То, что нам не понравилось:
Батареи не включены в комплектацию
Необходимо улучшить качество деталей
Обучающий робот автомобиль Emakefun Hummer Bot для Arduino, с дистанционным управлением
Робот поставляется с простой сборкой со стандартным интерфейсом PH2.0. Это упрощает написание кода для робота, а также вам не нужна сложная пайка проводов для сборки этого робота. Существует также учебник по 3D сборке, который поставляется вместе с упаковкой, которая помогает правильно собрать робота.

Он может быть запрограммирован не только с помощью программирования Arduino, но также поддерживает смешанное программирование, а также программирование с нуля, что делает его отличным упражнением для энтузиастов Arduino и электроники.
После сборки робот может выполнять широкий спектр функций благодаря многочисленным датчикам и действительно классной функции освещения (RGB). Им можно управлять с помощью приложения на мобильном телефоне, которое можно загрузить из iOS или Android Play Store.
Он может реагировать на голосовое управление, имеет гравитационный контроль, может ездить по нарисованной линии, может управляться дистанционно и имеет модуль PSD & BLE (Bluetooth Control), избегает препятствий, Отслеживание света классная функция, при которой робот будет отслеживать свет, брошенный на пол или рядом с ним, и направляться к нему.
Крепкий в своей конструкции, робот поставляется с устойчивыми 5-миллиметровыми акриловыми пластинами вместо тонких и хрупких 3-миллиметровых акриловых пластин. Для работы робота требуется литий-металлическая батарея, которая входит в комплект поставки.
Возрастные группы:
10+
Что нам понравилось в роботе
Много задач для программирования. Он поддерживает не только программирование Arduino, но также программирование Scratch и смешанное программирование.
Крутые функции, такие как предотвращение препятствий, инфракрасное отслеживание, голосовое управление, Bluetooth-контроль, слежение за мной, отслеживание света, прогулка по линии и т.д.
Дистанционное управление мобильными телефонами через WiFi
Прочная конструкция с 5 мм акриловыми пластинами
Поставляется с батарейками в комплекте
То, что нам не понравилось в этом
Некоторые небольшие проблемы с производительностью
OSOYOO Робот Стартовый комплект для автомобиля Arduino UNO R3
Наконец, в нашем списке есть автомобильный комплект для роботов OSOYOO, созданный на базе Arduino UNO R3, которым можно управлять из приложений Android и iOS. Самое приятное в этом наборе — это то, что он высокого качества, поставляется с набором функций и является одной из самых доступных моделей в списке.
Этот робот поставляется с широким спектром дополнительных функций, таких как автоматическое вождение под управлением WiFi, имитация вождения, и вы также можете превратить его в боевого бота (для борьбы с другими подобными роботами).

Робот имеет много функций — отслеживание линии, он может обнаруживать препятствия и избегать столкновений, движения объекта и т. д., Легко программируемый новичками, комплект поставляется с подробным руководством. С этим роботом вы познакомитесь с основами Arduino, чтобы научиться создавать и развивать своего собственного бота.
Этот набор станет отличным подарком для детей и подростков, начинающих изучать программирование. Он научит детей основам программирования, кодирования, робототехники и электроники.
В комплект поставки входят все предметы первой необходимости, необходимые для построения различных моделей робота. Он также включает в себя две 9-вольтные литий-ионные аккумуляторы с зарядным устройством. Инфракрасный пульт также входит в комплект поставки.
Возрастные группы
: от 10 лет.
Что нам понравилось:
Один из самых доступных и простой в сборке высококачественный комплект для роботов своими руками на основе платы Arduino UNO R3
Набор, который подходит для начинающих и профессиональных энтузиастов электроники
Поставляется с пошаговым руководством
Может выполнять гораздо больше функций, таких как автоматическое вождение, имитация вождения, боевой бот, отслеживание линий, обнаружение препятствий, отслеживание движения объекта и т. Д.,
ИК-контроль (через пульт) и WiFi-контроль (через мобильный)
Две перезаряжаемые батарейки входят в комплект вместе с зарядным устройством
То, что нам не понравилось:
Дальнейшее развитие
И в конце, собственно, герои этой статьи (видео по клику):

Спасибо за внимание!
Питание
Это второй очень важный момент. От питания зависит очень многое. Например, серво-мотор при повороте вала на заданный угол начинает потреблять большой ток. При этом если серво подключен по питанию на 5 В Arduino, то происходит «просадка» по напряжению и вся остальная схема начинает глючить, а Arduino даже может перезагружаться при этом.
В любом случае, если в поделке используете моторы, то Motor Drive Shield необходим (или подобная ему схема).
Итак, имеем 4 мотора постоянного тока (DC), сервопривод, саму плату Arduino и несколько датчиков. Моторы самые прожорливые, а вот датчики могут успешно запитываться с разъемов самой платы Arduino, поэтому с ними все просто. Для удобства я свел всё хозяйство в одну таблицу.
DC/DC преобразователя напряжения у меня не было в наличии. Крона 9V оказался не очень хорошим источником питания, просто у меня он уже был.
А вот от использования Li-ion аккумуляторов большой емкости я отказался. Во-первых, из-за высокой стоимости, во-вторых в китайских интернет-шопах легко нарваться на подделку. Точнее не «легко», а «всегда». Кроме этого Li-ion требует особого обращения, и он не безопасен.
Итак, как видим из таблицы, нам требуется 3 независимых источника питания:
- Для платы Arduino и датчиков.
- Для сервомотора.
- Для 4-х DC моторов.
Где ж столько набрать? Саму плату Arduino в любом случае надо питать от отдельного источника, т.к. при «проседании» напряжения, например от включения моторов, плата может перезагружаться или просто глючить. Здесь применяем аккумулятор форм-фактора «Крона 9В», причем разъем который будет подключаться к Arduino должен быть с «плюсом в центре».
Для сервомотора и 4-х DC моторов можно обойтись одним источником питания. Проблема только в том, что сервомотор рассчитан на напряжение 5-6В (максимум 7.2В) и ток 100 — 300мA (пиковое), а DC моторам требуется 6 — 8В (максимум 12В) и ток 250мА.
Для решения проблемы существуют DC-DC преобразователи, но у меня таких не оказалось. В итоге я применил свою «фирменную» схему соединения (безо всяких понижающих электронных схем, только экологически чистые напряжение и ток!): подключил 8 шт. аккумуляторов на 1.2V последовательно и сделал отводы в нужных местах, как показано на схеме.

6В пошло на сервомотор, а 9.6 на DC моторы. Понятно, что аккумуляторы 1—5 будут испытывать повышенную нагрузку.
Для управления серво и DC моторами использовал 4-х канальный Motor Drive Shield на базе микросхемы L293D.
Компоненты
Первоначально в состав машины входил сервопривод, который поворачивал ультразвуковой измеритель расстояния на определенный угол для измерений по трем направлениям. Но в ходе испытаний из-за неосторожного обращения сервопривод сгорел, поэтому теперь датчик расстояния просто жестко закреплен впереди корпуса.
Нет худа без добра, зато скетч стал немного проще.
На будущее, сервопривод покупайте самый простой и дешевый, особая мощность, скорость и точность поворота на заданный угол не нужны, а вывести серво из строя довольно легко, как оказалось. Вполне подойдет SG90 стоимостью $2.
Итак составные части проекта RoboCar4W, описание на английском дается для облегчения поиска на ebay и ему подобных:
- Arduino UNO R3
- Готовое шасси 4 Wheel Drive Mobile Robot Platform Smart Car Chassis Arduino Compatible
- Моторы постоянного тока (DC) с вращением в обе стороны — 4 шт.
- Колеса — 4 шт.
- Плата для управления 4-мя DC моторами Motor Drive Shield L293D
- Ультразвуковой измеритель расстояния HC-SR04 Ultrasonic Module Distance Measuring Sensor
- Аккумуляторы Ni-MH 1.2 В — 8 шт.
- Пластиковый бокс держатель для батареек, Battery Box holder 4 AA Batteries — 2 шт.
- Аккумулятор типа «Крона» 8.4 В — 1 шт.
- Опционально тумблер — выключатель питания
Шасси, DC моторы и колеса приобретались сразу в комплекте и даже с инструкцией по сборке.
Распиновка
Аналоговые входы могут использоваться как цифровые выводы портов ввода/вывода. Выводы Arduino, соответствующие аналоговым входам, имеют номера от 14 до 19. Это относится только к выводам Arduino, а не к физическим номерам выводов микроконтроллера Atmega.
Рисовать не обязательно, можно просто свести все в таблицу. У меня получилось так.

Пины D4, D7, D8, D12 будут заняты, если используются любые DC моторы или шаговые.
Пины D9 (Servo #1 control), D10 (Servo #2 control) будут заняты, только если используются сервомоторы.
Сама по себе плата для управления моторами Motor Drive Shield L293D пины Arduino не занимает.
Пины питания 3.3 В, 5 В и «земля» дублируются на Motor Drive Shield в достаточном количестве. Поэтому об их нехватке не стоит беспокоиться.
Если все-таки хотите красиво нарисовать, то бесплатная программа Fritzing вам в помощь.
Программа управления
Расписывать детально код я смысла не вижу, кому нужно — ссылка в конце статьи, там всё достаточно читабельно. А вот общую структуру было бы неплохо объяснить.
Первое, что пришлось осмыслить: робот — это устройство реального времени. Точнее, вспомнить, потому что и раньше, и сейчас все равно занимаюсь электроникой. Значит, сразу забываем про вызов delay()
, который очень любят использовать в скетчах-примерах, и который просто «замораживает» программу на указанный промежуток времени. Вместо этого, как советуют опытные люди, вводим таймеры на каждый блок. Прошел требуемый промежуток — выполнили действие (увеличили яркость светодиода, включили двигатель и так далее).
Таймеры могут быть взаимосвязаны. Так, например, пищалка работает синхронно с мигалкой. Это чуть упрощает программу.
Естественно, всё разбиваем на отдельные функции (мигалка, звук, поворот, движение вперед и так далее). Если так не делать, то потом уже не разобраться, что откуда и куда.
Нюансы педагогики
Все, что было описано выше, я делал в свободное время по вечерам. В неспешном режиме я потратил на робота где-то недели три. На этом можно было бы и завершиться, но я еще обещал вам рассказать о работе с ребенком. Что выполнимо в таком возрасте?
Работа по инструкции
Каждую деталь мы сначала проверяли отдельно — светодиоды, пищалка, моторы, датчики и т. д. Есть большое количество готовых примеров — какие-то прямо в среде разработки, другие можно найти в интернете. Это, несомненно, радует. Берем код, подключаем деталь, убеждаемся, что работает, далее уже начинаем изменять под свою задачу. Подключения по схеме и под некоторым моим контролем ребенок делает сам. Это хорошо. Работать четко по инструкции тоже надо уметь.
Порядок работы («от частного к общему»)
Сверление, резьбы, винты, гайки, пайка и запах канифоли — куда же без этого. Ребенок получил базовый скилл «Работа с паяльником» — удалось спаять несколько соединений (я чуть-чуть помогал, не скрою). Не забывайте про объяснение техники безопасности.
Работа на компьютере
Программу для робота писал я, но каких-то попутных результатов все-таки удалось достичь.
Первое: английский. В школе его только-только начали, поэтому мы «со скрипом» разбирали, что такое pishalka, migalka, yarkost и прочий транслит. Поняли хотя бы это. Я осознанно не стал использовать родные английские слова, так как до этого уровня мы еще не дошли.
Второе: эффективная работа. Учили горячие комбинации клавиш, как быстро выполнять типовые операции. Периодически, когда писали программу, мы менялись с сыном местами, и я говорил, что нужно сделать (замену, поиск и т.д.). Приходилось повторять снова и снова: «выдели двойным кликом», «зажми Shift», «зажми Ctrl» и так далее. Процесс обучения здесь не быстрый, но, я думаю, навыки постепенно отложатся «в подкорку».
Как видите, у нас все еще только-только начинается. Навыки и знания будем оттачивать и дальше, в жизни пригодятся.
Программное обеспечение
Примечание. Каждый раз перед загрузкой программы в Arduino, убедитесь, что модуль Bluetooth не подключен к Arduino. Это вызовет проблемы заливки скетча. Просто отсоедините питание от Bluetooth модуля или провода, соединяющие Arduino и RX, TX контакты модуля.
В начале скетча измените номера моторов в строках типа:
AF_DCMotor motor(…);
Если заменить строку
byte debug = 0;
byte debug = 10;
то включится режим отладки.
В режиме отладки робот RoboCar4W реально ездить или крутить колесами не будет. Вместо этого активируйте монитор последовательного порта и там увидите как он «ездит» виртуально. Вместо реальной езды вперед в монитор последовательного порта будет писаться строка «Forward», вместо заднего хода с поворотом влево — «Turn Back L(eft)» и т.д. Датчик ультразвукового измерения расстояния тоже ничего не делает, вместо этого расстояния до препятствий генерируются программно и случайно.
Этот режим отладки удобен, если вы меняете алгоритм движения и вместо того, чтобы ловить машинку по комнате, просто проверяете всё на «холостом» ходу.
Программа для Adnroid Bluetooth RC Car
.
Ну вот и все! Счастливой дороги!

Подключаем Bluetooth HC-05
Как видим из даташита основные пины «голого» HC-05:
- TX (pin 1) передача
- RX (pin 2) прием
- 3,3V (pin 12) питание 3.3В
- GND (pin 13) земля
- PIO8 (pin 31) индикатор режима
- PIO9 (pin 32) статус соединения, если соединение установлено, то на выходе будет высокий уровень
- PIO11 (pin 34) для включения режима AT-команд
Наш модуль припаян к плате Breakout/Base Board, где уже есть делитель напряжения, поэтому диапазон рабочих напряжений у него от 3.3В до 6В.
Подключаем наш Bluetooth модуль в сборе :
- Arduino (TX) — (RX) HC-05
- Arduino (RX) — (TX) HC-05
- Arduino (+5В) — (VCC) Bluetooth
- Arduino (GND) — (GND) Bluetooth
- пины LED, KEY не используются
После подачи питания на модуль Bluetooth HС-05 на нем должен заморгать светодиод, что означает работоспособность блютуза.
Включаем bluetooth на мобиле, находим устройство с именем HC-05 и подключаемся, пароль 1234.
Для тестирования заливаем в Arduino простой скетч:
int count = 0;
void setup() {
Serial.begin(9600);
Serial.println("Test Arduino + Bluetooth. http://localhost");
}
void loop() {
count++;
Serial.print("Count = ");
Serial.println(count);
delay(1000);
}
На Android телефон устанавливаем Bluetooth Terminal. Подключаемся к устройству HC-05 и наблюдаем на экране телефона бегущие строки с увеличивающимся счетчиком.
Чтобы модуль мог принимать AT-команды, нужно его перевести в соответствующий режим — для этого нужно установить вывод KEY (PIO11) в логическую 1. На некоторых Breakout/Base Board вместо вывода KEY есть вывод EN (ENABLE), который может или не может быть припаян к выводу на самом чипе. Это касается только чипов HC05. Вот как раз у меня вывод EN платы никуда не припаян. Поэтому его можно припаять отдельным проводом к выводу KEY(PIO11) чипа. Либо во время работы, чтобы перевести HC05 в режим AT-команд на пару секунд закоротить вывод чипа KEY(PIO11) на вывод питания Vcc. Для HC06 вывод KEY не нужен.
Опыт создания первого робота на Ардуино (робот-«охотник»)
В данной статье я хочу описать процесс сборки своего первого робота на ардуино. Материал будет полезен другим таким же новичкам, как и я, которые захотят изготовить какую-нибудь «самобеглую тележку». Статья представляет собой описание этапов работы с моими дополнениями по различным нюансам. Ссылка на итоговый код (скорее всего, не самый идеальный) дана в конце статьи.

По мере возможности я привлекал к участию своего сына (8 лет). Что именно с ним получалось, а что нет — на это я выделил часть статьи, возможно, кому-то пригодится.
Отдельные блоки
Теперь пройдусь по блокам
и расскажу персонально про каждый.
Понятно, что робот должен иметь хороший источник энергии. Варианты могут быть разные, я выбрал вариант с 4 аккумуляторами АА. В сумме они дают примерно 5 В, и такое напряжение можно прямо подать на пин 5V платы arduino (минуя стабилизатор).
Некоторая настороженность, конечно, у меня была, но это решение вполне работоспособно.
Так как питание нужно везде, то для удобства я сделал по центру робота два разъема: один «раздает» землю (справа), а второй — 5 В (слева).

Двигатели и драйвер
Сначала про крепление двигателей. Крепление заводское, но сделано с большими допусками. Другими словами, двигатели могут «вихлять» на пару миллиметров влево-вправо. Для нашей задачи это не критично, а вот где-то может и влиять (робота начнет уводить в сторону). На всякий случай я выставил двигатели строго параллельно и зафиксировал клеем.

Для управления двигателями, как я писал выше, используется драйвер L298N. По документации у него три пина на каждый двигатель: один для изменения скорости и пара пинов для направления вращения. Тут есть один важный момент. Оказывается, если напряжение питания 5 В, то регулировка скорости просто не работает! То есть либо совсем не крутит, либо крутит по максимуму. Вот такая особенность, из-за которой я «убил» пару вечеров. В конце концов, нашел упоминание где-то на одном из форумов.
Вообще говоря, низкая скорость вращения мне требовалась при развороте робота — чтобы он имел запас времени просканировать пространство. Но, так как с такой задумкой ничего не вышло, пришлось делать по другому: небольшой поворот — остановка — поворот — остановка и т. д. Опять же, не столь изящно, но работоспособно.
Еще здесь добавлю, что после каждого преследования робот выбирает случайное направление нового поворота (по или против часовой стрелки).

Еще одна железяка, где пришлось искать компромиссное решение. Ультразвуковой датчик на реальных препятствиях дает нестабильные цифры. Собственно, это было ожидаемо. Идеально он работает где-нибудь на соревнованиях, где есть гладкие, ровные и перпендикулярные поверхности, а вот если перед ним «мелькают» чьи-то ноги — тут нужно вводить дополнительную обработку.
После всей обработки у нас получается расстояние до ближайшего объекта. Если оно меньше некоторой пороговой величины — тогда мы включаем сигнализацию и едем прямо на «нарушителя».
Мигалка и сирена
Пожалуй, самые простые элементы из всего перечисленного. Их видно на фотографиях выше. По железу здесь писать нечего, поэтому теперь перейдем к коду
.
Сборка
Собрать готовое шасси небольшая проблема. Но не думайте, что без допиливания у вас всё сразу соберется. Поэтому приготовьте надфили.


Подключить нормально несколько моторов, сервомотор или шаговый напрямую к Arduino не удастся. Так как пины (выводы) Arduino являются слаботочными. Для решения проблемы существует дополнительный модуль управления приводами — Motor Drive Shield на базе микросхемы L293D, которая является одной из самых распространенных микросхем, предназначенных для этой цели. Чип L293D известен также как H-мост (H-Bridge).
Я использовал плату, которая обеспечивает 4 канала для подключения на двух микросхемах L293D и сдвиговом регистре. Приобретается на eBay за $5.
Данная плата модуля управления приводами имеет следующие характеристики.
- L293D Motor Drive Shield совместим с Arduino Mega 1280 и 2560, UNO, Duemilanove, Diecimila
- 4-х канальное управление
- питание моторов от 4.5В до 36В
- допустимый ток нагрузки 600мА на канал, пиковый ток — 1.2A
- защита от перегрева
- 2 интерфейса с точным таймером Arduino (не будет «дрожания») для подключения сервомоторов на напряжение 5В, если напряжение питания нужно повыше, то подключение по питанию нужно переделать как описано ниже
- можно одновременно управлять 4 двунаправленными DC коллекторными моторами или 2 шаговыми, и 2 сервомоторами
- 4 двунаправленные DC моторы подключены каждый к 8-битной шине для выбора индивидуальной скорости
- подключение до 2 шаговых приводов (однополярных или биполярных), с одной катушкой, двойной катушкой или с чередованием шага
- разъем для подключения внешнего источника для раздельного питания управляющей логики и моторов
- Кнопка RESET Arduino
- для управления используется библиотека Adafruit AFMotor.
Motor Drive Shield требует небольшой доработки, чтобы можно было после него хоть что-нибудь подключить. Я подпаял сверху необходимые разъемы, получилось вот что.

Моторы могут быть подключены к дополнительному по отношению к плате Arduino источнику питания. Я рекомендую именно такой способ подключения. Для этого нужно снять, разомкнуть перемычку, как показано на картинке.

В этом случае питание Arduino и питание моторов производится независимо друг от друга.
Светодиод на мотор-шилде светится при наличии питания для моторов, если он не горит, то моторы работать не будут.
Сервомоторов положение джампера питания не касается, они по прежнему будут запитаны от 5V Arduino. Так как сервомоторы обычно потребляют большой ток и если питания недостаточно, то всё устройство начинает глючить, в «лучшем» случае будет глючить только сервопривод — не будет поворачиваться на заданный угол, либо все время перед каждым поворотом поворачивать сначала в 0 градусов, а уже потом на заданный угол (и если будет успевать). Поэтому я рекомендую питать сервопривод также от дополнительного источника питания. Для этого придется немного переделать схему подключения: откусить плюсовой провод (обычно красный) от стандартного разъема и соединить его с плюсом источника питания напрямую.

При подключении Motor Drive Shield аналоговые пины не используются. Цифровые пины 2, 13 не используются.
Указанные ниже пины используются, только если подключены и используются соответствующие DC двигатели или шаговые двигатели (Stepper):
- D11: DC Motor #1 / Stepper #1 (активация и контроль скорости)
- D3: DC Motor #2 / Stepper #1 (активация и контроль скорости)
- D5: DC Motor #3 / Stepper #2 (активация и контроль скорости)
- D6: DC Motor #4 / Stepper #2 (активация и контроль скорости)
Эти пины будут заняты, если используются любые DC/steppers: D4, D7, D8, D12.
Указанные ниже пины будут заняты, только если используются соответствующие сервомоторы:
- D9: Servo #1 управление
- D10: Servo #2 управление

Пример кода для управления моторами:
#include <AFMotor.h> // подключить библиотеку Adafruit
#include <Servo.h> // подключить библиотеку для сервомотора
AF_DCMotor motor; // создать объект мотор, указав номер разъема DC мотора на плате Motor Shiled и, опционально, частоту frequency
Servo servo; // создать объект сервомотор
servo.attach; // присоединить серво на пин 9 или 10 (крайний разъем на плате Motor Shiled)
motor.setSpeed(speed); // установить скорость DC мотора от 0 (останов) до 255 (полный газ)
motor.run(RELEASE); // DC мотор стоп
motor.run(FORWARD); // DC мотор вперед
motor.run(BACKWARD); // DC мотор назад
servo.write; // повернуть серво на 90 град.
DC мотор у меня начал крутиться только при указании скорости больше 100, если меньше — просто жужжит. Минимальную скорость вашего мотора вам придется определить экспериментально.
Для моторов, подключенных к M1 и M2 можно задать частоту: MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_2KHZ, MOTOR12_1KHZ. Наибольшая скорость вращения достигается при 64KHz эта частота будет слышна, меньшая частота и скорость на 1KHz но и использует меньше энергии. Моторы 3 и 4 всегда работают на 1KHz другие значения игнорируются. По умолчанию везде 1KHz.
После этого необходимо прогнать тест моторов. Скетч для тестирования можно взять здесь
. В начале скетча измените номер мотора в строке (или в строках) типа:
AF_DCMotor motor(…);
Скетч некоторое время вращает мотор(ы) вперед по ходу движения робота, а затем назад. Посмотрите внимательно в ту ли сторону вращается мотор, и измените полярность подключения если нужно.
Подключаем ультразвуковой измеритель расстояния HC-SR04 Ultrasonic Module. Распиновка выводов:
- Vcc
- Trig (T)
- Echo ( R )
- GND
Время затрачиваемое ультразвуковым дальномером на измерения (определено опытным путем):
- максимум 240 мсек, если расстояние слишком велико (out of range)
- минимум 1 мсек, если расстояние слишком мало
- расстояние в 1.5 м определяется примерно за 10 мсек

Ультразвуковой датчик дальномер, в силу своей физической природы, а не потому что Китай, в некоторых случаях плохо определяет расстояние до препятствия:
- если препятствие сложной формы, то ультразвук отражается под разными углами и датчик ошибается,
- ультразвук отлично поглощается (т.е. не отражается) мягкой мебелью или игрушками, и датчик считает что перед ним ничего нет.
Другими словами, для ультразвукового дальномера в идеале было бы отлично, если бы все препятствия имели вид твёрдой плоскости, перпендикулярной направлению излучения ультразвука.
Некоторые проблемы можно решить с помощью инфракрасного датчика расстояния. Но он тоже не идеален:
- небольшая максимальная дальность по сравнению с ультразвуковым: 0,3—0,8 м против 4 м
- большое минимальное расстояние по сравнению с ультразвуковым: 10 см против 2 см
- зависимость чувствительности датчика от общей освещенности.
Хотя если установить эти дальномеры в паре, то эффективность их работы заметно повысилась бы.
Алгоритм управления движением
Ошибочно называть наш способ «алгоритм объезда препятствий» или «поиском пути». Это отдельные математические дисциплины, чистая математика. Если вам очень-очень сильно нравится математика, то погуглите указанные словосочетания, чтивом на полгода будете обеспечены.
Пока же нас интересуют вещи гораздо проще. Поэтому мы назовем это просто — алгоритм управления движением 4-х колёсного робота. Разумеется речь идет об автоматическом управлении без участия человека.
Вот этот простой алгоритм записанный словами, для более сложных алгоритмов придется (хочется или нет) составлять блок-схемы.
Сейчас одновременно смотрите в исходник скетча RoboCar4W-1.ino
.
- Измеряем расстояние до препятствия впереди.
- Если это измеренное расстояние меньше значения
DST_TRH_BACK
(сокращение от distance threshold), то останавливаемся и едем задним ходом одновременно поворачивая. Направление поворота выбираем так: если ранее уже поворачивали влево, то поворачиваем вправо и наоборот. - Если измеренное расстояние больше чем
DST_TRH_BACK
, но меньше чемDST_TRH_TURN
, то просто поворачиваем. Направление поворота выбираем случайно. - Если до препятствия далеко, то просто едем вперед.
- Повторяем все сначала.
Чем хорошо, что у нас 4 колеса и все ведущие? Мы можем выполнить (запрограммировать) несколько типов поворотов:
- Плавный поворот. Все колеса вращаются, но колеса с одной стороны вращаются быстрее.
- Резкий поворот. Колеса вращаются только с одной стороны.
- Разворот на месте. Как трактор, колеса одной стороны вращаются назад, а другой — вперед.
Во втором варианте программы, при управлении с Android-телефона безопасный режим, когда робот старается не допускать лобовых столкновений, может быть отключен, если в программе два раза нажать кнопку

и включен обратно однократным её нажатием.
Важное примечание
. Вся логика находится под управлением Arduino. Android здесь выступает просто как игровой пульт (без мозгов) от консоли, его задача — тупо передавать нажатия кнопок (т.е. команды) посредством Bluetooth в Arduino RoboCar4W.
Структура робота
Итак, мы определились с идеей, перейдем к компоновке
. Список элементов формируется из того, что должен уметь робот. Тут всё вполне очевидно, поэтому сразу посмотрим на нумерацию:

«Мозги» робота — плата arduino uno
; была в заказанном из Китая наборе. Для наших целей ее вполне хватает (ориентируемся на количество используемых пинов). Из этого же набора мы взяли готовое шасси
, на которое крепятся два ведущих колеса
- и одно заднее (свободно вращающееся)
. Также в наборе был готовый батарейный отсек
, сзади — драйвер двигателей (L298N)
, по центру — светодиод-мигалка
, и чуть в стороне — пищалка
.
На этапе компоновки мы смотрим:
— чтобы все влезло
— чтобы было сбалансировано
— чтобы было рационально размещено
Частично это уже сделали за нас китайские коллеги. Так, тяжелый батарейный отсек поставлен в центр, и примерно под ним стоят ведущие колеса. Все остальные платы легкие, их можно размещать по периферии.
- В шасси из набора есть много заводских отверстий, но какая в них логика — я так и не разобрался. Двигатели и аккумуляторный блок закрепились без проблем, дальше началась «подгонка» со сверлением новых отверстий, чтобы закрепить ту или иную плату.
- Весьма выручили латунные стойки и прочий крепеж из запасников (иногда приходилось выкручиваться).
- Шины от каждой платы пропускал через зажимы (опять же нашел в запасниках). Весьма удобно, все провода лежат красиво и не болтаются.




