Tabla de contenido:

Un salto controlado por voz: versión AIY de Google Voice: 3 pasos
Un salto controlado por voz: versión AIY de Google Voice: 3 pasos

Video: Un salto controlado por voz: versión AIY de Google Voice: 3 pasos

Video: Un salto controlado por voz: versión AIY de Google Voice: 3 pasos
Video: COMO ACTIVAR GOOGLE ASSISTANT 2024 - ACTIVAR EL ASISTENTE DE GOOGLE CON LA VOZ 2024, Noviembre
Anonim
Un gato de salto controlado por voz: versión AIY de Google Voice
Un gato de salto controlado por voz: versión AIY de Google Voice
Un gato de salto controlado por voz: versión AIY de Google Voice
Un gato de salto controlado por voz: versión AIY de Google Voice
Un gato de salto controlado por voz: versión AIY de Google Voice
Un gato de salto controlado por voz: versión AIY de Google Voice
Un gato de salto controlado por voz: versión AIY de Google Voice
Un gato de salto controlado por voz: versión AIY de Google Voice

Así que tienes ese kit de voz AIY para Navidad y has estado jugando con él, siguiendo las instrucciones. Es gracioso, ¿pero ahora?

El proyecto que se describe a continuación presenta un dispositivo simple que se puede construir utilizando AIY voice HAT para Raspberry Pi. Utiliza el sistema de reconocimiento de voz de Google para controlar los LED y dos servos, impulsando los brazos y las piernas de un gato de salto con un engranaje muy simple.

El software que funciona en segundo plano es una modificación del script servo_demo.py, como se describe en el manual del kit de voz AIY. Simplemente siga las instrucciones que se dan allí para configurar el hardware y el software. El dispositivo en sí es fácil de construir y no requiere mucha habilidad artesanal. Además, sería útil un cuchillo de corte, un taladro y un soldador.

Si activa el sistema de reconocimiento de voz con un guiño de la mano y dice 'manos arriba', el gato de salto levantará las manos y las piernas, el 'centro de las manos' moverá ambos servos a la posición media y en 'manos abajo' las manos y las piernas lo harán ser bajado. En "izquierda arriba", la mano y las piernas izquierdas se levantarán y en "derecha abajo" las derechas bajarán, en "derecha arriba" viceversa. "Dance", lo hará bailar, bueno al menos un poco. También está hablando, por favor mire el video adjunto.

Entonces, con poco esfuerzo, puede construir su propio robot de baile, chat y canto.

Para simplificar su uso especialmente por niños más pequeños, y para mejorar el factor "mágico", el botón en la caja AIY fue reemplazado como disparador por un sensor de proximidad. Por su simplicidad, utilicé un sensor de distancia digital de Pololu que reconoce si un objeto está más cerca de 5 cm y se puede usar de manera muy similar a un botón. Los LED indican cuando el dispositivo está esperando órdenes, escuchando o "pensando". Los servos, el sensor y los LED están controlados por la biblioteca de software GPIOZero.

El prototipo se construyó a partir de Forex, placas de espuma de PVC, que se pueden cortar muy fácilmente con un cúter y pegar, pero también es bastante estable. Siéntase libre de crear una versión más grande, más agradable, mejorada o más elegante, pero sería amable si documentara y presentara sus mejoras.

Puede usar ambos lados del cuerpo, dependiendo de si desea presentar el equipo en movimiento o tener un diseño agradable y amigable para los niños. --------- "Hampelmann" es el término alemán para "jumping jack", que tiene ciertas connotaciones.

Paso 1: Materiales utilizados

Materiales usados
Materiales usados
Materiales usados
Materiales usados

Raspberry Pi 3; 32 £ en Pimoroni, Reino Unido

Kit de voz AIY; 25 £ en Pimoroni, Reino Unido

Rotura del sensor de distancia digital Pololu con sensor Sharp, 5 cm; 5,90 € en Exp-tec.de

Dos servos de 9g

Dos LED blancos y una resistencia

Algunos encabezados y cables de puente

Una placa Forex de 2 mm, 250 x 500 mm; 1.70 € en Modulor, Berlín, Alemania

