Оглавление:

Джек для прыжков с голосовым управлением - версия Google Voice для AIY: 3 шага
Джек для прыжков с голосовым управлением - версия Google Voice для AIY: 3 шага

Видео: Джек для прыжков с голосовым управлением - версия Google Voice для AIY: 3 шага

Видео: Джек для прыжков с голосовым управлением - версия Google Voice для AIY: 3 шага
Видео: How to voice wake up the TCL Google TV? 2024, Декабрь
Anonim
Джек для прыжков с голосовым управлением - версия Google Voice для AIY
Джек для прыжков с голосовым управлением - версия Google Voice для AIY
Джек для прыжков с голосовым управлением - версия Google Voice для AIY
Джек для прыжков с голосовым управлением - версия Google Voice для AIY
Джек для прыжков с голосовым управлением - версия Google Voice для AIY
Джек для прыжков с голосовым управлением - версия Google Voice для AIY
Джек для прыжков с голосовым управлением - версия Google Voice для AIY
Джек для прыжков с голосовым управлением - версия Google Voice для AIY

Итак, у вас есть голосовой набор 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 ()

Рекомендуемые: