Самая простая машинка на Arduino с дистанционным управлением со смартфона по Bluetooth. Лёгкая схема, простой скетч. Едет на двух электромоторах, питается от кроны. Рама, на которой всё держится, изготавливается из подручных материалов и ограничивается лишь фантазией.
Вам будет интересно: Bluetooth машинка на Arduino с поворотными колёсами на 3D принтере.
Комплектующие
- Arduino Uno — https://bit.ly/2P3rCI5
- драйвер моторов L298N — https://bit.ly/3dvbDMg
- Bluetooth модуль HC-06 или HC-05 или подобный — https://bit.ly/3x4nhFX
- моторы постоянного тока с редуктором и с колёсами — 4 шт — https://bit.ly/2P4e9Qr
- провода папа-папа, мама-мама, папа-мама 10-30 см — https://bit.ly/3n3z0jl
- аккумулятор 9В, я использовал с разъёмом micro-USB для зарядки — https://bit.ly/2QeFbF6
- зажим для аккумулятора 9В — https://bit.ly/32rmwZi
- тумблер — 1 шт — https://bit.ly/3artZfr
Для изготовления рамы машинки можно использовать разнообразные материалы:
- листовой лёгкий материал, который легко обрабатывать — оргстекло, фанера, текстолит, оргалит и т.п.
- третье колесо, которое будет опорным — оно должно уметь ехать во всех стороны (хорошо подходят мебельные колёсики);
- крепёжные элементы — болты, гайки, шурупы.
Схема подключения

Питание платы берётся от «Кроны» и подаётся на Arduino через пины VIN и GND. Также подаётся отдельно на драйвер двигателей через порты +12V и GND.
Blutooth модуль HC-06 получает питание в 3,3 вольта от Arduino. Если подключить к 5 вольтам, то тоже работает нормально. Выход RX модуля подключается к TX на Arduino, а TX — в RX, то есть наоборот.
На драйвере двигателей нужно снять две боковые перемычки — Enable. Пины под ними позволят нам управлять скоростью вращения двигателей. И эти пины подключаются к Arduino обязательно к ШИМ-портам (обозначенные знаком ~). На схеме это порты 3 и 5.
Питание моторов подаётся на Input драйвера от Arduino с портов 2 и 4, 6 и 7. А сами моторы подключаются к Output A и Output B драйвера.

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

Если при движении вперёд машинка едет назад, то нужно поменять местами провода Output обоих двигателей (хотя, кто знает, где у ней перед, а где зад…).

Если при повороте налево, машинка едет направо, то нужно поменять местами Output A и Output B.

Если подключить всё по схеме, то скетч переделывать не нужно будет.
Скетч
Перед прошивкой обаятельно отключите питание у Blutooth модуля. Для этого надо просто отсоединить один из его проводов питания.
В скетче прописанные необходимые поясняющие комментарии.
Движение и остановка колёс осуществляется за счёт функций. А в дальнейшем нужные комбинации функций просто вызываются в нужных местах кода одной строкой. Получается просто и компактный код. Ниже фрагмент кода примером двух таких функций:
void rightWheelForward () { // Правое колесо вперёд.
digitalWrite (motorRight1, LOW);
digitalWrite (motorRight2, HIGH);
analogWrite(enableRight, motorSpeed);
}
void leftWheelForward () { // Левое колесо вперёд.
digitalWrite (motorLeft1, LOW);
digitalWrite (motorLeft2, HIGH);
analogWrite(enableLeft, motorSpeed);
}
Со смартфона приложение по Bluetooth посылает сигналы в виде латинских букв (W, S, E и т.д.). В зависимости от пришедшей команды, с помощью оператора if, вызываются комбинации тех или иных функции. Если вы будете использовать другое приложение, не то, которое я предоставлю ниже, то оно будет посылать другие команды, другие буквы. Соответственно, придётся переписать их в скетче.
Например, когда по Bluetooth приходит ‘ W ‘ вызываются две функции rightWheelForward (); и leftWheelForward (); что заставит оба мотора крутится вперёд.
if (control == 'W') { // Ехать вперёд.
rightWheelForward ();
leftWheelForward ();
}
А если приходит ‘E’, то вызываются функции rightWheelStop (); и leftWheelForward (); что заставит остановиться правый мотор и вращаться вперёд только левый, от чего машинка поведет вперёд вправо.
if (control == 'E') { // Повернуть направо вперёд.
rightWheelStop ();
leftWheelForward ();
}
Есть три вида скорости, которые включаются, когда приходят команды ‘1’, ‘2’ и ‘3’. Скорость можно задавать от 0 до 250. На каждую и трёх команд в скетче прописаны скорости 120, 170 и 250, соответственно.
Если у вас уровень заряда аккумулятора уже на исходе, то при скорости 120 может не поехать или поехать, но не стабильно. Тогда лучше увеличить значение для первой скорости.
Скорость приходит в виде переменной motorSpeed в функцию analogWrite() и запускает двигатель с заданными оборотами.
Приложение
Так как я не владею навыком написания приложение под Anroid, то для создания пульта управления использовать уже известный у многих начинающих разработчиков инструмент визуального программирования — App inventor.
Что-то подсмотрел у других в интернете, что доработал, и получилось такое простое приложение.

