Представляю свой проект робомобиля на 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)


  1. degressor
    17.02.2017 16:06

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


    1. alexbus84
      17.02.2017 16:15

      нет, сильного нагрева не замечал


    1. UJIb9I4AnJIbIrUH
      17.02.2017 16:15
      +4

      Статью не хотите написать?


  1. Andy_Big
    17.02.2017 16:53

    Честно говоря, автономное движение на видео совсем не похоже на описанный в тексте алгоритм, напоминает какие-то хаотичные метания. Причем, ни разу не увидел чтобы она поворачивала на какой-то угол, отличный от полного разворота.
    Зачем платформа несколько раз поворачивается на 180 градусов и обследует сектор перед ней? Остановилась, обследовала сектор спереди, развернулась, обследовала сектор сзади, развернулась, опять обследовала сектор спереди, опять развернулась, поехала.


    1. alexbus84
      21.02.2017 14:04

      учту ваше замечание, по видео складывается такое впечатление, я думаю, это связано с тем, что было выбрано ограниченное пространство для съёмки, да ещё рукой приходилось закрывать дальномер, чтобы машинка не выезжала из кадра; на большем пространстве она себя ведёт по другому


      1. Andy_Big
        21.02.2017 20:07

        А все-таки — зачем машинка несколько раз разворачивается на 180 градусов перед тем как поехать?


  1. fruit_cake
    17.02.2017 18:33

    Хотел собрать управляемую машину на ардуино с помощью другой ардуино, столкнулся с проблемой поиска информации по блютуз модулям, вдобавок у HC-06 прошивки чтоли кривые заливают китайцы, на АТ команды или отвечает криво или не отвечает вообще. Валялось пара модулей HSP8266, решил озадачиться их изучением, при минимально подключении молчат совсем, вытравил плату спаяд всё как советуют, модуль молчит и не мигнёт. Вот сижу и думаю то ли искать и заказывать у проверенных продавцов новые ESP или бросать всё это начинание.


  1. Kirsch
    17.02.2017 18:58

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


    1. alexbus84
      21.02.2017 13:59

      выбор Mega 2560 исключительно из-за шилда + много свободных пинов


  1. wormball
    17.02.2017 22:54

    Вот интересно, отчего вот на этом никто роботов не делает? Или делают, но на ГТ не публикуют?

    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. FForth
      18.02.2017 01:29
      +1

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


      1. wormball
        18.02.2017 02:04

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

        Во-вторых. А здесь-то это при чём?


        1. FForth
          18.02.2017 11:27

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

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


          1. wormball
            19.02.2017 01:06

            > И где ещё «искуственная жизнь» по Ламарку? :)

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

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

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

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

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

            Areso

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

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


    1. Areso
      18.02.2017 06:51

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


  1. Hellsy22
    18.02.2017 07:38

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


    1. webkumo
      18.02.2017 16:50

      Вот как можно что-то предлагать мало того, что без обзора, без ссылки, так ещё и без указания моделей?


      1. Hellsy22
        18.02.2017 19:30

        1. webkumo
          19.02.2017 11:45

          За ссылочки спасибо… но вы же предлагаете ИК-дальномер, а автор выбрал УЗ-дальномер… Естественно несущая среда сказывается на замерах… Так что тут, скорее, просто устройства для немного разных целей (хотя и с очень похожим применением).


          1. Hellsy22
            19.02.2017 13:08

            автор выбрал УЗ-дальномер

            А я говорю, что УЗ-дальномер в замкнутом помещении — плохое решение, а конкретно этот — ужасное.


      1. praeivis
        22.02.2017 14:38

        Думаю речь о GP2Y0A21YK0F.


  1. AlNinyo
    18.02.2017 12:51
    +1


    1. dlinyj
      18.02.2017 23:29

      Пилите псот!


      1. AlNinyo
        18.02.2017 23:34

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

        Но, если интересно, вкратце вот так:
        Машинка на 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


        1. dlinyj
          18.02.2017 23:36

          С AppInventor долго возились? Я как-то пытался разобраться с ним — плюнул…

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


          1. AlNinyo
            18.02.2017 23:43

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

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