Tornillos, tuercas y arandelas M3, para conectar todas las partes móviles. Usé seis tornillos de nailon de 10 y cuatro de 16 mm.

Seis tornillos y tuercas M2, para fijar los servos a las placas y conectar los brazos y engranajes de los servos.

Unas gotas de pegamento plástico

Paso 2: ensamblaje y uso del dispositivo

Montaje y uso del dispositivo
Montaje y uso del dispositivo
Montaje y uso del dispositivo
Montaje y uso del dispositivo
Montaje y uso del dispositivo
Montaje y uso del dispositivo

Con respecto al kit de voz AIY en sí, simplemente siga las instrucciones en la descripción que viene con el kit, incluida la sección sobre el servo. Recomendaría soldar varios encabezados de tres pines a los puertos de servo en la salida de voz AIY, para que pueda conectar servos, sensores y LED muy fácilmente con el HAT.

Con respecto al gato de salto, puede usar los dibujos que proporcioné aquí como archivos svg y PDF como plantilla, o simplemente modificarlos de acuerdo con sus propias ideas. Es posible que desee mantener la disposición básica del engranaje que impulsa las piernas y el brazo del gato de salto, asegurándose de que la distancia entre el punto de pivote y el engranaje sea la misma en el servo, el brazo y la pierna.

Alternativamente, también puede construir una versión en la que los brazos y las piernas sean impulsados directamente por cuatro servos separados o por un engranaje más avanzado.

Usando el dibujo, corte las piezas de una placa de Forex, cartón o madera contrachapada y taladre los agujeros en las posiciones apropiadas. Pegue las piezas distanciadoras a los puntos de pivote de brazos y piernas, asegurando una buena alineación de los agujeros.

Fije los servos y las partes móviles a la placa base. Agregue el sensor de distancia y el LED como se indica. Los servos se fijan con tornillos M2, todas las partes móviles con tornillos M3. Usé tornillos de Nylon M3, pero solo por razones estéticas.

Compruebe si los brazos del servo están colocados en la posición media. Conecte los brazos y engranajes del servo, utilicé tornillos M2 para este propósito.

Conecte los servos, los LED y el sensor de distancia a los conectores de los servos en la placa AIY. Es posible que necesite algunos cables de alargamiento / puente. Conecté el servo izquierdo a "servo0" (GPIO 26), el servo derecho a "servo2" (GPIO 13), los LED a "servo5" (GPIO 24) y el sensor a "servo3" (GPIO 5) en el AIY SOMBRERO de voz.

Copie el archivo "Hampelmann.py" proporcionado en la subcarpeta AIY "src" y hágalo directamente ejecutable para cualquier persona. Para hacerlo, puede seleccionar el archivo en el administrador de archivos, luego hacer clic derecho y seleccionar Propiedades, seleccionar Permisos, ir a Ejecutar, seleccionar ~ cualquiera. O escriba "chmod + x src / Hampelmann.py" en la consola de desarrollo.

Compruebe si todo está colocado en su lugar y fijo, o si se puede mover cuando sea necesario. Abra la línea de comando Dev, ingrese "src / Hampelmann.py" e inicie el programa. Si mueve la mano o los dedos frente al sensor de distancia, la unidad AIY solicitará órdenes y los LED parpadearán. Las órdenes implementadas son "derecha / izquierda / manos arriba / abajo / centro", "baile", "LED encendido / apagado" y "adiós".

Jugar. Mueva su mano frente al sensor, hable cuando se le pida y déle al dispositivo un poco de tiempo para reaccionar. La latencia es bastante alta. Crtl + C o "Adiós" detendrá el programa.

Puede modificar el archivo usando Nano u otro editor de texto simple.

Observaciones: tenga en cuenta que algunas palabras y términos se reconocen como palabras que comienzan con una letra mayúscula, como "Centro" o "Centro derecho", mientras que otras no lo son, p. Ej. 'hasta'. Debe utilizar el formulario exacto que le devuelve el módulo de reconocimiento de voz para activar alguna acción.

Paso 3: el script de Python

