Índice:

Um macaco de salto controlado por voz - versão AIY do Google Voice: 3 etapas
Um macaco de salto controlado por voz - versão AIY do Google Voice: 3 etapas

Vídeo: Um macaco de salto controlado por voz - versão AIY do Google Voice: 3 etapas

Vídeo: Um macaco de salto controlado por voz - versão AIY do Google Voice: 3 etapas
Vídeo: Sua Língua é assim também?? #shorts 2024, Novembro
Anonim
Um jack de salto controlado por voz - versão AIY do Google Voice
Um jack de salto controlado por voz - versão AIY do Google Voice
Um jack de salto controlado por voz - versão AIY do Google Voice
Um jack de salto controlado por voz - versão AIY do Google Voice
Um jack de salto controlado por voz - versão AIY do Google Voice
Um jack de salto controlado por voz - versão AIY do Google Voice
Um jack de salto controlado por voz - versão AIY do Google Voice
Um jack de salto controlado por voz - versão AIY do Google Voice

Então você tem aquele kit de voz AIY para o Natal e tem brincado com ele, seguindo as instruções. É engraçado, mas agora?

O projeto descrito a seguir apresenta um dispositivo simples que pode ser construído usando o HAT de voz AIY para o Raspberry Pi. Ele usa o sistema de reconhecimento de voz do Google para controlar LEDs e dois servos, acionando os braços e as pernas de um macaco de salto por meio de uma engrenagem muito simples.

O software funcionando em segundo plano é uma modificação do script servo_demo.py, conforme descrito no manual do kit de voz AIY. Basta seguir as instruções fornecidas para configurar o hardware e o software. O dispositivo em si é fácil de construir e não requer muitas habilidades de artesanato. Além disso, uma faca de corte, uma broca e um ferro de solda seriam úteis.

Se você ativar o sistema de reconhecimento de voz com um piscar de sua mão e dizer 'mãos para cima', o macaco levantará as mãos e as pernas, 'centro das mãos' moverá ambos os servos para a posição intermediária e em 'mãos para baixo' as mãos e pernas irão ser abaixado. Na ‘esquerda para cima’ a mão esquerda e as pernas serão levantadas e na “direita para baixo” as direitas abaixadas, na ‘direita para cima’ vice-versa. "Dance", fará com que dance, bem, pelo menos mais ou menos. Também está falando, por favor, dê uma olhada no vídeo anexo.

Assim, com pouco esforço, você pode construir seu próprio robô de dança, bate-papo e canto.

Para simplificar seu uso, especialmente por crianças menores, e para aumentar o fator "mágico", o botão na caixa AIY foi substituído como acionador por um sensor de proximidade. Por sua simplicidade, usei um sensor de distância digital da Pololu que reconhece se um objeto está a menos de 5 cm e pode ser usado como um botão. Os LEDs indicam quando o dispositivo está aguardando ordens, ouvindo ou “pensando”. Servos, sensores e LEDs são controlados pela biblioteca de software GPIOZero.

O protótipo foi construído a partir de placas de espuma de PVC Forex, que podem ser cortadas muito facilmente com uma faca de corte e coladas, mas também são bastante estáveis. Sinta-se à vontade para construir uma versão maior, melhor, melhorada ou mais sofisticada, mas seria gentil se você documentasse e apresentasse suas melhorias.

Você pode usar os dois lados do corpo, dependendo se deseja apresentar a engrenagem móvel ou ter um layout agradável e adequado para crianças. --------- "Hampelmann" é o termo alemão para "jumping jack", tendo certas conotações.

Etapa 1: Materiais Usados

Materiais utilizados
Materiais utilizados
Materiais utilizados
Materiais utilizados

Raspberry Pi 3; 32 £ em Pimoroni, Reino Unido

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

Disparo do sensor de distância digital Pololu com sensor Sharp, 5 cm; 5,90 € em Exp-tec.de

Dois servos 9g

Dois LEDs brancos e um resistor

Alguns cabeçalhos e cabos de jumper

Uma placa Forex de 2 mm, 250 x 500 mm; 1,70 € em Modulor, Berlim, Alemanha

Parafusos, porcas e arruelas M3, para conectar todas as partes móveis. Usei seis parafusos de nylon de 10 e quatro de 16 mm.

