Bluetooth машинка на Arduino

Bluetooth машинка на Arduino с поворотными колёсами на 3D принтере

Bluetooth машинка на Arduino, которая построена на базе шасси с поворотными колёсами. Шасси распечатывается на 3D принтере. Если принтера нет, то можно попробовать изготовить все элементы из подручных материалов при наличии прямых рук. Используется минимум недорогой электроники. Скетч максимально простой и с русскими комментариями. Управление происходит со смартфона с помощью приложения Remote XY.

Вам будет интересно: Bluetooth машинка на Arduino с двумя моторами.

Bluetooth машинка на Arduino

Комплектующие

Электроника:

  1. Arduino Uno — https://bit.ly/2P3rCI5
  2. драйвер моторов L298N — https://bit.ly/3dvbDMg​
  3. Bluetooth модуль HC-06 или HC-05 или подобный — https://bit.ly/3x4nhFX
  4. моторы постоянного тока с редуктором и колёсами — 4 шт — https://bit.ly/2P4e9Qr​
  5. сервомотор SG90 — https://bit.ly/2QeE20g
  6. провода папа-папа, мама-мама, папа-мама 10-30 см — https://bit.ly/3n3z0jl​
  7. аккумулятор 9В, я использовал с разъёмом micro-USB для зарядки — https://bit.ly/2QeFbF6
  8. зажим для аккумулятора 9В — https://bit.ly/32rmwZi​
  9. выключатель — https://bit.ly/3sATelw

И ещё разные мелочи для сборки:

  1. болты 3 х 30 мм — 4 шт;
  2. гайки 3 мм — 4 шт;
  3. болты 4 х 6 мм — 10 шт;
  4. болты 4 х 10 мм — 2 шт;
  5. гайки 4 мм — 10 шт;
  6. болты 5 х 25 мм — 4 шт;
  7. гайки 5 мм — 6 шт;
  8. саморезы — 2 х 7 мм — 8 шт;
  9. подшипники — 5 х 16 х 5 мм — 4 шт.

Схема подключения

Схема подключения Bluetooth машинки на Arduino

Аккумулятор на 9В питает Arduino через порт VIN и драйвер моторов через порт 12V. Модуль Bluetooth питается от Arduino через порт 3,3V. Параллельно портам питания этого модуля подключается конденсатор для стабилизации напряжения. В ином случае Bluetooth может отключаться и терять подключение. Сервомотор также питается от микроконтроллера через порт 5V. Он управляет поворотными колёсами.

Если на драйвере мотора установлена перемычка Enable, то её нужно снять. Этот порт необходим для управления скоростью моторов. Он должен подключаться обязательно к ШИМ порту, обозначенном на Arduino знаком ~. На схеме выше это порт 3. Управление моторами осуществляется через порты 2 и 4 Arduino, они подключаются к портам Input 3 и Input 4 на драйвере моторов. Таким образом порт Enable драйвера управляет скоростью вращения, а логическая единица на Input 3 или Input 4 — направлением.

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

Если после сборки вы нажимаете на пульте управления кнопку для движения вперёд, а машинка едет назад, то поменяйте местами провода на портах Out3 и Out4.

L298N

А если моторы вращаются в разные стороны, то поменяйте местами провода на любом из моторов.

Изменение полярности мотора

Пины RX и TX Bluetooth модуля подключаются к портам TX и RX на Arduino, то есть наоборот. К сожалению, из-за несовместимости библиотеки RemoteXY.h с библиотекой SoftwareSerial.h запрограммировать другие порты Arduino для последовательной передачи данных не получится. Поэтому при прошивке микроконтроллера придётся каждый раз отключать питание Bluetooth модуля.

Сервомотор управляется портом 5 на Arduino программируется библиотекой Servo.h.

Скетч

Скетч можно скачать на Github. Предлагайте ваши исправления и доработки, если есть интересные идеи. Для компиляции вам понадобятся две библиотеки:

  1. RemoteXY.h — https://remotexy.com/ru/library/
  2. Servo.h — https://github.com/arduino-libraries/Servo

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

Скетч достаточно прокомментирован пояснениями. Но если останутся вопросы, задавайте в комментариях к статье.

Приложение для пульта управления

Приложение для пульта можно скачать на сайте Remote XY. Там есть версия для Android и iOs. Это универсальная платформа для создания дистанционного пульта. Интерфейс пульта задаётся в самом скетче, в директиве #pragma pack(push, 1).

Вы можете увидеть и изменить проект пульта здесь. Скетч для Arduino, соответственно, тоже нужно будет изменить. Если поменяйте только дизайн пульта, то изменить нужно будет лишь содержимое директивы #pragma pack(push, 1). А если измените функциональность, то нужно будет шаманить глубже.

Пульт управления

Сборка

