Найти в Дзене
Электроника, ESP32, Arduino

tinyML модуль АВТОНОМНОЕ голосовое управление (русский язык)

Да, так тоже можно было. Обычно, когда речь идет о распознавании чего-либо (речь, фото, номера на авто, жесты....) подразумеваются два варианта: Типичным примером такого решения является умная колонка. Сама она может распознать только 2-3 ключевых слова для пробуждения ("Алиса", "ОК Гугл"). Обработка основного диалога с пользователем производится где-то на удаленном сервере, и колонка выступает только в качестве посредника. Минусы: Как правило, это уже целый компьютер под управлением Windows/Linux + специализированное программное обеспечение. Специализированное ПО, как правило, требует мощных вычислительных ресурсов. Минусы: Гонять целый компьютер для управления простым роботом или освещением - удовольствие весьма сомнительное. Но мир не стоит на месте. метод машинного обучения, который объединяет облегченные и оптимизированные варианты машинного обучения. TinyML может быть реализован в системах с низким энергопотреблением (на микроконтроллерах) в целях выполнения автоматизированных з
Оглавление

Да, так тоже можно было. Обычно, когда речь идет о распознавании чего-либо (речь, фото, номера на авто, жесты....) подразумеваются два варианта:

1. Слабая аппаратная часть и обработка данных на удаленном сервере.

Типичным примером такого решения является умная колонка. Сама она может распознать только 2-3 ключевых слова для пробуждения ("Алиса", "ОК Гугл"). Обработка основного диалога с пользователем производится где-то на удаленном сервере, и колонка выступает только в качестве посредника.

Минусы:

  • при отсутствии Интернет-соединения, устройство превращается в "кирпич";
  • конфиденциальность: данные обрабатываются на стороннем ресурсе, а его могут взломать.

2. Мощная аппаратная часть и обработка данных локально.

Как правило, это уже целый компьютер под управлением Windows/Linux + специализированное программное обеспечение. Специализированное ПО, как правило, требует мощных вычислительных ресурсов.

Минусы:

  • высокая стоимость;
  • большое энергопотребление.
Ералаш -"батарейки забыл" Умные вещи - начало!
Ералаш -"батарейки забыл" Умные вещи - начало!

Гонять целый компьютер для управления простым роботом или освещением - удовольствие весьма сомнительное. Но мир не стоит на месте.

Tiny Machine Learning (или TinyML) -

метод машинного обучения, который объединяет облегченные и оптимизированные варианты машинного обучения. TinyML может быть реализован в системах с низким энергопотреблением (на микроконтроллерах) в целях выполнения автоматизированных задач.

Самостоятельное написание прошивки - задача нетривиальная и требует глубоких знаний. Но сейчас на рынке появились готовые модули, где самую сложную часть (написание кода) уже сделали разработчики.

Возможности одного из таких готовых решений и будут рассмотрены в этой статье.

tinyML-модуль: Голосовое управление роботом (русский язык)
tinyML-модуль: Голосовое управление роботом (русский язык)

Сердцем модуля является микроконтроллер ESP32-S3.

tinyML-модуль: Голосовое управление роботом (русский язык) на базе ESP32-S3
tinyML-модуль: Голосовое управление роботом (русский язык) на базе ESP32-S3

Модуль продается с предустановленным программным обеспечением.

tinyML-модуль: Голосовое управление роботом (русский язык) PIN-OUT
tinyML-модуль: Голосовое управление роботом (русский язык) PIN-OUT

ПО позволяет распознавать 11 голосовых команд.

-5

11 команда "Робот" также предназначена для вывода модуля из спящего режима, после чего устройство будет ждать голосовые команды пользователя.

Модуль также может выдавать голосовые ответы на команды (потребуется подключение динамика к разъему)

-6

RGB светодиод предназначен для отображения статуса.

-7

Если модуль распознал команду из списка, он повторяет её через внешний динамик и отправляет сигнал для управления роботом через один из трех интерфейсов на выбор:

  • UART (Передаётся длина в байтах и само слово русскими символами через пробел)
  • SPI (Передаётся длина в байтах и само слово русскими символами двумя транзакциями (длина - цифра, слово - массив)
  • I2C (Длина в байтах и само слово русскими символами двумя транзакциями (длина - цифра, слово - массив)

Подробная документация есть на GitHub, а мы попробуем подключить модуль и посмотрим, как он работает.

AI-модуль: Голосовое управление роботом​. С чего начать?

Модуль, завернутый в "пупырку", поставляется в картонной коробочке + инструкция со ссылкой на документацию.

-8

Впрочем, если у вас уже есть опыт работы с любыми Arduino-платформами, читать её совсем не обязательно.

Гребенки в комплекте нет, её нужно "добыть" и припаять самостоятельно.

-9

Для первой схемы потребуются:

  • плата Arduino (я буду использовать Aduino NANO);
  • USB кабель для подключения к компьютеру;
  • макетная плата;
  • макетные перемычки;
  • любой динамик.

Собираем схему:

-10

Плату Arduino NANO подключаем к компьютеру с помощью USB кабеля. Плату голосового управления питаем от платы Arduino NANO с выхода +5V. Данные с модуля будем забирать через интерфейс UART.

В теории данные можно забирать и через единственный для платы NANO аппаратный UART (ПИН RX), но поскольку этот же интерфейс используется и для заливки в плату кода, каждый раз при заливке прошивки придётся либо скидывать перемычку с RX, либо гасить питание модуля (потребуется дополнительная кнопка или выключатель).

Плата голосового управления у нас будет передатчиком (Transmitter(TX)), а Arduino NANO приемником (Receiver (RX)). С помощью библиотеки SoftwareSerial.h организуем на выводах D2/D3 программный Serial интерфейс.

Важно: модуль отдаёт данные через UART на скорости 115200!

-11

Полученные данные отправляем в аппаратный UART, и их можно будет посмотреть через программу "монитор порта", встроенную в среду Arduino IDE.

Код примера простой:

-12

После прошивки платы Arduino открываем монитор порта на скорости 115200 и будим плату голосового управления командой "Робот". Далее произносим голосом следующие команды:

  • Робот;
  • Старт;
  • Стоп;
  • Вправо;
  • Влево;
  • Вперёд;
  • Назад;
  • Домой;
  • Медленно;
  • Быстро;
  • Спать.
-13

Плата уверенно распознает 11 голосовых команд и отправляет их через интерфейс UART.

При входном напряжении 4.5V (столько у меня по факту на выходе USB) энергопотребление составляет 85mA.

-14

AI-модуль: Голосовое управление роботом. Управляем встроенным в Arduino светодиодом.

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

Напишем программу, которая при поступлении команды "Старт" будет включать встроенный светодиод, а при поступлении команды "Стоп" будет его выключать.

-15

Компьютер теперь будет нужен только для прошивки Arduino. Всю схему можно запитать от внешнего аккумулятора (Power Bank) через USB вход или отдельного источника питания с выходным напряжением 7-12V через вход Vin на плате Arduino.

-16

У меня в наличии есть аккумулятор с напряжением 7.4V

Услышав команду "старт", схема включит встроенный в Arduino светодиод.

-17

Услышав команду "стоп", схема выключит встроенный в Arduino светодиод.

-18

Повесив на 13 выход модуль реле, можно управлять голосом мощной нагрузкой (умная колонка на минималках, зато ей Интернет не нуж0н).

AI-модуль: Голосовое управление роботом. Управляем робоплатформой.

Основная целевая аудитория этого устройства - кружки робототехники, поэтому соберем тележку, которая будет управляться исключительно голосом.

-19

Выходы Arduino не обеспечивают достаточный ток для питания электромоторов, поэтому потребуется драйвер электромоторов. Я в качестве его буду использовать микросхему L293D

-20

Плата Arduino питается от АКБ (BT1) с напряжением 7.4V Модуль голосового управления питается с выхода +5V платы Arduino. Микросхема L293D также требует питания 5V.

-21

Робоплатформа содержит 4 мотор-редуктора. Правая и левая пары моторов подключены последовательно, что дает более плавное движение платформы. Моторы питаются через отдельную ножку на L293D непосредственно от АКБ.

-22

Выводы EN1 и EN2 позволяют управлять скоростью моторов с помощью широтно-импульсной модуляции (ШИМ). В этом простом примере я их не использую (на них необходимо подать лог. 1 +5V).

-23

Реверс электродвигателей осуществляется с помощью подачи лог 1 на одну из пар входов IN1 и IN2 (IN3 и IN4).

-24

Скетч программы:

-25
-26

Распознав команду, модуль голосового управления отправляет её в Arduino, а та включает моторы на время (в миллисекундах) указанное в этой строке:

#define motion_delay 1000   // на какое время включать моторы

Насколько быстро все это работает, можно посмотреть в этом видео.

Ресурсы в сети Интернет:

Купить модуль:

tinyML-модуль: Голосовое управление роботом (русский язык) erid: 2VtzqxQ9ph8
tinyML-модуль: Голосовое управление роботом (русский язык) erid: 2VtzqxQ9ph8

https://ozon.onelink.me/SNMZ/93do2tml

tinyML-модуль: Голосовое управление роботом (русский язык) купить на OZON по низкой цене (1584421305)

Реклама. ИП Семëнова ИНН 780518548815

Документация на GitHub

На борту ESP32 есть встроенный Bluetooth. Для управления роботом можно использовать его. В этом случае модуль не нужно устанавливать непосредственно на вашего робота. Его можно использовать как выносной пульт.

Пользователь произносит команды в модуль, который держит в руке, модуль распознаёт их и отправляет по Bluetooth на робота. В этом случае необходимо подключить блютус-модуль (например, HM-10) к вашей плате.

Пример такого подключения можно найти на GitHub. Также там есть пример работы через интерфейс I2C.

GitHub - MIR-LLC/robot_voice_control

Документация на сайте компании ООО "МИР"

mir.dev

МИР

Коды примеров из этой статьи

можно скачать по этой ссылке:

Code_Voice.zip

Сделать голосовое управление на базе данного модуля совсем не сложно.

Всем удачи!