Seis parafusos e porcas M2, para fixar os servos às placas e conectar os braços e engrenagens dos servos.

Algumas gotas de cola plástica

Etapa 2: Montagem e uso do dispositivo

Montagem e uso do dispositivo
Montagem e uso do dispositivo
Montagem e uso do dispositivo
Montagem e uso do dispositivo
Montagem e uso do dispositivo
Montagem e uso do dispositivo

Em relação ao kit de voz AIY em si, basta seguir as instruções na descrição que acompanha o kit, incluindo a seção sobre o servo. Eu recomendaria soldar vários conectores de três pinos às portas servo no breakout de voz AIY, para que você possa conectar servos, sensores e LEDs muito facilmente com o HAT.

Com relação ao jumping jack, você pode usar os desenhos que forneci aqui como arquivos SVG e PDF como modelo ou apenas modificá-los de acordo com suas próprias idéias. Você pode querer manter o layout básico da engrenagem que conduz as pernas e o braço do macaco, garantindo que a distância entre o ponto de articulação e a engrenagem seja a mesma no servo, braço e perna.

Alternativamente, você também pode construir uma versão em que braços e pernas são acionados diretamente por quatro servos separados ou por uma engrenagem mais avançada.

Usando o desenho, corte os pedaços de uma placa de Forex, papelão ou madeira compensada e faça os furos nas posições apropriadas. Cole as peças distantes nos pontos de articulação dos braços e pernas, garantindo um bom alinhamento dos orifícios.

Fixe os servos e as peças móveis na placa de base. Adicione o sensor de distância e o LED conforme indicado. Os servos são fixados com parafusos M2, todas as partes móveis com parafusos M3. Usei parafusos Nylon M3, mas apenas por razões estéticas.

Verifique se os braços do servo estão colocados na posição intermediária. Conecte os servo braços e engrenagens, usei parafusos M2 para esse fim.

Conecte servos, LEDs e o sensor de distância aos conectores de servo na placa AIY. Você pode precisar de alguns cabos de alongamento / jumper. Eu conectei o servo esquerdo ao “servo0” (GPIO 26) o servo direito ao “servo2” (GPIO 13), os LEDs ao “servo5” (GPIO 24) e o sensor ao “servo3” (GPIO 5) no AIY voz HAT.

Copie o arquivo “Hampelmann.py” fornecido para a subpasta “src” AIY e torne-o executável diretamente para qualquer pessoa. Para fazer isso, você pode selecionar o arquivo no gerenciador de arquivos, então clicar com o botão direito e selecionar Propriedades, selecionar Permissões, ir para Executar, selecionar ~ qualquer um. Ou escreva “chmod + x src / Hampelmann.py” no console dev.

Verifique se tudo está colocado no lugar e fixo ou móvel quando necessário. Abra a linha de comando Dev, digite “src / Hampelmann.py” e inicie o programa. Se você mover sua mão ou dedos na frente do sensor de distância, a unidade AIY solicitará ordens e os LEDs piscarão. As ordens implementadas são “direita / esquerda / mãos para cima / baixo / centro”, “dança”, “LED liga / desliga” e “adeus”.

Toque. Mova sua mão na frente do sensor, fale quando for solicitado e dê ao dispositivo algum tempo para reagir. A latência é bastante alta. Crtl + C ou “Goodbye” irá interromper o programa.

Você pode modificar o arquivo usando o Nano ou outro editor de texto simples.

Observações: Esteja ciente de que algumas palavras e termos são reconhecidos como palavras que começam com uma letra maiúscula, como ‘Centro’ ou ‘Centro direito’, ao contrário de outros, por exemplo, 'Direito'. Você tem que usar a forma exata fornecida pelo módulo de reconhecimento de voz para acionar alguma ação.

Etapa 3: o script Python

Conforme mencionado anteriormente, o script é baseado no script servo_demo.py das instruções de voz AIY, com alguns acréscimos. A primeira versão é o arquivo Hampelmann.py que você encontrará em anexo. O AngularServo do GPIOZero permite restringir o alcance de ação do servo e definir exatamente o quão longe deve se mover. Mas eu prefiro a voz britânica à original. E o aparelho também fala, mas não entende (?), Inglês, alemão, italiano, francês e espanhol. Abaixo você encontra o script Hampelmann2.py, com voz britânica, um pouco de italiano e alemão. Lembre-se de que você deve tornar os scripts executáveis para executá-los.

#! / usr / bin / env python3 # Este script é uma adaptação do script servo_demo.py para o AIY voice HAT, # otimizado para o conector de salto AIY import aiy.audio import aiy.cloudspeech import aiy.voicehat do gpiozero import LED from gpiozero import AngularServo from gpiozero import Botão from time import sleep def main (): reconhecizer = aiy.cloudspeech.get_recognizer () reconhecizer.expect_phrase ('right up') reconhecizer.expect_phrase ('right down') reconhecizer.expect_phrase ('Right Centro ') # as letras maiúsculas estão ali propositalmente reconhecizer.expect_phrase (' esquerda para cima ') reconhecizer.expect_phrase (' esquerda para baixo ') reconhecedor.expect_phrase (' esquerda para centro ') reconhecizer.expect_phrase (' mãos para cima ') reconhecedor.expect_phrase ('mãos para baixo') reconhecedor.expect_phrase ('centro das mãos') reconhecizer.expect_phrase ('Dança') reconhecedor.expect_phrase ('LED aceso') reconhecedor.expect_phrase ('LED apagado') reconhecizer.expect_phrase ('adeus') também.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1ª conexão ou, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3º conector, GPIO 13 led0 = LED (24) # LEDs estão conectados ao servo5 / GPIO 24 distance = Botão (5) # sensor de distância conectado para servo3 / GPIO 05 # outros: GPIO 6 em servo1, 12 em servo4 aiy.audio.say ("Hello!",) aiy.audio.say ("Para começar, mova sua mão perto do sensor",) enquanto True: led0.on () # LEDs na impressão ("Para ativar o reconhecimento de voz, mova a mão perto do sensor de distância e fale") print ('Palavras-chave esperadas são: mãos / esquerda / direita cima / baixo / centro,') print ('LED ligado / desligado, dança e adeus.') print () distance.wait_for_press () print ('Ouvir…') aiy.audio.say ("Por favor, dê seus pedidos",) led0.blink () # light blink text = reconhecizer.recognize () se o texto for Nenhum: aiy.audio.say ('Desculpe, não ouvi você.',) else: print ('Você disse "', texto, '"') # Permite verifique a interpretação do sistema se 'para cima' no texto: print ('Movendo servo0 para a posição máxima') servo0.angle = 35 elif 'para baixo' no texto: print ('Movendo servo0 para a posição mínima ') servo0.angle = -35 elif' Right Center 'no texto: #correct captials are critical print (' Moving servo0 to middle position ') servo0.angle = 0 elif' left up 'in text: print (' Movendo servo2 para a posição máxima ') servo2.angle = -35 elif' esquerdo para baixo 'no texto: print (' Movendo servo2 para a posição mínima ') servo2.angle = 35 elif' Centro esquerdo 'no texto: print (' Movendo servo2 para posição intermediária ') servo2.angle = 0 elif' mãos para cima 'no texto: print (' Movendo servo2 para a posição máxima ') servo2.angle = -35 servo0.angle = 35 elif' mãos para baixo 'no texto: print (' Movendo servo2 para a posição mínima ') servo2.angle = 35 servo0.angle = -35 elif' centro das mãos 'no texto: print (' Movendo o servo2 para a posição intermediária ') servo2.angle = 0 servo0.angle = 0 elif' LED desligado ' no texto: print ('desligando o LED externo 0') led0.off () elif 'LED ligado' no texto: print ('ligando o LED externo 0') led0.on () # light elif 'dance' no texto: print ('agora realizando a dança número um') aiy.audio.say ("Bem, vou tentar o meu melhor!",) led0.on () # lights on para i no intervalo (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 () # light off elif 'adeus' no texto: aiy.audio.say ("Adeus",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) servo0.angle = 0 servo2.angle = 0 led0.off () sleep (3) print ('tchau!') break else: print ('nenhuma palavra-chave reconhecida!') aiy.audio.say ("Desculpe, não entendi você",) if _name_ == ' _main_ ': principal ()

Recomendado: