Управление голосом с помощью Raspberry Pi и Bluetooth


В данной статье мы рассмотрим управление светодиодами с помощью голосовых команд, подаваемых с помощью смартфона. Данные голосовые команды со смартфона будут поступать на модуль Bluetooth, подключенный к плате Raspberry Pi, которая будет выполнять задачи в соответствии с поступившими командами. В этом проекте светодиоды можно заменить на реле и с помощью этого реализовать любой из проектов автоматизации дома, ранее рассмотренных на нашем сайте.

Внешний вид проекта управления голосом с помощью Raspberry Pi и Bluetooth

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Bluetooth модуль HC-06 (купить на AliExpress).
  3. Резистор 100 Ом – 3 шт. (купить на AliExpress).
  4. Светодиоды (синий, красный, зеленый) (купить на AliExpress).
  5. Источник питания.
  6. Смартфон с операционной системой Android.
  7. Ethernet кабель.
  8. Макетная плата.
  9. Соединительные провода.

Bluetooth модуль

Bluetooth модуль состоит из модуля последовательного интерфейса Bluetooth и Bluetooth адаптера (переходника). Модуль последовательного интерфейса Bluetooth используется для преобразования последовательного порта в Bluetooth.

Внешний вид подключения Bluetooth модуля HC-06 к плате Raspberry Pi

Вы можете использовать Bluetooth модуль сразу после того как вы купили его в магазине, не изменяя его настройки по умолчанию, в этом случае его скорость работы будет равна 9600 бод. Вам будет необходимо просто соединить его контакты rx и tx с соответствующими контактами микроконтроллера и подать на него питающее напряжение 5 В постоянного тока.

Bluetooth модуль может работать в двух режимах: режим ведущего (master mode) и режим ведомого (slave mode). Вид его режима работы можно выбрать с помощью AT команд.

При ручном конфигурировании Bluetooth модуля первым делом необходимо задействовать AT режим со скоростью 38400 бод при помощи нажатия кнопки EN на модуле или при помощи подачи уровня HIGH на его контакт EN. После этого после подачи каждой AT команды он должен отвечать вам OK.

Примечание: все команды, подаваемые на Bluetooth модуль, должны заканчиваться символами \r\n (0x0d и 0x0a) или нажатием клавиши ENTER на клавиатуре.

К наиболее часто используемым AT командам можно отнести следующие:

AT+ROLE=0 – выбор режима ведомого (Slave Mode select)
AT+ROLE=1 – выбор режима ведущего (Master Mode select)
AT+NAME=xyz – установка имени для Bluetooth-соединения
AT+PSWD=xyz – установка пароля для Bluetooth-соединения
AT+UART=<value1>,<value2>,<value3> – установка бодовой скорости
Eg. AT+UART=9600,0,0

Назначение контактов (распиновка) Bluetooth модуля HC-06:

  • EN — управление питанием;
  • VCC — питание от 3,6 до 6 В;
  • GND — земля;
  • RX, TX — интерфейс UART;
  • STATE — индикация работы;
  • KEY — активация режима управления с помощью AT-команд.

Внешний вид и распиновка Bluetooth модуля HC-06

Объяснение работы проекта

Принцип работы нашего проекта голосового управления достаточно прост. В проекте мы использовали светодиоды трех разных цветов: красного, зеленого и синего. Bluetooth модуль HC-06 используется для приема голосовых команд от смартфона в виде строк. Плата Raspberry Pi будет принимать эти приходящие строки от Bluetooth модуля и сравнивать их с заранее определенными (хранящимися в памяти) образцами строк. На основе результата сравнения она будет выполнять соответствующие задачи.

Для передачи голосовых команд с помощью смартфона мы будем использовать приложение AMR Voice (Android Meets Robots: Voice Recognition), доступное для смартфонов на операционной системе Android.

Приложение AMR Voice можно непосредственным образом скачать и установить из Google Play Store. Также для этого проекта вам необходимо будет установить приложение Google Voice. На вход приложения AMR Voice поступает голос, который она преобразует в строку текста используя встроенные в смартфон внутренние способы распознавания речи (приложение Google Voice) и передает эту строку текста последовательно с помощью протокола Bluetooth.

Внешний вид приложения AMR Voice

После скачивания и установки приложения AMR voice зайдите в его меню настроек и подключите его к Bluetooth модулю нажав на кнопку ‘Connect Robot’ как показано на следующем рисунке.

Подключение к Bluetooth модулю Bluetooth соединение установлено

После этого пользователь может нажать на значок микрофона на экране приложения и начать говорить заранее определенные голосовые команды для управления светодиодами:

1. “blue light on” (включить светодиод синего цвета)
2. “blue light off” (выключить светодиод синего цвета)
3. “red light on” (включить светодиод красного цвета)
4. “red light off” (выключить светодиод красного цвета)
5. “green light on” (включить светодиод зеленого цвета)
6. “green light off” (выключить светодиод зеленого цвета)
7. “all lights on” (включить все светодиоды)
8. “all lights off” (выключить все светодиоды)
9. “blink” (все светодиоды начнут мигать с задержкой 100 мс)

Приложение AMR voice готово к записи голоса

После этого приложение AMR voice будет записывать ваш голос и передавать его приложению Google Voice чтобы преобразовать его в формат текстовой строки. Эта текстовая строка будет передаваться плате Raspberry Pi с помощью Bluetooth модуля. Плата Raspberry Pi будет считывать эту строку с помощью своего последовательного порта (UART port) и сохранять ее в строковой переменной. После этого она будет сравнивать ее с заранее определенными образцами строк. Если фиксируется совпадение строк, то плата Raspberry Pi выполняет соответствующие действия.

Схема проекта

Схема подключения Bluetooth модуля HC-06 к плате Raspberry Pi для голосового управления светодиодами представлена на следующем рисунке.

Схема подключения Bluetooth модуля HC-06 к плате Raspberry Pi для голосового управления светодиодами

Схема содержит плату Raspberry Pi 3 (можно использовать любую другу плату Raspberry Pi), светодиоды и Bluetooth модуль HC-06. Плата Raspberry Pi будет считывать информацию с Bluetooth модуля и управлять светодиодами. Светодиоды синего, красного и зеленого цвета подключены к контактам GPIO 17, 27 и 22 плату Raspberry Pi. Контакты Rx и Tx Bluetooth модуля подключены к контактам Tx и Rx платы.

Настройка Raspberry Pi для данного проекта

Для написания программы для данного проекта (полный ее текст приведен в конце статьи) мы будем использовать язык программирования Python. Подробнее о работе с ним можно прочитать в статье про мигание светодиода с помощью Raspberry Pi.

После этого необходимо загрузить последние обновления для операционной системы Raspberry Pi OS с помощью команд:

sudo apt-get update
sudo apt-get upgrade

После этого необходимо установить Raspberry Pi GPIO development tool, это можно сделать с помощью следующих команд:

sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio

Вид процесса установки Raspberry Pi GPIO development tool

Далее необходимо сконфигурировать последовательный порт  Raspberry Pi. В этом проекте мы использовали плату Raspberry Pi 3 и поэтому настройку последовательного порта произвели на ее примере – для других плат настройка может немного отличаться.

Для платы Raspberry Pi 3 пользователю необходимо отключить логин консоли (console login) через последовательный порт, при помощи инструмента RPi Software Configuration Tool. Откройте его с помощью следующей команды:

sudo raspi-config

Затем зайдите в ‘Advance Options’ (продвинутые настройки), выберите ‘Serial’, а потом ‘Disable’ (отключить).

Меню расширенных настроек в плате Raspberry Pi

Отключение логина консоли (console login) через последовательный порт

После этого нам необходимо отключить встроенный Bluetooth платы Raspberry Pi 3 при помощи добавления инструкции dtoverlay=pi3-miniuart-bt в конец файла /boot/config.txt:

sudo nano /boot/config.txt

Отключение встроенного Bluetooth платы Raspberry Pi 3

После добавления данной строки необходимо перезагрузить плату Raspberry Pi при помощи соответствующей команды sudo reboot.

И, наконец, снова залогиньтесь в Raspberry Pi и сконфигурируйте файл /boot/comline.txt.

sudo nano /boot/comline.txt

Отредактируйте данный файл следующим образом:

dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Внесение изменений в файл /boot/comline.txt

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

Исходный код программы на Python

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
511 просмотров

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

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