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

в 10:10, , рубрики: arduino, голосовое управление, искусственный интеллект, роботы с искусственным интеллектом

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

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

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

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

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

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

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

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

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

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

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

Модуль

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

Выбор 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».

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

 

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

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

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

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

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

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

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

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

 

Овал: 3

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

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

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

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

 

Итоги

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

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

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

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

Автор: olimp-nw

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js