Это первый роботизированный проект, который я когда-либо делал, и если вы никогда не пробовали собрать робота, то, скорее всего, думаете что это сложно. Но Ардуино и шасси 2WD / 4WD сделают вашу сборку намного проще, и вы соберете своего первого робота с радиоуправлением на Ардуино без каких-либо мучений.
По пути ко мне пришла идея о создании радиоуправляемой машины своими руками, которая бы объезжала препятствия, поэтому я собрал и этот проект, видео и файл программы к которому прикладываю ниже.
Шаг 1: Нужные части и инструмент
Я воспользовался готовыми решениями, и все запчасти и инструменты были приобретены через интернет.
Запчасти:
- Набор шасси 4WD для робота (GearBest)
- Arduino Nano (GearBest)
- Модуль H-моста LM298 (GearBest)
- Модуль bluetooth HC-06 (Amazon)
- Литий-ионные батарейки 2 x 18650 (GearBest)
- Отсек для батареек 2x 18650 (GearBest)
- Небольшая макетная плата (GearBest)
- Провода сечением 0.5 мм2
- Провода с джамперами папа-мама (Amazon)
- Провода с джамперами мама-мама (Amazon)
- Малярная лента, изолента или что-то подобное (Amazon)
Для робота, объезжающего препятствия:
Ультразвуковой модуль измерения расстояния HC — SR04 (GearBest)
Необходимый инструмент :
Шаг 2: Что такое робот?
Робот – это электромеханическое устройство, которое способно каким-либо образом реагировать на окружающую обстановку и принимать самостоятельные решения или действия, чтобы достичь определенных целей.
Робот состоит из следующих компонентов:
- Структура / Шасси
- Привод / Мотор
- Контроллер
- Вводные устройства / Датчики
- Источник питания
В следующих шагах я опишу каждый из этих компонентов, и вы всё легко поймёте.
Шаг 3: Структура / Шасси
Структура состоит из физических компонентов. Робот имеет один или несколько физических компонентов, которые каким-либо образом двигаются для выполнения задания. В нашем случае структура робота – это шасси и колёса.
Шаг 4: Приводы
Под приводом можно понимать устройство, которое преобразовывает энергию (в робототехнике под энергией понимается электрическая энергия) в физическое движение. Большинство приводов производят вращательное или линейное движение.
В нашем случае привод – это DC-мотор, скорость которого равна 3000 оборотам в минуту, а вращающий момент 0.002 Н•м. Теперь добавим к нему шестерню с передаточным числом 1:48. Новая скорость уменьшается на коэффициент 48 (в результате давая 3000/44 = 68 оборотов в минуту) и вращающий момент увеличивается на коэффициент 48 (в результате давая 0.002 x 48 = 0.096 Н•м).
Шаг 5: Подготавливаем клеммы моторчиков
Отрежьте по 4 провода красного и черного цвета длиной примерно 12-15 см. Я использовал провода сечением 0.5 мм2. Оголите концы проводов. Припаяйте провода к клеммам моторчиков.
Вы можете проверить полярность моторчиков, соединив их с отсеком для батареек. Если он движется в прямом направлении (с красным проводом на позитивной и черным на негативной клеммах батареек), то с соединением все в порядке.
Шаг 6: Устанавливаем мотор
Прикрепите две акриловые распорки к каждому мотору при помощи двух длинных болтов и двух гаек. Для наглядности вы можете посмотреть видео.
Возьмите на заметку, что провода на каждом моторе ведут к центру шасси. Соедините оба красных и оба черных провода от моторов с каждой стороны шасси. После соединения у вас будет две клеммы на левой стороне и две на правой.
Шаг 7: Устанавливаем крышу
Послу установки 4 моторов нужно установить крышу. Приладьте 6 медных стоек при помощи гаек, клеммы проводов выведите сквозь отверстие в крыше.
Шаг 8: Контроллер
Теперь у нас установлены шасси и приводы, но нам не хватает контроллера. Шасси без контроллера никуда не поедут. Робот будет оставаться на месте, оставаясь безжизненным. Поэтому, для того чтобы робот перемещался, нам нужен мозг (контроллер).
Контроллер – программируемое устройство, способное работать по заданной программе и отвечающее за все вычисления, принятие решений и коммуникацию. В нашем случае в качестве контроллера мы используем микроконтроллер Ардуино Нано.
Контроллер принимает входные данные (с датчиков, удалённо и т.д.), обрабатывает их и затем даёт команду приводам (моторам) выполнить выбранное задание.
Если вы подключите позитивный провод от батарей на одну строну моторчика, затем подключите негативный провод от батарей на другой контакт моторчика, то он начнёт крутиться вперёд. Если вы поменяете провода местами, то мотор начнёт вращаться в другую сторону.
Микроконтроллер можно использовать, чтобы вращать мотор в одном направлении, но если вам хочется с помощью микроконтроллера вращать мотор и вперёд, и назад, то вам нужна дополнительная схема – H-мост. В следующем шаге я объясню, что это такое.
Шаг 9: Н-мост (модуль LM 298)
Что такое Н-мост?
Термин Н-мост произошел от типичного графического представления этой схемы. Это схема, которая может вращать мотор как в прямом, так и в обратном направлении.
Принцип работы:
Посмотрите приложенную картинку для понимания принципа работы схемы Н-моста. Мост состоит из 4 электронных выключателей S1, S2, S3, S4 (транзисторы / MOSFET/ IGBTS).
Когда выключатели S1 и S4 закрыты, а остальные два открыты, положительное напряжение будет проходить через мотор, и он будет вращаться в прямом направлении. Таким же образом, когда закрыты выключатели S2 и S3, а S1 и S4 открыты, обратное напряжение будет даваться на мотор и он начнёт вращаться в обратном направлении.
Заметка: выключатели на одной руке (то есть S1, S2 или S3, S4) никогда не закрываются одновременно – это создаст короткое замыкание.
Н-мосты доступны в виде интегральных схем, либо можно собрать свой мост при помощи 4 транзисторов или MOSFET. В моём случае используется интегральная схема Н-моста LM298, которая позволяет управлять скоростью и направлением моторов.
Описание распиновки:
Out 1: DC мотор 1 «+» или шаговый двигатель A+
Out 2: DC мотор 1 «-» или шаговый двигатель A-
Out 3: DC мотор 2 «+» или шаговый двигатель B+
Out 4: вывод мотора B
12v: вход 12V, но можно использовать от 7 до 35V
GND: Земля
5v: выход 5V, если джампер 12V стоит на месте, идеально для питания Arduino (и т.п.)
EnA: позволяет получать сигналы PWM для мотора A (Пожалуйста, прочитайте секцию «Arduino Sketch Considerations»)
IN1: включает мотор A
IN2: включает мотор A
IN3: включает мотор B
IN4: включает мотор B
BEnB: позволяет получать сигналы PWM для мотора B (Пожалуйста, прочитайте секцию «Arduino Sketch Considerations»)
Шаг 10: Входы / Датчики
В отличие от людей, роботы не ограничены лишь зрением, звуком, осязанием, обонянием и вкусом. Роботы используют различные датчики для взаимодействия с внешним миром.
Датчик – это устройство, которое выявляет и отвечает на определенные типы входящей информации из окружающего мира. Этой информацией может быть свет, тепло, движение, влажность, давление или любое другое явление окружающей среды.
Входящие сигналы могут идти от датчиков, удалённо, или со смартфона. В этом руководстве я использую смартфон в качестве девайса, отправляющего сигналы, управляющие роботом.
Шаг 11: Источник питания
Чтобы управлять приводами (моторами) и питать контроллер, роботу нужен источник питания. Большинство роботов питается от батарей. Когда мы говорим о батареях, то имеем в виду множество вариантов:
- Алкалиновые батарейки AA (не заряжаются)
- Никель-металгидридные или никель-кадмиевые батарейки AA (заряжаются)
- Литий-ионные батареи
- Литий-полимерные батареи
В зависимости от ваших нужд, нужно выбрать подходящий вид батарей. По-моему мнению, нужно всегда выбирать заряжаемые батареи достаточной ёмкости. Я использовал 2 литий-ионные батареи стандарта 18650 ёмкостью 2600mAh. Если для автономности вам нужно больше мощности, используйте большой комплект батарей, например 5A turnigy.
Отсек для батарей:
Отсек для батарей я заказал в Китае, он не подходил для батарей с плоским верхом, поэтому я использовал два неодимовых магнита для придания батарейкам нужной формы.
Зарядка:
Для зарядки батарей нужен хороший зарядник. По моему опыту, эти зарядники хорошо зарекомендовали себя:
- PowerEx AA Charger-Analyzer (Amazon)
- XTAR LiIon Battery Charger (Amazon)
- Turnigy LiPo Battery Charger (Amazon)
Шаг 12: Установка компонентов
Цельная схема устанавливается на крыше. Отсек для батарей, драйвер двигателей LM 298 и маленькую макетную плату я закрепил горячим клеем, но можно просто прикрутить их. Модуль bluetooth закрепляется скотчем. Ардуино нано вставьте в макетную плату.
Шаг 13: Электропроводка
Для соединения модулей понадобятся провода с джамперами.
Соедините красные провода двух моторов вместе (на каждой стороне) и затем черные провода. В итоге у вас выйдет по две клеммы с каждой стороны.
MOTORA отвечает за два правых мотора, соответственно два левых мотора соединены с MOTORB.
Для соединения всех компонентов следуйте инструкции:
Соединение моторов:
Out1 -> красный провод левостороннего мотора (+ )
Out2 -> черный провод левостороннего мотора ( — )
Out3 -> красный провод правостороннего мотора ( + )
Out4 -> черный провод правостороннего мотора ( — )
LM298 — > Arduino
IN1 -> D5
IN2-> D6
IN2 ->D9
IN2-> D10
Модуль Bluetooth -> Arduino
Rx-> Tx
Tx ->Rx
GND -> GND
Vcc -> 3.3V
Питание
12V — > красный провод батарей
GND -> черный провод батарей и пин GND на Arduino
5V -> соедините с пином 5V Arduino
Шаг 14: Логика управления
Чтобы понять принцип работы, я создал эту логическую таблицу. Она очень пригождается во время написания кода.
Шаг 15: Софт
Часть с фотом очень проста, она не требует никаких библиотек. Если вы поняли таблицу логики из прошлого шага, то сможете написать свой код. Я не тратил на код много времени и просто скопировал чей-то готовый вариант. Чтобы управлять роботом-машиной, я использую смартфон, соединённый с контроллером через модуль Bluetooth (HC-06).
Скачайте приложение. После его установки, свяжите телефон с модулем Bluetooth. Пароль «1234». Код Ардуино прикреплён ниже.
ФайлыШаг 16: Тестирование
Чтобы проверить робота-машину, я положил её на маленькую картонную коробку. Таким образом, колёса будут крутиться, но машинка будет оставаться на месте. Проверьте работоспособность, нажимая все доступные кнопки. Если всё работает, то можно по-настоящему управлять ей.
Заметка: если моторы вращаются в противоположном направлении, то просто поменяйте местами провода.
Шаг 17: Планы на будущее
В этом руководстве я объяснил, как создать простенькую машинку. Дальше я хочу добавить в неё некоторые улучшения. Вы можете присоединить к ней различные датчики, вот некоторые идеи:
- Добавление ультразвукового датчика для объезда препятствий
- Использование модуля WiFi, например ESP8266 или Node MCU вместо Bluetooth, для удлинения дистанции управления.
- Добавление солнечной панели для зарядки батарей.