
Пошаговая инструкция по сборке радиоуправляемой машинки на Arduino с модулем HC-05 и драйвером L298N. Управление со смартфона через Bluetooth.
Радиоуправляемая машинка, собранная своими руками и управляемая со смартфона, -- один из самых зрелищных и мотивирующих Arduino-проектов. Он объединяет механику, электронику и программирование в одном устройстве. Ученик работает с беспроводной связью Bluetooth, управлением двигателями через H-мост, обработкой последовательных команд и основами робототехники.
Мы будем использовать модуль HC-05 для приёма команд со смартфона и драйвер L298N для управления четырьмя DC-моторами. Команды отправляются из бесплатного мобильного приложения и обрабатываются скетчем на Arduino в реальном времени.
Уровень сложности: средний-высокий, подходит для 8-10 классов.

Подключение Bluetooth-модуля HC-05:
| HC-05 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| TXD | пин 0 (RX) |
| RXD | пин 1 (TX) |
Критически важно: при загрузке скетча в Arduino отсоедините провода от модуля HC-05. Пины 0 и 1 используются для USB-связи с компьютером, и подключённый Bluetooth-модуль помешает загрузке. Подключайте HC-05 только после успешной загрузки программы.
Подключение драйвера L298N:
| L298N | Назначение |
|---|---|
| IN1 | пин 9 Arduino |
| IN2 | пин 10 Arduino |
| IN3 | пин 11 Arduino |
| IN4 | пин 12 Arduino |
| ENA | перемычка (макс. скорость) |
| ENB | перемычка (макс. скорость) |
| OUT1-OUT2 | Левые моторы |
| OUT3-OUT4 | Правые моторы |
| +12V | Плюс аккумулятора |
| GND | Минус аккумулятора и GND Arduino |
| LED (+) | пин 13 Arduino |

