Table des matières:

Un Jumping Jack à commande vocale - Google Voice AIY Version : 3 étapes
Un Jumping Jack à commande vocale - Google Voice AIY Version : 3 étapes

Vidéo: Un Jumping Jack à commande vocale - Google Voice AIY Version : 3 étapes

Vidéo: Un Jumping Jack à commande vocale - Google Voice AIY Version : 3 étapes
Vidéo: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, Décembre
Anonim
Un Jumping Jack à commande vocale - Google Voice AIY Version
Un Jumping Jack à commande vocale - Google Voice AIY Version
Un Jumping Jack à commande vocale - Google Voice AIY Version
Un Jumping Jack à commande vocale - Google Voice AIY Version
Un Jumping Jack à commande vocale - Google Voice AIY Version
Un Jumping Jack à commande vocale - Google Voice AIY Version
Un Jumping Jack à commande vocale - Google Voice AIY Version
Un Jumping Jack à commande vocale - Google Voice AIY Version

Vous avez donc ce kit vocal AIY pour Noël et vous avez joué avec, en suivant les instructions. C'est drôle, mais maintenant ?

Le projet décrit ci-dessous présente un appareil simple qui peut être construit à l'aide du HAT vocal AIY pour Raspberry Pi. Il utilise le système de reconnaissance vocale de Google pour contrôler les LED et deux servos, entraînant les bras et les jambes d'un jumping jack par un engrenage très simple.

Le logiciel fonctionnant en arrière-plan est une modification du script servo_demo.py, tel qu'il a été décrit dans le manuel du kit vocal AIY. Suivez simplement les instructions qui y sont données pour configurer le matériel et le logiciel. L'appareil lui-même est facile à construire et ne nécessite pas beaucoup de compétences artisanales. De plus, un cutter, une perceuse et un fer à souder seraient utiles.

Si vous activez le système de reconnaissance vocale avec un clin d'œil et dites « mains en l'air », le cric lèvera les mains et les jambes, le « centre des mains » déplacera les deux servos en position médiane et sur les « mains vers le bas », les mains et les jambes être abaissé. Sur « gauche vers le haut », la main gauche et les jambes seront levées et sur « droite vers le bas » les droites abaissées, sur « droite vers le haut » vice versa. "Dance", le fera danser, enfin du moins en quelque sorte. Il parle aussi, s'il vous plaît jeter un oeil sur la vidéo ci-jointe.

Ainsi, avec peu d'efforts, vous pouvez créer votre propre robot dansant, bavardant et chantant.

Pour simplifier son utilisation, en particulier par les plus petits, et pour améliorer le facteur « magique », le bouton de la boîte AIY a été remplacé en tant que déclencheur par un capteur de proximité. Pour sa simplicité, j'ai utilisé un capteur de distance numérique de Pololu qui reconnaît si un objet est à moins de 5 cm et peut être utilisé comme un bouton. Les LED indiquent quand l'appareil attend des commandes, écoute ou « réfléchit ». Les servos, le capteur et les LED sont contrôlés par la bibliothèque logicielle GPIOZero.

Le prototype a été construit à partir de plaques de mousse PVC Forex, qui peuvent être coupées très facilement avec un cutter et collées, mais sont également assez stables. N'hésitez pas à créer une version plus grande, plus agréable, améliorée ou plus sophistiquée, mais ce serait gentil de documenter et de présenter vos améliorations.

Vous pouvez utiliser les deux côtés du corps, selon que vous souhaitiez présenter l'équipement en mouvement ou avoir une belle disposition adaptée aux enfants. ---------"Hampelmann" est le terme allemand pour "jumping jack", ayant certaines connotations.

Étape 1: Matériaux utilisés

Les matériaux utilisés
Les matériaux utilisés
Les matériaux utilisés
Les matériaux utilisés

Framboise Pi 3; 32 £ à Pimoroni, Royaume-Uni

Kit vocal AIY; 25 £ à Pimoroni, Royaume-Uni

Déploiement du capteur de distance numérique Pololu avec capteur Sharp, 5 cm; 5,90 € sur Exp-tec.de

Deux servos 9g

Deux LED blanches et une résistance

Certains en-têtes et câbles de démarrage

Une plaque Forex 2 mm, 250 x 500 mm; 1,70 € chez Modulor, Berlin, Allemagne

Vis, écrous et rondelles M3, pour connecter toutes les pièces mobiles. J'ai utilisé six vis en nylon de 10 et quatre de 16 mm.

Six vis et écrous M2, pour fixer les servos aux plaques et connecter les bras et les engrenages des servos.

Quelques gouttes de colle plastique

Étape 2: Assemblage et utilisation de l'appareil

Assemblage et utilisation de l'appareil
Assemblage et utilisation de l'appareil
Assemblage et utilisation de l'appareil
Assemblage et utilisation de l'appareil
Assemblage et utilisation de l'appareil
Assemblage et utilisation de l'appareil

Concernant le kit vocal AIY lui-même, il suffit de suivre les instructions dans la description qui accompagne le kit, y compris la section sur le servo. Je recommanderais de souder plusieurs en-têtes à trois broches aux ports servo de la sortie vocale AIY, afin que vous puissiez connecter très facilement les servos, le capteur et les LED avec le HAT.

En ce qui concerne le jumping jack, vous pouvez soit utiliser les dessins que j'ai fournis ici sous forme de fichiers svg et PDF comme modèle, soit simplement les modifier selon vos propres idées. Vous pouvez conserver la disposition de base de l'engrenage entraînant les jambes et le bras du cric, en veillant à ce que la distance entre le point de pivotement et l'engrenage soit la même au niveau du servo, du bras et de la jambe.

Alternativement, vous pouvez également construire une version où les bras et les jambes sont entraînés directement par quatre servos séparés, ou par un engrenage plus avancé.

À l'aide du dessin, découpez les pièces d'une plaque de Forex, de carton ou de contreplaqué et percez les trous aux emplacements appropriés. Collez les entretoises sur les points de pivotement des bras et des jambes en assurant un bon alignement des trous.

Fixez les servos et les pièces mobiles à la plaque de base. Ajoutez le capteur de distance et la LED comme indiqué. Les servos sont fixés avec des vis M2, toutes les pièces mobiles avec des vis M3. J'ai utilisé des vis Nylon M3, mais juste pour des raisons esthétiques.

Vérifiez si les bras de servo sont placés en position médiane. Connectez les bras de servo et les engrenages, j'ai utilisé des vis M2 à cet effet.

Fixez les servos, les LED et le capteur de distance aux connecteurs des servos sur la carte AIY. Vous aurez peut-être besoin de câbles d'allongement/cavalier. J'ai attaché le servo gauche à "servo0" (GPIO 26) le servo droit à "servo2" (GPIO 13), les LED à "servo5" (GPIO 24) et le capteur à "servo3" (GPIO 5) sur l'AIY CHAPEAU de voix.

Copiez le fichier "Hampelmann.py" fourni dans le sous-dossier AIY "src" et rendez-le directement exécutable pour n'importe qui. Pour ce faire, vous pouvez sélectionner le fichier dans le gestionnaire de fichiers, puis cliquer avec le bouton droit et sélectionner Propriétés, sélectionner Autorisations, aller dans Exécuter, sélectionner ~ n'importe qui. Ou écrivez « chmod +x src/Hampelmann.py » dans la console de développement.

Vérifiez si tout est mis en place et fixe, ou déplaçable si nécessaire. Ouvrez la ligne de commande Dev, entrez "src/Hampelmann.py" et démarrez le programme. Si vous déplacez votre main ou vos doigts devant le capteur de distance, l'unité AIY demandera des ordres et les LED clignoteront. Les ordres mis en œuvre sont « droite/gauche/mains haut/bas/centre », « danse », « LED on/off » et « au revoir ».

Jouer. Déplacez votre main devant le capteur, parlez lorsqu'on vous le demande et laissez un peu de temps à l'appareil pour réagir. La latence est assez élevée. Crtl+C ou "Au revoir" arrêtera le programme.

Vous pouvez modifier le fichier à l'aide de Nano ou d'un autre éditeur de texte simple.

Remarques: Veuillez noter que certains mots et termes sont reconnus comme des mots commençant par une majuscule, comme « Centre » ou « Centre à droite », alors que d'autres ne le sont pas, par ex. 'tout droit'. Vous devez utiliser le formulaire exact renvoyé par le module de reconnaissance vocale pour déclencher une action.

Étape 3: le script Python

Comme mentionné précédemment, le script est basé sur le script servo_demo.py des instructions vocales AIY, avec quelques ajouts. La première version est le fichier Hampelmann.py que vous trouverez en pièce jointe. AngularServo de GPIOZero permet de restreindre la plage d'action du servo et de définir exactement jusqu'où doit se déplacer. Mais je préfère la voix britannique à celle d'origine. Et l'appareil peut aussi parler, mais pas comprendre (?), l'anglais, l'allemand, l'italien, le français et l'espagnol. Ci-dessous, vous trouverez le script Hampelmann2.py, avec la voix britannique, et un peu d'italien et d'allemand. N'oubliez pas que vous devez rendre les scripts exécutables pour les exécuter.

#!/usr/bin/env python3# Ce script est une adaptation du script servo_demo.py pour le AIY voice HAT, # optimisé pour le jumping jack AIY import aiy.audio import aiy.cloudspeech import aiy.voicehat from gpiozero import LED depuis gpiozero import AngularServo depuis gpiozero import Button from time import sleep def main (): reconnaître = aiy.cloudspeech.get_recognizer() reconnaissant.expect_phrase('right up') reconnaissant.expect_phrase('right down') reconnaissant.expect_phrase('Right Center') # les majuscules sont là exprès reconnaissant.expect_phrase('gauche vers le haut') reconnaissant.expect_phrase('gauche vers le bas') reconnaissant.expect_phrase('gauche centre') reconnaissant.expect_phrase('mains en l'air') reconnaissant.expect_phrase ('haut la main') Recognizer.expect_phrase('hands Center') Recognizer.expect_phrase('Dance') Recognizer.expect_phrase('LED allumée') Recognizer.expect_phrase('LED éteinte') Recognizer.expect_phrase('au revoir') aiy.audio.get_recorder().start() servo0 = AngularServo(26, min_angle=-40, max_angle=40) # 1ère connexion ou, GPIO 26 servo2 = AngularServo(13, min_angle=-40, max_angle=40) # 3ème connecteur, GPIO 13 led0 = LED(24) # Les LED sont connectées au servo5/GPIO 24 distance= Bouton (5) # capteur de distance connecté vers servo3/GPIO 05 # autres: GPIO 6 sur servo1, 12 sur servo4 aiy.audio.say("Bonjour !",) aiy.audio.say("Pour commencer, approchez votre main du capteur",) tandis que True: led0.on() # LEDs sur print("Pour activer la reconnaissance vocale, approchez une main du capteur de distance, puis parlez") print('Les mots-clés attendus sont: mains/gauche/droite haut/bas/centre, ') print('LED marche/arrêt, danse et au revoir.') print() distance.wait_for_press() print('Écouter…') aiy.audio.say("Veuillez donner vos ordres",) led0.blink() # light blink text = Recognizer.recognize() si le texte est Aucun: aiy.audio.say('Désolé, je ne vous ai pas entendu.',) else: print('Vous avez dit "', text, '"') # Vous permet vérifiez l'interprétation du système si 'right up' dans le texte: print('Moving servo0 to maximum position') servo0.angle=35 elif 'right down' in text: print('Moving servo0 à la position minimale') servo0.angle=-35 elif 'Centre droit' dans le texte: #les majuscules correctes sont critiques print('Moving servo0 to middle position') servo0.angle=0 elif 'left up' in text: print(' Déplacement de servo2 vers la position maximale') servo2.angle=-35 elif 'gauche vers le bas' dans le texte: print('Déplacement de servo2 vers la position minimale') servo2.angle=35 elif 'Centre gauche' dans le texte: print('Déplacement de servo2 vers position médiane') servo2.angle=0 elif 'mains en l'air' dans le texte: print('Déplacer servo2 à la position maximale') servo2.angle=-35 servo0.angle=35 elif 'mains vers le bas' dans le texte: print('Moving servo2 à la position minimale') servo2.angle=35 servo0.angle=-35 elif 'centre des mains' dans le texte: print('Déplacement de servo2 à la position médiane') servo2.angle=0 servo0.angle=0 elif 'LED éteinte' dans le texte: print ('éteindre la LED externe 0') led0.off() elif 'LED allumée' dans le texte: print ('allumer la LED externe 0') led0.on() # light elif 'dance' dans le texte: print ('présente maintenant la danse numéro un') aiy.audio.say("Eh bien, je ferai de mon mieux!",) led0.on() # s'allume pour i dans la plage (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 'Au revoir' dans le texte: aiy.audio.say("Au revoir",) aiy.audio.say('Arrivederci',) aiy.audio.say('Auf Wiedersehen',) servo0.angle=0 servo2.angle=0 led0.off() sleep (3) print('bye!') break else: print('aucun mot-clé reconnu!') aiy.audio.say("Désolé, je ne t'ai pas compris",) if _name_ == ' _principale_': principale()

Conseillé: