Голосовое управление Arduino-машинкой по Bluetooth (BLE/HC-05) — DIY
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino UNO | 1 |
| Макетная плата | 1 |
| DC-моторы с редуктором (колёса) | 2 |
| Рама шасси | 1 |
| Стабилизатор напряжения LM7805 (5V) | 1 |
| Драйвер моторов L293D (Dual H-Bridge) | 1 |
| Батарея 12V (или аккумуляторный пак) | 1 |
| Перемычки | 1 набор |
| Bluetooth-модуль HC-05 (или BLE-модуль) | 1 |
Идея
Смартфон с приложением для голосового управления отправляет команды по Bluetooth на Arduino. Приложение преобразует речь в текст (например, "forward", "back", "left", "right") и передаёт строки, оканчивающиеся символом '#'. Arduino считывает символы из последовательного порта, собирает строку и сравнивает с командами. При совпадении — управляет моторами через L293D.
Подключение
Полная схема и фото: блог автора.
Кратко:
- L293D: пины управления (IN1-IN4) -> Arduino D11, D10, D5, D6 (PWM-пины для скорости). Выходы моторов (OUT1-OUT4) -> моторы. VCC2 (моторы) -> 12V батарея. VCC1 (логика) -> 5V от LM7805. GND — общая.
- HC-05: VCC -> 5V, GND -> GND, TX -> Arduino RX (D0), RX -> Arduino TX (D1) через делитель напряжения (1к/2к) на 3.3V.
- LM7805: вход 12V от батареи, выход 5V на Arduino (Vin или 5V пин) и логику L293D/HC-05. Нужен радиатор.
Скетч
int motor_in1 = 11; // Правый мотор +
int motor_in2 = 10; // Правый мотор -
int motor_in3 = 5; // Левый мотор +
int motor_in4 = 6; // Левый мотор -
String voice;
void setup() {
Serial.begin(9600);
pinMode(motor_in1, OUTPUT);
pinMode(motor_in2, OUTPUT);
pinMode(motor_in3, OUTPUT);
pinMode(motor_in4, OUTPUT);
}
void loop() {
// Чтение строки из Serial до символа '#'
while (Serial.available() > 0) {
delay(10);
char c = Serial.read();
if (c == '#') break;
voice += c;
}
if (voice == "forward") {
digitalWrite(motor_in1, LOW); digitalWrite(motor_in2, HIGH);
digitalWrite(motor_in3, LOW); digitalWrite(motor_in4, HIGH);
delay(5000);
}
else if (voice == "back") {
digitalWrite(motor_in1, HIGH); digitalWrite(motor_in2, LOW);
digitalWrite(motor_in3, HIGH); digitalWrite(motor_in4, LOW);
delay(5000);
}
else if (voice == "left") {
digitalWrite(motor_in1, LOW); digitalWrite(motor_in2, HIGH);
digitalWrite(motor_in3, HIGH); digitalWrite(motor_in4, LOW);
delay(800);
}
else if (voice == "right") {
digitalWrite(motor_in1, HIGH); digitalWrite(motor_in2, LOW);
digitalWrite(motor_in3, LOW); digitalWrite(motor_in4, HIGH);
delay(800);
}
if (voice.length() > 0) {
Serial.println(voice); // Эхо в монитор порта
voice = "";
// Стоп моторов
digitalWrite(motor_in1, LOW); digitalWrite(motor_in2, LOW);
digitalWrite(motor_in3, LOW); digitalWrite(motor_in4, LOW);
}
}
Приложение для смартфона
Ссылка на Google Play (указанная автором): https://play.google.com/store/apps/details?id=appinventor.ai_cempehlivan92.Arduino_Sesli_Kontrol (возможно, устарела). Альтернатива: любое приложение "Bluetooth Voice Control" или самописное на MIT App Inventor / Thunkable, отправляющее команды "forward#", "back#", "left#", "right#".
Улучшения и советы
- Используйте PWM (analogWrite) на пинах 11,10,5,6 для плавного регулирования скорости.
- Добавьте обработку ошибок связи и авто-стоп при потере сигнала.
- Для BLE (HM-10, AT-09) используйте
SoftwareSerialна других пинах, так как Hardware Serial занят USB. - Питание: 12V на моторы, 5V на логику. LM7805 может перегреваться — поставьте радиатор или используйте импульсный стабилизатор (UBEC).
- HC-05 настраивается AT-командами (имя, пароль, baud rate 9600).
Схемы
Ссылка на схему в описании проекта (блог автора). Файл схемы не приложен, но подключение стандартное для L293D + HC-05.
Производственный процесс
- Alexa-управляемый ARDrone 2.0: Голосовой дрон с Raspberry Pi и Hologram Nova
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- Создание рулетки на 37 светодиодов с Arduino Nano
- Превращаем старую радиоуправляемую машину в джойстик-контролируемый болид на Arduino
- Мини-аркада на ATtiny85: Snake — ручная OLED-консоль своими руками
- Портативный дальномер на Arduino Nano: HC-SR04, питание 18650, 3D-корпус
- MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
- Умный гидравлический кран с управлением через приложение – точность и простота
- Автономный робот-следопыт с распознаванием лиц на Arduino Nano и OpenCV
- PiBot: Робот-пианист на Arduino для точного исполнения музыки