Для сборки я смоделировал шасси для печати на 3D принтере. Готовые модели вы можете скачать на сайте Thingiverse. Если есть идеи для ремиксов, то загружайте на Thingiverse. Лично я вижу, что шасси далеко не идеально и в нём есть, что доработать.

Печатать можно пластиком PLA с разрешением 0,2 и заполнением 20%. Но элементы поворотного механизма лучше напечатать с заполнением 70%. Нужны поддержки.

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

Процесс сборки и поездки на этом Ардумобиле показаны в этом видео.

Bluetooth машинка на Arduino с поворотными колёсами на 3D принтере: 36 комментариев

  1. Vasyl

    Привет. Мне очень понравился твой проект. Подскажи если использовать ардуино нано и другой драйвер все тоже будет работать?

    1. arduino Автор записи

      Arduino nano подходит, только на модель шасси не наденется. Придётся переделывать её для Nano. А драйвер — зависит от драйвера. Какой драйвер будешь использовать?

        1. arduino Автор записи

          Будет работать, только скоростью вращения моторов управлять не получится с этим скечем.

  2. erik

    Добрый вечер! очень понравился Ваш проект, хотел бы повторить, но есть одна проблема, у меня уже имеется корпус от машинки на RC управлении, хочется переделать на блютуз, но как подключить поворотную ось?

    1. arduino Автор записи

      Здравствуйте! Немного не понял вопрос. Если в вашей машинке есть сервопривод, который поворачивает ось, то подключили его к Arduino, как в статье.

      1. erik

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

        1. arduino Автор записи

          Лучше убрать мотор с редуктором на поворотной оси и как-нибудь попытаться приспособить там обычную серву. С мотором, конечно, тоже можно попробовать, но, во-первых, большую часть кода надо переписывать и менять схему подключения, во-вторых, обычный мотор не будет стабильно держать угол поворота, как сервомотор. А подключить его можно, например, к свободному выходу драйвера моторов — http://joxi.ru/E2pDMjXc4kXz12

        1. arduino Автор записи

          Не едет, потому что не может подключиться ) Что происходит при подключении?

          1. erik

            при включении ардуино мотор пищит, в приложении показывает ошибку подключения

          2. arduino Автор записи

            Нужно нормальное питание. Мотор от USB не поедет ) Питания не хватает блютус модулю, вот и не подключается.

          3. erik

            другие приложения подключаются, а через которое делали вы, не подключается

          4. arduino Автор записи

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

          5. arduino Автор записи

            Тогда затрудняюсь ответить, так, не глядя на то, что вы сделали. Могу ещё порекомендовать проверить правильность подключения всех модулей, убедиться, что питания действительно достаточно, что батарейка или аккумулятор не разряжены, перезагрузить телефон, попробовать самому написать скетч и создать приложение в Romote XY.

          6. erik

            подключился к приложению, но мотор не хочет работать, я так понимаю мотор надо подключать к 2 и 3 пину?

          7. arduino Автор записи

            Погуглите, как на МХ1508 подключать мотор с Ардуиной, инфы достаточно. Кстати, забыл сказать, на МХ1508 не получится управлять скорость вращения моторов, только назад и вперёд будет ездить с одной скоростью.

      1. erik

        То что не будет регулировать скорость, это ничего. Но вот к каким пинам подключить?

        1. arduino Автор записи

          #define PIN_FORWARD 2 // Пины подключения L298N к Arduino.
          #define PIN_BACK 4
          #define PIN_SPEED 3

          2 и 4 порты Ардуино — это вперёд и назад, соответственно. К ним подключаете регулятор. 3 порт — скорость, вы его не используете.

  3. Антон

    Здравствуйте, отличный и одновременно достаточно простой проект! Только подскажите пожалуйста,как Вы регулировали Угол Аккермана? Или он здесь не учитывается? Хотя я вижу на фото что колеса при повороте стоят Не параллельно, как вообще и должно быть,ведь каждое колесо описывает свою окружность каждая своего радиуса,при повороте.Но я здесь не заметил каких-то приспособ для этого, раскройте пожалуйста свой секрет!))

    1. arduino Автор записи

      Здравствуйте! В этом проекте угол Аккермана не учитывается. Решил не заморачиваться на этом, чтобы не усложнять, да и нужды в этом не было.

      1. Антон

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

        1. arduino Автор записи

          Да, простота залог успеха ) Всегда стремлюсь упростить свои проекты, насколько возможно.

          1. Дмитрий

            при компиляции выбивает ошибку

            ‘RemoteXY_Init’ was not declared in this scope

          2. arduino Автор записи

            Привет! Попробуйте скетч заново взять с нашего источника в статье. Похоже в нём ошибка у вас.

          3. Дмитрий

            хмм, загрузил еще раз, название архива и всех файлов тоже самое, но все заработало, спасибо

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *