Робомобиль на базе Arduino Mega 2560 с Bluetooth управлением и автономным движением с объездом препятствий

    Представляю свой проект робомобиля на Arduino. На просторах интернета есть масса подобных статей, наткнувшись на одну из них решил реализовать увиденное со своими изменениями в конструкцию и функционал. Реализованы следующие возможности: управление робомобилем по Bluetooth со смартфона; автономное движение робомобиля с объездом препятствий.





    Для реализации нам понадобится:

    Комплект: рама, моторы, колёса, крепления (Car Chassis Kit for Arduino — фото)
    Arduino Mega 2560
    Motor Control Shield for Arduino L293D
    Сервопривод MG995
    Ультразвуковой дальномер HC-SR04
    Bluetooth модуль HC-05 JY-MCU
    Active High Level Buzzer Alarm / Speaker Buzzer Module
    Диоды для фар
    Соединительные провода
    Держатели для дальномера и Bluetooth модуля (делал сам)
    Блок питания (я взял от кассового аппарата)
    Приложение на Android для управления робомобилем по Bluetooth Arduino Bluetooth RC Car (фото, при подключении к Bluetooth модулю пин-код по умолчанию «1234»)

    Подключение комплектующих
    Моторы Motor Shield L293D Фары Arduino Mega 2560
    П.Л. М3 П.Л. «-» на GND, «+» на Pin 22
    П.П. М4 П.П. «-» на GND, «+» на Pin 24
    З.Л. М1 З.Л. «-» на GND, «+» на Pin 34
    З.П. М2 З.П. «-» на GND, «+» на Pin 35
    Дальномер HC-SR04 Arduino Mega 2560 Bluetooth HC-05 Arduino Mega 2560 Buzzer Arduino Mega 2560
    Vcc 5V VCC 5V SIG Pin A9
    Trig Pin 31 GND GND VCC Pin A8
    Echo Pin 30 TXD Pin 50 GND GND
    Gnd GND RXD Pin 51
    Сервопривод MG995 Motor Shield L293D
    тройная клема SERVO_2 (центральный провод «+» откусываем и запитываем напрямую от «+» Motor Shield — фото; при управлении по Bluetooth — клему снимайте, чтобы серва не дёргалась)

    Процесс сборки

    К моторам припаиваем провода, обратите внимание, на всех нижних контактах у меня чёрные провода, на верхних — красные, не перепутайте полярность при подключении к Motor Shield.





    Крепим сервопривод к верхней части рамы, моторы к нижней, собираем раму, ставим колёса. Устанавливаем Motor Shield сверху Arduino Mega и крепим на раму, подключаем всё по схеме выше, заливаем соответствующий скетч (в конце статьи) — наслаждаемся.

    Управление по Bluetooth — устанавливаете приложение на свой смартфон, запускаете, подключаетесь (Connect) к Bluetooth модулю (при необходимости вводите пин-код); управлять можно классическим способом по стрелкам (Buttons), а так же в меню программы можно выбрать Accelerometer и управлять с помощью наклонов смартфона.

    Автономное движение с объездом препятствий — алгоритм следующий: дальномер измеряет расстояние впереди, если оно > 30 см (в скетче параметр const int vmindistance), то продолжаем двигаться вперед, если < 30 см, то: останавливаем моторы; крутим сервопривод на углы от 0° до 180° с шагом в 15° и измеряем расстояния на этих углах; заносим полученные значения в массив; поворачиваем сервопривод прямо на угол 90°; ищем в массиве позицию с максимальным значением данных; если это значение < 30 см, то едем назад, если > 30 см, то проверяем какому углу поворота сервопривода оно соответствует и в зависимости от этого поворачиваем влево или вправо.















    Небольшое видео

    Управление по Bluetooth:


    Автономное движение с объездом препятствий:


    Ссылки для скачивания:

    → Библиотека AFMotor
    Скетч — управление по Bluetooth
    Скетч — автономное движение с объездом препятствий
    Мануал по Bluetooth модулю HC-05
    Метки:
    Поделиться публикацией
    Комментарии 26
    • 0
      Я вот тоже собирал похожее авто, у меня моторшилд очень сильно греется. У вас такой проблемы нет?
    • 0
      Честно говоря, автономное движение на видео совсем не похоже на описанный в тексте алгоритм, напоминает какие-то хаотичные метания. Причем, ни разу не увидел чтобы она поворачивала на какой-то угол, отличный от полного разворота.
      Зачем платформа несколько раз поворачивается на 180 градусов и обследует сектор перед ней? Остановилась, обследовала сектор спереди, развернулась, обследовала сектор сзади, развернулась, опять обследовала сектор спереди, опять развернулась, поехала.
      • 0
        учту ваше замечание, по видео складывается такое впечатление, я думаю, это связано с тем, что было выбрано ограниченное пространство для съёмки, да ещё рукой приходилось закрывать дальномер, чтобы машинка не выезжала из кадра; на большем пространстве она себя ведёт по другому
        • 0
          А все-таки — зачем машинка несколько раз разворачивается на 180 градусов перед тем как поехать?
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0

          Как интересно, все же, совпадение, пусть и рандомное! В прошлые выходные сел писать статью про похожий проект, и вышла Ваша! И даже логика объезда препятствий тоже независимо похожа оказалась. Подскажите, выбор Мега2560 только из-за шилда или есть другие основания? Мне платы Pro Mini хватило более чем, управление моторами — MOSFET + реле для реверса.

          • 0
            выбор Mega 2560 исключительно из-за шилда + много свободных пинов
          • 0
            Вот интересно, отчего вот на этом никто роботов не делает? Или делают, но на ГТ не публикуют?

            https://ru.aliexpress.com/item/New-Arrival-RC-Car-9115-2-4G-1-12-1-12-Scale-Rock-Crawler-Car-Supersonic/32746070807.html

            https://geektimes.ru/company/dronk/blog/261226/ — обзор на ГТ

            По всем характеристикам — небо и земля, а цена та же фактически.
            • +1
              Потребление готового убивает на корню идею творческого самовыражения.
              • 0
                Во-первых. Это классический пример фразы, которая кажется мудрой, являясь при детальном рассмотрени эталоном глупости. Всегда, делая что-то, мы используем что-то, что было до нас (то бишь готовое). Сделать что-то из ничего — так только Г-сподь Б-г умел (и то, говорят, разучился). И не в последнюю очередь мы используем то, что было создано другими людьми. Мы все стоим на плечах гигантов, как говаривал старик Ньютон. У Леонардо да Винчи не было двигателя внутреннего изгорания (и много чего ещё) — вот он и не смог построить вертолёт. Да и вы, например, используете старый добрый русский язык, который был, когда вас в проекте ещё не было. И буквы берёте уже готовые. И процитированной вами мудрости вас без сомнения кто-то научил. Так что не творческий вы человек. А самые творческие люди, видимо — маугли.

                Во-вторых. А здесь-то это при чём?
                • 0
                  Фраза не о том что вообще Вы тут изложили.
                  Например, по аналогии, соберите из готовых микросхем компьютер домашних условиях
                  и посмотрите на получившийся «конкурентно» сопособный вариант.
                  С созданием ПО есть ещё варианты, а с железом в этом случае почти «швах».
                  Получите «калькулятор» для показа своему окружению.
                  Но и это не плохо до определённого уровня постановки личных целей.
                  Ближе к теме — есть у меня радиоуправляемая машинка. Можно добавить к ней контроллер, обвязку датчиков, «ИИ», а дальше что с этим делать?

                  P.S. Где сейчас, например, ПК ZX SPectrum? И где ещё «искуственная жизнь» по Ламарку? :)
                  • 0
                    > И где ещё «искуственная жизнь» по Ламарку? :)

                    Приблизительно там же, где был вертолёт у Леонардо да Винчи. :(

                    > Фраза не о том что вообще Вы тут изложили.

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

                    > Ближе к теме — есть у меня радиоуправляемая машинка. Можно добавить к ней контроллер, обвязку датчиков, «ИИ», а дальше что с этим делать?

                    Ну, собственно, тот же вопрос можно задать и в отношении обсуждаемого девайса. И он будет ничуть не менее риторическим. Понятное дело, что это в основном делается в целях развлечения/самообразования. Девайс из поста здесь имеет то преимущество, что «подключил и забыл», то бишь «самым маленьким» будет проще начать хоть что-то делать. Зато у девайса по моей ссылке преимущество в скорости, проходимости и т. п. Так что расти над собой с его помощью можно до заметно более высоких высот. Скажем, line follower на ардуино-черепашке каждый дурак сделает. А слабо сделать line follower на 40 км/ч?

                    Areso

                    > Там маленькая по площади площадка с небольшими и не очень удобными креплениями.

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

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

              • 0
                Пожалуйста верните SR04 обратно на свалку. Нет ничего более безобразного, глючного и проблемного, чем этот ультразвуковой датчик расстояния. Есть же чудесные ИК-датчики от шарпа, стоимостью всего 3.5$.
              • +1

                А мы с ребятами вот так делали.
                • 0
                  Пилите псот!
                  • 0
                    Хм. Не очень уверен, что есть в этом смысл. Подобных проектов вагон и маленькая тележка… Но я подумаю :)

                    Но, если интересно, вкратце вот так:
                    Машинка на bluetooth-управлении. Плата (шилд) требует доработки, которая будет сделана в ближайшее время.
                    Умеет ездить вперёд/назад, поворачивать, крутиться на месте, включать фары, издавать звуковой сигнал и светить стоп-сигналами при торможении.
                    Управляющая программа сделана в AppInventor.
                    Скетч: http://pastebin.com/M0qkqyzT
                    Приложение для Android: https://drive.google.com/file/d/0By9MvJS1lvj6YUo4ZFFucjhTaWs/view?usp=sharing
                    Проект для AppInventor: https://drive.google.com/file/d/0By9MvJS1lvj6X01uQTloOWFNeHc/view?usp=sharing
                    • 0
                      С AppInventor долго возились? Я как-то пытался разобраться с ним — плюнул…

                      Стоит написать просто для того, чтобы зафиксировать в истории. Если посмотреть мои посты, то по факту это так или иначе было, но когда есть ещё что-то прочитает это тот, кто никогда не видел, и после захочет повторить. Круго же, когда гиков становится больше :)
                      • 0
                        С AppInventor разобрался более-менее за пару пробных проектов. Правда, до сих пор приходится подглядывать в прошлые примеры, т.к. иногда что-то забывается. И на что-то совсем крутое и серьёзное меня в нём не хватит :)

                        Спасибо за идею и отклик. Попробую завтра пост написать.

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