Оглавление:
Видео: Джек для прыжков с голосовым управлением - версия Google Voice для AIY: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Итак, у вас есть голосовой набор AIY на Рождество, и вы играете с ним, следуя инструкциям. Забавно, а сейчас?
Описанный ниже проект представляет собой простое устройство, которое можно собрать с помощью голосовой шапки AIY для Raspberry Pi. Он использует систему распознавания голоса Google для управления светодиодами и двумя сервоприводами, управляя руками и ногами прыгающего домкрата с помощью очень простой передачи.
Программное обеспечение, работающее в фоновом режиме, является модификацией скрипта servo_demo.py, как это было описано в руководстве по голосовому набору AIY. Просто следуйте инструкциям по установке оборудования и программного обеспечения. Само устройство легко собрать и не требует особых навыков ручной работы. Кроме того, пригодятся резак, дрель и паяльник.
Если вы активируете систему распознавания голоса, подмигнув рукой и скажите «руки вверх», джек-джек поднимет руки и ноги, «центр рук» переместит оба сервопривода в среднее положение, а при «руках вниз» руки и ноги будут быть пониженным. «Слева вверх» левая рука и ноги будут подняты, а «справа вниз» - опущены правые, а при «правом вверх» - наоборот. "Dance" заставит его танцевать, ну, по крайней мере, отчасти. Он тоже разговаривает, посмотрите прикрепленное видео.
Так что, приложив немного усилий, вы можете создать собственного танцующего, болтающего и поющего робота.
Чтобы упростить его использование, особенно маленькими детьми, и повысить «магический» фактор, кнопка на блоке AIY была заменена в качестве триггера датчиком приближения. Для простоты я использовал прорыв для цифрового датчика расстояния от Pololu, который распознает, находится ли объект ближе, чем на 5 см, и может использоваться как кнопка. Светодиоды указывают, когда устройство ожидает приказов, слушает или «думает». Сервоприводы, датчики и светодиоды управляются программной библиотекой GPIOZero.
Прототип был построен из пластин Forex, пенопласта ПВХ, которые очень легко резать ножом и приклеивать, но при этом они довольно стабильны. Не стесняйтесь создавать более крупную, красивую, улучшенную или более модную версию, но было бы любезно, если бы вы задокументировали и представили свои улучшения.
Вы можете использовать обе стороны тела, в зависимости от того, хотите ли вы представить движущееся снаряжение или иметь красивый, удобный для детей макет. --------- «Хампельманн» - это немецкий термин для «прыгуна», имеющий определенные коннотации.
Шаг 1. Используемые материалы
Raspberry Pi 3; 32 £ в Пиморони, Великобритания
Голосовой комплект AIY; 25 £ в Пиморони, Великобритания
Разъем для цифрового датчика расстояния Pololu с датчиком Sharp, 5 см; 5,90 € на Exp-tec.de
Два сервопривода 9g
Два белых светодиода и резистор
Некоторые разъемы и перемычки
Пластина Forex 2 мм, 250 х 500 мм; 1,70 € в Modulor, Берлин, Германия
Винты, гайки и шайбы M3 для соединения всех движущихся частей. Я использовал шесть нейлоновых винтов диаметром 10 и четыре 16 мм.
Шесть винтов и гаек M2 для крепления сервоприводов к пластинам и соединения рычагов и шестерен сервоприводов.
Несколько капель пластикового клея
Шаг 2: Сборка и использование устройства
Что касается самого голосового набора AIY, просто следуйте инструкциям в описании, которое поставляется с набором, включая раздел о сервоприводе. Я бы порекомендовал припаять несколько трехконтактных разъемов к сервопортам на голосовом разъеме AIY, чтобы вы могли легко подключить сервоприводы, датчик и светодиоды с помощью HAT.
Что касается прыгуна, вы можете либо использовать рисунки, которые я предоставил здесь в виде файлов svg и PDF в качестве шаблона, либо просто изменить их в соответствии с вашими собственными идеями. Возможно, вам захочется сохранить базовую компоновку шестерни, приводящей в движение ноги и рычаг прыжкового домкрата, убедившись, что расстояние между точкой поворота и шестерней одинаково на сервоприводе, руке и ноге.
В качестве альтернативы вы также можете сконструировать версию, в которой руки и ноги приводятся в движение напрямую четырьмя отдельными сервоприводами или более продвинутым механизмом.
По чертежу вырежьте детали из форекс, картона или фанеры и просверлите отверстия в соответствующих местах. Приклейте распорки к точкам поворота рук и ног, обеспечивая хорошее совмещение отверстий.
Закрепите сервоприводы и движущиеся части на опорной плите. Добавьте датчик расстояния и светодиод, как показано. Сервоприводы закреплены винтами M2, все подвижные части - винтами M3. Я использовал винты Nylon M3, но из эстетических соображений.
Убедитесь, что сервомеханизмы находятся в среднем положении. Соедините рычаги сервопривода и шестерни, для этого я использовал винты M2.
Подключите сервоприводы, светодиоды и датчик расстояния к разъемам сервопривода на плате AIY. Возможно, вам понадобятся удлинительные кабели / перемычки. Я подключил левый сервопривод к «servo0» (GPIO 26), правый сервопривод к «servo2» (GPIO 13), светодиоды к «servo5» (GPIO 24), а датчик к «servo3» (GPIO 5) на AIY. голос ШЛЯПА.
Скопируйте предоставленный файл «Hampelmann.py» в подпапку AIY «src» и сделайте его исполняемым для всех. Для этого вы можете выбрать файл в диспетчере файлов, затем щелкнуть правой кнопкой мыши и выбрать «Свойства», выбрать «Разрешения», перейти в «Выполнить», выбрать ~ кого угодно. Или напишите «chmod + x src / Hampelmann.py» в консоли разработчика.
Проверьте, все ли установлено на месте и зафиксировано или перемещается, если необходимо. Откройте командную строку Dev, введите «src / Hampelmann.py» и запустите программу. Если вы проведете рукой или пальцами перед датчиком расстояния, блок AIY запросит заказы, и светодиоды начнут мигать. Реализованные заказы: «вправо / влево / руки вверх / вниз / по центру», «танец», «светодиоды вкл. / Выкл.» И «до свидания».
Играть. Подведите руку к датчику, говорите, когда вас об этом просят, и дайте устройству немного времени, чтобы среагировать. Задержка довольно высока. Crtl + C или «До свидания» остановят программу.
Вы можете изменить файл с помощью Nano или другого простого текстового редактора.
Примечания: имейте в виду, что некоторые слова и термины распознаются как слова, начинающиеся с заглавной буквы, как «по центру» или «справа по центру», в отличие от других, например 'вплоть до'. Вы должны использовать точную форму, возвращаемую модулем распознавания голоса, чтобы инициировать какое-либо действие.
Шаг 3: сценарий Python
Как упоминалось ранее, сценарий основан на сценарии servo_demo.py из голосовых инструкций AIY с некоторыми дополнениями. Первая версия - это файл Hampelmann.py, который вы найдете в приложении. AngularServo от GPIOZero позволяет ограничить диапазон действия сервопривода и точно определить, как далеко он должен двигаться, но я предпочитаю британский голос оригинальному. Устройство также может говорить, но не понимать (?) Английский, немецкий, итальянский, французский и испанский языки. Ниже вы найдете сценарий Hampelmann2.py с британской озвучкой и немного итальянского и немецкого языков. Имейте в виду, что для их запуска вам необходимо сделать скрипты исполняемыми.
#! / usr / bin / env python3 # Этот скрипт представляет собой адаптацию скрипта servo_demo.py для голосовой HAT AIY, # оптимизирован для AIY jump jack import aiy.audio import aiy.cloudspeech import aiy.voicehat from gpiozero import LED from gpiozero import AngularServo from gpiozero import Button from time import sleep def main (): распознаватель = aiy.cloudspeech.get_recognizer () распознаватель.expect_phrase ('вправо') распознаватель.expect_phrase ('вправо') распознаватель.expect_phrase ('вправо Center ') # прописные буквы здесь специально указаны распознаватель.expect_phrase (' слева вверх ') распознаватель.expect_phrase (' слева вниз ') распознаватель. ('руки вниз') распознаватель.expect_phrase ('центр рук') распознаватель.expect_phrase ('танец') распознаватель.expect_phrase ('светодиод включен') распознаватель.expect_phrase ('светодиод выключен') распознаватель.expect_phrase ('до свидания').audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1-е соединение или, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3-й разъем, GPIO 13 led0 = LED (24) # Светодиоды подключены к servo5 / GPIO 24 distance = Button (5) # Датчик расстояния подключен to servo3 / GPIO 05 # другие: GPIO 6 на servo1, 12 на servo4 aiy.audio.say («Привет!»,) aiy.audio.say («Для начала поднесите руку к датчику»,) while True: led0.on () # Светодиоды на принтере («Чтобы активировать распознавание голоса, поднесите руку к датчику расстояния, затем говорите») print («Ожидаемые ключевые слова: руки / влево / вправо вверх / вниз / по центру,») print ('Светодиоды включаются / выключаются, танцуют и до свидания.') print () distance.wait_for_press () print ('Прослушивание …') aiy.audio.say («Пожалуйста, отдайте свои приказы»,) led0.blink () # свет blink text = распознаватель.recognize () if text is None: aiy.audio.say ('Извините, я вас не слышал.',) else: print ('Вы сказали "', text, '"') # Позволяет проверьте интерпретацию системы, если в тексте 'вверх': print ('Перемещение servo0 в максимальное положение') servo0.angle = 35 elif 'вправо' в тексте: print ('Перемещение servo0 до минимального положения ') servo0.angle = -35 elif' Правый центр 'в тексте: # правильные заглавные буквы критичны print (' Перемещение servo0 в среднее положение ') servo0.angle = 0 elif' влево вверх 'в тексте: print (' Перемещение servo2 в максимальное положение ') servo2.angle = -35 elif' left down 'в тексте: print (' Перемещение servo2 в минимальное положение ') servo2.angle = 35 elif' left Center 'в тексте: print (' Moving servo2 to среднее положение ') servo2.angle = 0 elif' руки вверх 'в тексте: print (' Перемещение servo2 в максимальное положение ') servo2.angle = -35 servo0.angle = 35 elif' руки вниз 'в тексте: print (' Перемещение servo2 в минимальное положение ') servo2.angle = 35 servo0.angle = -35 elif' руки Центр 'в тексте: print (' Перемещение серво2 в среднее положение ') servo2.angle = 0 servo0.angle = 0 elif' LED off ' в тексте: print ('выключение внешнего светодиода 0') led0.off () elif 'LED on' в тексте: print ('включение внешнего светодиода 0') led0.on () # light elif 'dance' в тексте: print ('сейчас исполняем танец номер один') aiy.audio.say («Хорошо, я постараюсь изо всех сил!»,) led0.on () # горит для i в диапазоне (3): servo0.angle = 0 servo2.angle = 0 sleep (1) servo0.angle = 35 servo2.angle = -35 sleep (1) servo0.angle = 0 servo2.angle = -35 sleep (1) servo0.angle = -25 servo2.angle = 0 sleep (1) servo0.angle = 30 servo2.angle = 20 sleep (1) servo0.angle = 0 servo2.angle = 0 led0.off () # выключить elif 'до свидания' в тексте: aiy.audio.say ("До свидания",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) servo0.angle = 0 servo2.angle = 0 led0.off () sleep (3) print ('пока!') break else: print ('ключевое слово не распознано!') aiy.audio.say ("Извините, я вас не понял",) if _name_ == ' _main_ ': main ()
Рекомендуемые:
Роботизированная рука с голосовым управлением: 4 шага
Роботизированная рука с голосовым управлением: я создал роботизированную руку, которая будет работать с вашей голосовой командой. Роботизированная рука управляется с помощью естественного связного речевого ввода. Языковой ввод позволяет пользователю взаимодействовать с роботом в терминах, которые знакомы большинству людей. Адван
Многоканальный Sonoff - Подсветка с голосовым управлением: 4 шага (с изображениями)
Многоканальный Sonoff - освещение с голосовым управлением: 5 лет назад свет на моей кухне был обычным. Освещение трека не работало, а освещение под контрольным светом было просто хламом. Я также хотел разбить освещение на каналы, чтобы лучше освещать комнату для различий
Домашняя автоматизация с голосовым управлением (например, Alexa или Google Home, не требуется Wi-Fi или Ethernet): 4 шага
Домашняя автоматизация с голосовым управлением (например, Alexa или Google Home, не требуется Wi-Fi или Ethernet): это в основном реле, управляемые arduino на основе SMS, с настройкой помощника Google для отправки сообщений по голосовым инструкциям. Это очень просто и дешево, и работает как реклама Alexa с вашим существующие электроприборы (если у вас есть Moto -X smartp
Робот с голосовым управлением и микроконтроллером 8051: 4 шага (с изображениями)
Робот с голосовым управлением с использованием микроконтроллера 8051: робот с голосовым управлением принимает указанную команду в форме голоса. Какая бы команда ни была подана через голосовой модуль или модуль Bluetooth, она декодируется существующим контроллером, и, следовательно, данная команда выполняется. Здесь, в этом проекте, я
Джек-о-фонарь с дистанционным управлением: 3 шага (с изображениями)
Jack-o-Lantern с дистанционным управлением цветом: Как обычно, в этот Хэллоуин я решил создать проект, связанный с сезоном. Используя Prusa I3 и Thingiverse, я напечатал украшение Хэллоуина, где цвет контролируется удаленно через проект Blynk. Проект Blynk позволяет вам создать мобил