Сначала нужно включить машинку и сделать сопряжение по Bluetooth со смартфоном. Пароль модуля 0000 или 1234. После этого откройте приложение и нажмите «Подключиться к машинке». Подключитесь к модулю HC-06. Светодиод на нём должен перестать мигать.
Если сразу начать нажимать на стрелки направлений движения, то не поедет. В первую очередь нужно нажать на одну из трёх скоростей, а уже потом на стрелки направления. Тогда поедет.
И, так как я не публиковал это приложение в Google Play, смартфон может ругаться на его безопасность. Но можно смело устанавливать. В нём всё работает безопасно.
Сборка
Можно купить готовое шасси для машинки сразу вместе с моторами и колёсами. Останется только установить электронику и всё подключить.
Но намного интереснее создать это самому. Для изготовления подойдёт любой листовой материал, который вам будет легко обрабатывать, и который достаточно лёгкий. Например, оргалит, текстолит, фанера. Я выбрал оргстекло, что сделало мою машинку даже очень похожей на шасси из магазина.
Из инструментов могут понадобиться:
- Ручной или электрический лобзик (я пользовался ручным), чтобы отрезать нужные куски от материала.
- Дрель или шуроповёрт, свёрла.
- Крепёжные элементы — болты, гайки и саморезы любого подходящего диаметра.
Получилось дёшево и сердито. А главное работает.
Паять я тоже ничего не стал, чтобы потом можно было бы легко разобрать эту машинку и модернизировать. Припаивал только провода к моторам.
В магазинном наборе для крепления моторов используются специальный кронштейны, к которым сам мотор прикручивается болтами диаметром 3 мм. Но болтов нужного диаметра и длины у меня не оказалось, хоть и можно было изготовить аналогичный кронштейн. Поэтому пришлось изощряться и использоваться даже детали детского конструктора, чтобы надёжно прикрепить моторы. На видео крепление моторов рассмотрено лучше.
Платы в идеале лучше прикручивать короткими болтами с диаметром 3 мм. Но и таких у меня не оказалось. Поэтому пришлось делать в оргстекле отверстия 2 мм и прикручивать платы саморезами. Держится вполне нормально.
У модуля Bluetooth особая проблема крепления — там отверстий для крепления нет вообще. Пришлось прижимать плату к раме другой деталью из оргстекла. Тут главное не сжать слишком сильно, чтобы не повредить.

Аккумулятор крепится аналогично Bluetooth модулю, только снизу.
И обязательно прикручиваем мебельное поворотное колесо, которое станет опорным, и не будет приводным. Следите за тем, чтобы вся конструкция была в горизонтальном положении, когда стоит на всех трёх колёсах.
круто. по больше бы
Здравствуйте, можете подсказать в чем может быть проблема, телефон коннектится с машинкой, но она не едет, все собрано точно по схеме, питание 2 аккумулятора 16340?
Здравствуйте! Два аккумулятора по 3,7 вольт, полагаю, не хватает для питания двух таких моторов.
Напрямую аккумуляторы хорошо крутят оба мотора
Надо тогда в мониторе порта посмотреть, приходят ли от блютуза сигнал в ардуину.
Диод TX мигает при нажатии команд в приложении
Проверить ещё можно правильность подключения управляющих проводов к драйверу моторов, сам драйвер — тестером замерьте напряжение на выходах драйвера, куда подключаете моторы, в момент, когда подаёте сигнал ехать. И, всё-таки, я бы питания добавить попробовал.
Здравствуйте а можете прислать мне полный скетч на андроид?
Здравствуйте! Скетч на Android? Не знаю, что это ) Скетч на Arduino есть в статье.
Здравствуйте, У меня получилось собрать робота по вашей инструкции. Но у меня появилась проблема в движении назад. При команде назад, колеса не двигаются(
Хотел бы увидеть ваш код приложения который вы предоставили нам. Заранее спасибо.
Здравствуйте! Все исходники даются в статье. Если htm о мобильном приложении, то оно делалось в визуальном редакторе, а не с помощью кода.
Здравствуйте! Вам надо проверить правильность подключения к пинам Arduino и соответствие распиновки скетчу. Возможно, сигнал для вращения назад подаётся на один пин, а вы подключили к другому.
а тумблер обязательно?
Не обязательно, если удобен какой-то другой способ отключения от питания.
Здраствуйте, как думаете почему приложение не находит мой модуль
Здравствуйте! Убедитесь, что блютуз-модуль исправен — попробуйте к другому телефону подключить.
здравствуйте как мне переделать программу для драйвера мх1508?
Здравствуйте! С моим скетчем должно работать, но скоростью моторов нельзя будет управлять.