Голосовой робот на Arduino Nano: Управление речью через Bluetooth
Компоненты и материалы
| Arduino Nano R3 | 1 |
| Драйвер двигателей L298N | 1 |
| Bluetooth-модуль HC-05 | 1 |
| DC-моторы с колесами | 2 |
| Многофункциональная робот-плата (PCB) | 1 |
| Пиновые заголовки (мамины/папины) | несколько |
Инструменты
- Клеевой пистолет
Приложения и сервисы
- Arduino IDE
- Android-приложение для распознавания речи (своего разработки)
О проекте
Роботы — это круто. Робот, который ездит и слушается голосовых команд — еще круче. Сделать такого голосового робота на Arduino — максимально круто, потому что Arduino дешевы и легко настраиваемы.
Шаг 1: Необходимые детали
Электроника:
- Arduino Nano — 1 шт.
- Драйвер двигателей L298N — 1 шт.
- Bluetooth HC-05 — 1 шт.
- DC-моторы с колесами — 2 шт.
- Многофункциональная робот-ПCB — 1 шт. (ссылка)
- Пиновые заголовки
Для корпуса:
- ПВХ-лист
- Клеевой пистолет
Софт:
- Arduino IDE
- Своё Android-приложение
Шаг 2: Принцип работы
Arduino — это микроконтроллер, у него недостаточно мощности для распознавания речи. Но моя PCB имеет порт для Bluetooth, значит, можно связать Arduino беспроводно с другими устройствами. Я использую это: делаю Android-приложение, которое выполняет "Speech to Text" через Google API (нужен интернет), а затем передает текст Arduino по Bluetooth.
Если я говорю "Forward" (вперед), робот получает 'F' и едет вперед. Вот концепция. Делаем.
Шаг 3: Корпус
Корпус сделал из ПВХ-листа 13x13.5 см. Легко режется ножом и хорошо клеится. Вырезал детали для двух моторов и колес внутри области платы и склеил. Ваш робот — ваш выбор, копировать точно не обязательно.
Шаг 4: Схема или PCB?
Можно собрать на макетке, но много проводов и одна ошибка может всё сломать. Поэтому я использую PCB. Разработал в EasyEDA, заказал на PCBWay.com — качество дешево (10 плат за $5). Также спонсируют студенческие проекты.
Если не можете заказать PCB — соберите на макетке или вероборде. Файл схемы Fritzing прилагается (speech-controlled-robot-schematic.fzz).
Шаг 5: Подключение электроники
Моторы к драйверу:
- Мотор 1 → один конец драйвера
- Мотор 2 → другой конец
Управление моторами (входы L298N):
- Мотор 1 → Arduino пины 2 и 3 (digital)
- Мотор 2 → пины 4 и 5
Bluetooth HC-05:
- Tx → Arduino Rx
- Rx → Arduino Tx
- VCC → 5V
- GND → GND
Питание:
Использовал 7.4В батарею для моторов — на вход драйвера и на VIN+GND Arduino. Общая земля обязательна.
Шаг 6: Программирование Arduino
Простая программа: проверяет принятые символы и управляет моторами:
- 'F' — Вперед
- 'B' — Назад
- 'L' — Влево
- 'R' — Вправо
Bluetooth на Serial порту, скорость 9600 бод.
Полный код
/**** Arduino Speech/Voice Controlled Robot ***
* by Ashraf Minhaj
* mail: ashraf_minhaj@yahoo.com
* tutorial: ashrafminhajfb.blogspot.com
*/
int lm1 = 4; // левый мотор
int lm2 = 5;
int rm1 = 2; // правый мотор
int rm2 = 3;
char val;
void setup() {
pinMode(lm1, OUTPUT);
pinMode(lm2, OUTPUT);
pinMode(rm1, OUTPUT);
pinMode(rm2, OUTPUT);
Serial.begin(9600);
}
void loop() {
while(Serial.available() == 0);
val = Serial.read();
// Serial.print(val);
// Вперед
if (val == 'F') {
digitalWrite(lm1, HIGH);
digitalWrite(rm1, HIGH);
digitalWrite(lm2, LOW);
digitalWrite(rm2, LOW);
}
// Назад
else if(val == 'B') {
digitalWrite(lm2, HIGH);
digitalWrite(rm2, HIGH);
digitalWrite(lm1, LOW);
digitalWrite(rm1, LOW);
}
// Вправо
else if(val == 'R') {
digitalWrite(lm1, HIGH);
digitalWrite(rm2, HIGH);
digitalWrite(lm2, LOW);
digitalWrite(rm1, LOW);
}
// Влево
else if(val == 'L') {
digitalWrite(lm2, HIGH);
digitalWrite(rm1, HIGH);
digitalWrite(lm1, LOW);
digitalWrite(rm2, LOW);
}
// Стоп
else {
digitalWrite(lm1, LOW);
digitalWrite(rm1, LOW);
digitalWrite(lm2, LOW);
digitalWrite(rm2, LOW);
}
delay(10);
}
Шаг 7: Приложение для Speech-to-Text
Приложение сделано в MIT App Inventor. Можно редактировать под свои нужды. Файл .aia доступен по ссылке.
Использует Bluetooth для управления. Нужно спарить HC-05 с телефоном (пароль по умолчанию 1234 или 0000).
Приложение использует Google Speech-to-Text API для преобразования речи в текст. Приводит к нижнему регистру для простоты обработки. Сравнивает через if-else: если пользователь сказал "forward" — отправляет Arduino 'F', робот едет вперед.
Собираем APK, устанавливаем на телефон.
Шаг 8: Запуск!
Подключаем батарею, запускаем приложение и играемся с новым роботом!
Спасибо за чтение. Посмотрите мой последний проект — ...
Схемы
Файл схемы Fritzing: speech-controlled-robot-schematic_hUoWKpapKe.fzz
Производственный процесс
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
- Построение робота с голосовым управлением на Windows 10 IoT Core на Raspberry Pi 2
- Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство
- Превращаем старую радиоуправляемую машину в джойстик-контролируемый болид на Arduino
- Автономный линий-следующий робот на Arduino UNO
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- Управление манипулятором по Ethernet: Arduino 101 + WIZ750SR + Android-приложение
- MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
- PiBot: Робот-пианист на Arduino для точного исполнения музыки