Левые два мотора подключаются параллельно к выходам OUT1-OUT2, правые два -- к OUT3-OUT4. Перемычки ENA и ENB оставляем на месте -- моторы будут работать на максимальной скорости. Обязательно соедините GND Arduino с GND драйвера -- без общей земли система не будет функционировать.
Закрепите четыре мотора с колёсами на шасси -- по два с каждой стороны. Arduino и драйвер L298N установите на платформу сверху. Аккумулятор можно разместить снизу для лучшего баланса. Проложите провода аккуратно, следя за тем, чтобы они не попадали в колёса и не натягивались при повороте.
Совет: используйте стяжки или двусторонний скотч для фиксации компонентов. Это проще и быстрее, чем болты, и позволяет легко перекомпоновать конструкцию.
```cpp
// Bluetooth-машинка на Arduino
// Управление со смартфона через модуль HC-05
// Команды: F-вперёд, B-назад, L-влево, R-вправо, S-стоп
// Пины управления моторами через L298N
const int IN1 = 9; // левые моторы -- направление
const int IN2 = 10; // левые моторы -- направление
const int IN3 = 11; // правые моторы -- направление
const int IN4 = 12; // правые моторы -- направление
// Пин светодиода (фары)
const int LED_PIN = 13;
// Переменная для хранения принятой команды
char command;
void setup() {
// Запускаем последовательную связь на 9600 бод
// HC-05 по умолчанию работает на этой скорости
Serial.begin(9600);
// Настраиваем пины моторов как выходы
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// Пин светодиода
pinMode(LED_PIN, OUTPUT);
// Всё выключено при старте
stopCar();
digitalWrite(LED_PIN, LOW);
}
// Остановка -- все пины в LOW
void stopCar() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
// Движение вперёд -- оба мотора крутятся в одну сторону
void moveForward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
// Движение назад -- оба мотора крутятся в обратную сторону
void moveBackward() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
// Поворот влево -- правые моторы вперёд, левые стоят
void turnLeft() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
// Поворот вправо -- левые моторы вперёд, правые стоят
void turnRight() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void loop() {
// Проверяем, пришли ли данные по Bluetooth
if (Serial.available() > 0) {
command = Serial.read();
// Обрабатываем полученную команду
switch (command) {
case 'F': // вперёд (Forward)
moveForward();
break;
case 'B': // назад (Backward)
moveBackward();
break;
case 'L': // поворот влево (Left)
turnLeft();
break;
case 'R': // поворот вправо (Right)
turnRight();
break;
case 'S': // стоп (Stop)
stopCar();
break;
case 'W': // включить фары
digitalWrite(LED_PIN, HIGH);
break;
case 'w': // выключить фары
digitalWrite(LED_PIN, LOW);
break;
default:
// Неизвестная команда -- останавливаемся
stopCar();
break;
}
}
}
`
Связь через Serial. Bluetooth-модуль HC-05 подключён к аппаратному UART (пины 0 и 1). С точки зрения Arduino, данные от HC-05 приходят так же, как и от USB-компьютера -- через Serial. Функция Serial.available() проверяет, есть ли непрочитанные байты, а Serial.read() считывает один символ.
Протокол команд. Мы используем простейший протокол: один символ -- одна команда. Буква F означает движение вперёд, B -- назад, L и R -- повороты, S -- остановка. Этот протокол совместим с большинством бесплатных Bluetooth-контроллеров из Google Play и App Store, таких как Arduino Bluetooth Controller или BotDrive.
Управление моторами через H-мост. Драйвер L298N содержит два H-моста, каждый управляет парой моторов. Направление вращения определяется комбинацией сигналов HIGH и LOW на входах IN1-IN4. Для движения вперёд: IN1=HIGH, IN2=LOW (левые), IN3=HIGH, IN4=LOW (правые). Для заднего хода все сигналы инвертируются.
Механика поворотов. Поворот реализован дифференциальным способом: для поворота влево останавливаются левые моторы, а правые продолжают крутиться. Машинка плавно разворачивается вокруг неподвижной стороны. Это простой и надёжный способ поворота для четырёхколёсной платформы.
Настройка мобильного приложения. Установите на смартфон приложение Arduino Bluetooth Controller. Включите Bluetooth, выполните сопряжение с модулем HC-05 (пароль по умолчанию: 1234 или 0000). В приложении назначьте кнопкам направлений символы F, B, L, R, а кнопке «стоп» -- символ S.
Машинка не двигается после подключения. Убедитесь, что аккумулятор заряжен. Слабый источник питания -- самая частая причина проблем. Проверьте все контакты на драйвере L298N -- они должны быть надёжно зафиксированы.
Машинка едет не в ту сторону. Если при команде «вперёд» машинка едет назад, поменяйте местами провода на обоих моторах. Если машинка поворачивает не в ту сторону, поменяйте провода только на одной паре моторов.
Один мотор крутится быстрее другого. Это нормально для дешёвых DC-моторов. Для компенсации замените перемычки ENA/ENB проводами к ШИМ-пинам Arduino и регулируйте скорость каждой стороны отдельно через analogWrite().
Загрузка кода не проходит. Отключите провода от HC-05 перед загрузкой. Bluetooth-модуль занимает пины Serial и конфликтует с USB-программатором.
Добавьте ультразвуковой датчик HC-SR04 на переднюю часть шасси для автоматического объезда препятствий. Реализуйте регулировку скорости через ШИМ -- передавайте цифры 1-9 как уровни скорости. Подключите сервопривод для поворота датчика и сканирования пространства впереди. Можно добавить инфракрасные датчики снизу и реализовать режим следования по чёрной линии.
В каталоге Alashed Hardware вы найдёте полные наборы для сборки Bluetooth-машинки: шасси с моторами и колёсами, драйвер L298N, модуль HC-05, Arduino Uno и аккумулятор -- всё в одной коробке с инструкцией. Среда Alashed CodeStudio позволяет загружать скетчи в Arduino прямо из браузера и использовать встроенный Serial Monitor для отладки Bluetooth-команд, что делает сборку и программирование доступными даже без установки Arduino IDE.
Подключите школу к пилоту. Генерируйте КМЖ за 2 минуты, ведите CodeStudio уроки, заказывайте оборудование — всё в одном месте.