Как иногда хочется, приходя домой с работы или магазина, усталому или попросту, если заняты руки, – скомандовать «Свет!» или «Включить чайник», ну или «Поставить музыку». И запрошенные действия выполнятся. Так как у среднего класса давно уже нет живых слуг, остается надеяться в подобных ситуациях только на технику. Можно использовать голосовое управление посредством Ардуино.
Как работает управление голосом?
Сама схема достаточно проста, ее основой служит микроконтроллер Arduino, который и будет обрабатывать сигнал от сенсора, производя в зависимости от поступившей команды, посредством исполняющей части, необходимое действие. Выбор именно его – ориентированность и модульность. Он наиболее полно вписывается в понятие «умный дом», позволяя расширять свои возможности практически безграничным количеством внешних модулей, удобной системой программирования и интерфейсным взаимодействием с компьютером.
С основой разобрались, осталось выбрать принцип функционирования самого распознавания голоса, а соответственно и вид сенсора. Их несколько:
- использовать связь с online – службами обработки голоса, наподобие Google или Yandex, с последующей реакцией контроллера на переданные результаты, причем в таком случае будет использоваться более «умное» устройство – посредник, компьютер или смартфон;
- распознавание голосовых фонем силами самого микроконтроллера;
- обработка звуковых сигналов дополнительным модулем, подключаемым к Arduino.
Понятно, что в первом случае наличие подключенного микрофона к самой плате контроллера не нужно. Достаточно будет или прямого присоединения интерфейсных проводов от компьютера, или использования дополнительного Bluetooth – модуля для обеспечения связи в случае смартфона. Последний вариант и будет рассмотрен.
Представленная схема голосового управления на базе Ардуино будет демонстративной, максимально быстрого изготовления. Но на ее основе уже можно создавать реальные системы обработки голосовых команд.
Что такое Arduino и для чего оно нужно?
Немного о контроллере «Arduino». В своей основе это специализированный компьютер, размещенный на чипе, который в свою очередь смонтирован на плате с удобным подключением внешних устройств, сенсоров и интерфейсной части.
Основное предназначение Arduino создание достаточно сложного высокоинтеллектуального оборудования силами непрофессионалов. Микроконтроллер в таких системах выполняет функцию обработки поступающих сигналов от сенсоров, разбор управляющих последовательностей, приходящих через интерфейсы и контролирующим узлом для подключаемых устройств.
Скорость работы процессора в такой системе относительно невелика, и редко в топовых модификациях превышает 16Мгц. Основное преимущество компоновки – на едином кристалле расположены все части полнофункционального компьютера: постоянная, перезаписываемая (flash) и оперативная память, контроллер ввода–вывода и сам процессор.
Инструкция по настройке голосового управления с помощью Arduino
Выбранная для демонстрации возможностей управления голосом при помощи Ардуино схема для изготовления своими руками будет зажигать, в зависимости от команды, светодиод определенного цвета.
Инструменты и материалы
Для сборки системы управления голосом необходимо следующее:
- сама плата микроконтроллера Arduino UNO;
- мини – схема HC-05, на которой разведен модуль связи bluetooth для ардуино;
- три резистора на 300-350 Ом;
- светодиоды разных цветов – 3 шт.;
- смартфон.
Порядок подключения комплектующих
Вначале необходимо подключить модульную плату, обеспечивающую связь по bluetooth, к ардуино. Контакт RXD от HC-05 присоединяем к клемме TXD контроллера, аналогичную модуля, с RXD Arduino. То есть, производим перекрестное подключение разъемов. Питание +3.3В и GND на сборке bluetooth подводится к аналогичным на плате контроллера.
Далее, подключаем исполнительный блок, управление голосом которым и будет осуществляться через ардуино. Общий контакт «земли» (GND) диодов соединяем с таким же на центральной плате. Потом каждый из светодиодов, второй ножкой, через резистор на 330 Ом с выходными цифровыми каналами контроллера (2-4).
Настройка параметров
Следующий скетч, основу контролирующей системы, необходимо загрузить в сам микроконтроллер:
#INCLUDE SoftwareSerial.h //возможно понадобится заменить одинарные кавычки на «<» и «>»
SOFTWARESERIAL BLU ( 0, 1 );
STRING VOICELONG;
INT GLED = 2; //Присоединен к контакту #2
INT YLED = 3; //Присоединен к контакту #3
INT RLED = 4; //Присоединен к контакту #4
VOID ALLON ( )
{
DIGITALWRITE ( RLED, HIGH );
DIGITALWRITE ( YLED, HIGH );
DIGITALWRITE ( GLED, HIGH );
}
VOID ALLOFF ( )
{
DIGITALWRITE ( RLED, LOW );
DIGITALWRITE ( YLED, LOW );
DIGITALWRITE ( GLED, LOW );
}
VOID SETUP ( )
{
SERIAL.BEGIN ( 9600 );
BLU.BEGIN ( 9600 );
PINMODE ( RLED, OUTPUT );
PINMODE ( YLED, OUTPUT );
PINMODE ( GLED, OUTPUT );
}
VOID LOOP ( )
{
WHILE ( SERIAL.AVAILABLE ( ) ) //Цикл чтения сигналов с bluetooth
{
DELAY ( 10 ); //Период ожидания чтения
CHAR A = SERIAL.READ ( ); //Читать из порта символ
IF ( A == # )
{
BREAK; //Выйти из цикла, если обнаружено «#»
}
VOICELONG += A;
}
IF ( VOICELONG.LENGTH ( ) > 0 )
{
IF ( VOICE == *POWER ON ALL LED )
{
ALLON ( );
}
ELSE IF ( VOICE == *POWER OFF ALL LED )
{
ALLOFF ( );
}
ELSE IF ( VOICE == *POWER ON RED )
{
DIGITALWRITE ( RLED, HIGH );
}
ELSE IF ( VOICE == *POWER ON YELLOW)
{
DIGITALWRITE ( YLED, HIGH );
}
ELSE IF ( VOICE == *POWER ON GREEN )
{
DIGITALWRITE ( GLED, HIGH );
}
ELSE IF ( VOICE == *POWER OFF RED )
{
DIGITALWRITE ( RLED, LOW );
}
ELSE IF ( VOICE == *POWER OFF YELLOW)
{
DIGITALWRITE ( YLED, LOW );
}
ELSE IF ( VOICE == *POWER OFF GREEN)
{
DIGITALWRITE ( GLED, LOW );
}
VOICELONG=; //Сбросить переменную
}
}
Коммуникация сделанной схемы и смартфона производится при поданном на нее питании и выборе в меню программы BT Voice Control (верхний правый угол) «подключить робота». Откроется окно со списком коммуникационного оборудования – в нем нужно найти и выбрать HC-05.
Вот и все. Можно работать. Команды используются те, которые прописаны в коде скетча. К примеру, сказанное голосом «POWER ON GREEN» – включит зеленый светодиод.
Особенности настройки Arduino для голосового управления
Так как мы русскоязычные, команды, отдаваемые на иностранном языке – не очень хорошая идея, даже для демонстрации. Можно заменить их на латиницу, где русский звук пишется английскими литерами. К примеру, если строку скетча
Else if (voice == *power on yellow)
заменить на
Else if (voice == *vkluchit geltuy)
то можно будет использовать голосовую команду «включить желтый». К сожалению, звучание латинского алфавита немного отличается от русского, поэтому тут нужно поэкспериментировать.