Como se mencionó anteriormente, el script se basa en el script servo_demo.py de las instrucciones de voz AIY, con algunas adiciones. La primera versión es el archivo Hampelmann.py que encontrará adjunto. AngularServo de GPIOZero permite restringir el rango de acción del servo y definir exactamente qué tan lejos se moverá, pero prefiero la voz británica a la original. Y el dispositivo también puede hablar, pero no entender (?), Inglés, alemán, italiano, francés y español. A continuación encontrará el guión Hampelmann2.py, con la voz británica, y un poco de italiano y alemán. Tenga en cuenta que debe hacer que los scripts sean ejecutables para ejecutarlos.

#! / usr / bin / env python3 # Este script es una adaptación del script servo_demo.py para AIY voice HAT, # optimizado para AIY jumping jack import aiy.audio import aiy.cloudspeech import aiy.voicehat from gpiozero import LED desde gpiozero import AngularServo desde gpiozero import Button desde time import sleep def main (): Center ') # las letras mayúsculas están ahí a propósito: ('manos abajo') Recognizer.expect_phrase ('manos Center') Recognizer.expect_phrase ('Dance') Recognizer.expect_phrase ('LED encendido') Recognizer.expect_phrase ('LED apagado') Recognizer.expect_phrase ('adiós') aiy.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1st connect o, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3er conector, GPIO 13 led0 = LED (24) # LEDs están conectados al servo5 / GPIO 24 distancia = Botón (5) # sensor de distancia conectado a servo3 / GPIO 05 # otros: GPIO 6 en servo1, 12 en servo4 aiy.audio.say ("¡Hola!",) aiy.audio.say ("Para comenzar, mueva la mano cerca del sensor",) mientras que True: led0.on () # LED en impresión ("Para activar el reconocimiento de voz, mueva una mano cerca del sensor de distancia, luego hable") print ('Las palabras clave esperadas son: manos / izquierda / derecha arriba / abajo / centro,') print ('LED encendido / apagado, baile y adiós.') print () distance.wait_for_press () print ('Escuchando…') aiy.audio.say ("Por favor da tus órdenes",) led0.blink () # light blink text = Recognizer.recognize () si el texto es None: aiy.audio.say ('Lo siento, no te escuché.',) else: print ('Dijiste "', text, '"') # Te permite compruebe la interpretación del sistema si está 'hacia arriba' en el texto: print ('Moviendo el servo0 a la posición máxima') servo0.angle = 35 elif 'hacia abajo' en el texto: print ('Moviendo el servo0 a la posición mínima ') servo0.angle = -35 elif' Right Center 'en el texto: # los captials correctos son críticos print (' Moviendo servo0 a la posición media ') servo0.angle = 0 elif' left up 'in text: print (' Moviendo el servo2 a la posición máxima ') servo2.angle = -35 elif' izquierda abajo 'en el texto: print (' Moviendo el servo2 a la posición mínima ') servo2.angle = 35 elif' centro izquierdo 'en el texto: print (' Moviendo el servo2 a la posición mínima ') posición intermedia ') servo2.angle = 0 elif' manos arriba 'en texto: print (' Moviendo servo2 a la posición máxima ') servo2.angle = -35 servo0.angle = 35 elif' manos abajo 'en texto: print (' Moviendo servo2 a la posición mínima ') servo2.angle = 35 servo0.angle = -35 elif' manos Centro 'en el texto: print (' Moviendo el servo2 a la posición media ') servo2.angle = 0 servo0.angle = 0 elif' LED apagado ' en texto: print ('apagar LED externo 0') led0.off () elif 'LED encendido' en texto: print ('encender LED externo 0') led0.on () # light elif 'dance' en texto: print ('ahora realizando el baile número uno') aiy.audio.say ("¡Bueno, haré mi mejor esfuerzo!",) led0.on () # luces encendidas para i en el rango (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 () # luz apagada elif 'adiós' en el texto: aiy.audio.say ("Adiós",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) servo0.angle = 0 servo2.angle = 0 led0.off () sleep (3) print ('¡adiós!') break else: print ('¡no se reconoce ninguna palabra clave!') aiy.audio.say ("Lo siento, no te entendí",) if _name_ == ' _Principal Principal()

Recomendado: