Как стать автором
Обновить

Беспроводной искусственный интеллект для детей. Или как сделать вашего робота и ребёнка ещё умнее

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.5K

В предыдущей статье я рассказал, как мы делали робота с искусственным интеллектом в Летней компьютерной школе на базе детского лагеря в Новгородской области. Ребята собрали робота, который управляется голосом с помощью специального AI-модуля для Ардуино.

Картинка для привлечения внимания. Но, впрочем, похожа на наш реальный сценарий взаимодействия ребенка с роботом.
Картинка для привлечения внимания. Но, впрочем, похожа на наш реальный сценарий взаимодействия ребенка с роботом.

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

Одна из проблем в работе робота – сильное влияние окружающего шума на его способность распознавать команды. На соревнованиях модуль, установленный на самом роботе, «слышал» сторонние звуки: шум двигателей, крики болельщиков и не слышал «водителя».

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

Это даёт возможность реализовать другую схему управления роботом, когда «водитель» держит модуль распознавания голосовых команд в руке, говорит команды как в рацию, модуль их распознаёт, отправляет по Bluetooth роботу, который их принимает и переводит в команды управления двигателями.

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

Ребята из лагеря продолжили свои проекты и уже на базе наших занятий в учебное время реализовали схему работы с Bluetooth. Сейчас расскажу, было ли это сложно.   

Модуль

На стороне модуля дополнительно ничего настраивать не нужно, всё работает «из коробки», модуль автоматически подключается к Bluetooth. Когда модуль распознаёт голосовую команду, то отправляет её в виде текстовой строки по нескольким интерфейсам: SPI, I2C, UART и по Bluetooth. В предыдущей версии мы принимали команды по I2C, подключаясь проводами к Ардуино-плате на самом роботе.

Чтобы начать работать с Bluetooth, нужно сделать пару действий с самим модулем.

Во-первых, желательно присоединить динамик к встроенному разъёму модуля, чтобы он мог «озвучивать» свои действия, повторять голосовые команды. Можно обойтись и без него, ориентироваться на цвет светодиода, но с динамиком удобнее – становится сразу понятно, какую команду распознал модуль.

Мы использовали динамик DXI30N-A 0,5 Вт с сопротивлением 8 Ом, всё отлично работает, но, думаю, можно использовать практически что угодно.

 

Во-вторых, желательно докупить и поставить антенну. Модуль будет передавать данные и без неё, но на очень короткую дистанцию, всего на пару метров. С антенной – гораздо дальше, в пределах класса для занятий и коридора ловит везде.

Подключается антенна сверху платы, круглый разъем IPX.

Подойдет любая антенна с соответствующим разъемом, я брал первую попавшуюся на Озоне за 250 руб.

В-третьих, так как модуль мы «забрали» с робота, то питание на него нужно подавать отдельно. Удобнее всего через Type-C разъём на плате любым стандартным проводом от USB-порта компьютера/ноутбука, зарядки для телефона или пауэрбанка (для мобильности).

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

Подключите модуль к питанию, запустите сканнер и ищите устройство с именем «Robot».

Изменения в конструкции робота

Так как робот у нас уже был собран, то мы просто внесли изменения в его конструкцию. Сняли AI-модуль с робота, а «вместо» него подключили Bluetooth-модуль HM-10.

Выбор HM-10 был обусловлен его ценой и доступностью в продаже, а также его достаточно просто его подключить к Ардуино-плате, есть доступные библиотеки и мануалы.          

Подключаем RX и TX контакты Bluetooth-модуля к контактам 2 и 3 платы Arduino.  Питание 5V, также берём прямо с платы. Больше никаких изменений в конструкцию робота вносить не пришлось.

Скетч

Так как для подключения Bluetooth мы выбрали контакты 2 и 3, то выполняем следующие действия:

  1. Подключаем библиотеку для последовательной связи (Software Serial Library), с помощью которой программным способом будем организовывать последовательный порт, который неоригинально назовём «HM10».

  2. Объявляем переменные с номерами контактов.

  3. Объявляем переменную с мак-адресом AI-модуля, который мы получили через BLE Scanner.

  4. Вызываем класс Software Serial с указанием этих контактов для получения и отправки последовательных данных для порта «HM10».

Также нужно объявить переменные для выводов платы, к которым подключен драйвер двигателей для управления движением.

 

 Далее инициализируем последовательную связь со скоростью 9600 бод с компьютером для вывода логов и с модулем HM-10.

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

Наши дальнейшие действия:

  1. Организуем обработку поступающих команд по Bluetooth с помощью функции HM10.available(), которая проверяет количество непрочитанных байт (символов), принятых через программный последовательный порт.  Непрочитанные данные накапливаются во входном последовательном буфере.

  2. Если данные есть, то считываем поступившую команду с помощью readString() в переменную command и отправляем в лог информацию для отладки с помощью println.  

  3. Сверяем с командами из списка («вперед», «назад», «влево», «вправо») и вызываем соответствующую функцию движения.

 

Овал: 3

Само движение организуем просто подачей напряжения на соответствующие контакты, подключенные к драйверу двигателей.

В будущем можно функции движения усложнить для более чёткой и плавной работы двигателей и более предсказуемого движения робота. Например, добавить постепенный разгон и торможение двигателей, как это описано в этой статье.

Пример функции движения вперед

 

Итоги

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

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

Особенно, что порадовало — всё удалось реализовать достаточно просто. Мы получили устройство со встроенным AI и распознаванием голосовых команд, которое производит везде WOW-эффект, при этом вообще не погружались в нейросети и искусственный интеллект.

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

Теги:
Хабы:
Всего голосов 6: ↑5 и ↓1+8
Комментарии0

Публикации

Истории

Ближайшие события