Table des matières:
- Étape 1: Matériaux utilisés
- Étape 2: configuration et utilisation
- Étape 3: Le code
- Étape 4: Outlook et remarques
Vidéo: Un sémaphore de type braille à commande vocale : 4 étapes (avec images)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
"Lord Vetinari se tenait à sa fenêtre et regardait la tour sémaphore de l'autre côté de la rivière. Les huit grands volets en face de lui clignotaient furieusement - noir, blanc, noir, blanc, noir, blanc… Des informations volaient dans les airs. Vingt milles derrière lui, sur une autre tour de Sto Lat, quelqu'un regardait à travers un télescope et criait des chiffres. À quelle vitesse l'avenir nous attend, pensa-t-il. " T. Pratchett, Le cinquième éléphant
Après avoir construit un jumping jack à commande vocale basé sur le kit vocal AIY, j'ai eu l'idée de construire un sémaphore à commande vocale, réunissant les dernières technologies informatiques avec les débuts des télécommunications et du transfert de données.
Au départ, j'ai eu l'idée de reproduire le système sémaphore français de Chappe, qui était le premier système connu de télécommunications à l'échelle nationale utilisant un système sémaphore. Mais cela s'est avéré un peu trop compliqué à réaliser en utilisant des servos standard en une journée. Mon prochain objectif était quelque chose de similaire au système de claquements décrit par Terry Pratchett, par ex. dans "Going Postal", en tant que système de sémaphore à obturateur 2x4 (pas comme la matrice 4x4 décrite dans le film). Malheureusement, je n'ai pas pu trouver trop de détails techniques disponibles sur ce système. Je me suis donc retrouvé avec le système de sémaphore matriciel 2x3 développé par Lord Murray, qui avait été utilisé par la marine britannique pendant un certain temps. De plus, un système à six obturateurs/bits s'adapte bien aux six connecteurs servo disponibles sur le HAT vocal AIY. Mais, comme je n'avais pas six servos sous la main entre les années, j'ai finalement décidé de construire d'abord un simulateur composé de LED.
Concernant le code affiché, on pouvait utiliser le système Murray, mais là encore les informations dont je disposais étaient assez limitées, ne permettant pas d'afficher des chiffres et des symboles. J'en suis donc venu au point d'utiliser à la place le système Braille, qui utilise également une matrice 2x3 pour afficher des lettres, des chiffres et d'autres signes. Le système Braille est la norme internationale pour imprimer des textes lisibles pour les aveugles. C'est également un langage de balisage, qui utilise un indicateur numérique pour définir que les nombres seront affichés ensuite, et les indicateurs pour définir qu'une ou plusieurs des lettres suivantes sont écrites en majuscules. J'ai donc décidé de mettre en place un système un peu simplifié, avec des chiffres et quelques signes définis par l'extension Nemeth du système braille à la place, et de n'utiliser que des majuscules, au moins pour le début. Cela permet d'avoir des modèles uniques pour chaque lettre, chiffre ou signe à afficher dans mon application spéciale, et d'omettre l'analyse de texte requise pour le vrai braille.
Le dernier appareil permet de prononcer un mot ou une phrase dans le système de reconnaissance vocale AIY, puis les données du modèle vocal sont envoyées via WLAN et Internet à un serveur Google aux États-Unis, y sont décodées et, au moins dans mon cas, interprétées les données sont renvoyées en Europe, où finalement j'obtiens la phrase reconnue affichée sous forme de chaîne de texte. Cette chaîne de texte est ensuite divisée par le script Python en lettres individuelles, et maintenant, par comparaison avec un dictionnaire définissant les modèles correspondants, les informations sur le modèle sont récupérées et les modèles sont affichés sur une matrice LED 2x3. S'il vous plaît jeter un oeil sur la vidéo d'accompagnement.
J'ai réglé le taux d'affichage à un caractère par seconde, ce qui devrait être suffisamment long pour qu'une personne formée puisse identifier et traduire le modèle. Une prochaine étape possible serait d'utiliser un appareil de reconnaissance de formes comme le AIY vision HAT (jusqu'à présent non disponible en Europe) pour lire et interpréter les modèles automatiquement, afin de fermer la boucle.
D'autres concepts d'amélioration, certains avec une pertinence plus réelle, sont discutés dans la partie « perspectives » de cette instructable.
Étape 1: Matériaux utilisés
Framboise Pi 3
CHAPEAU voix AIY
Huit LED blanches, diamètre 5 mm. Ceux-ci fonctionnent sur 3V, une résistance est donc nécessaire.
Résistance 100kOhm. Peut-être pas la solution parfaite, mais était à portée de main.
Câbles de démarrage
Un petit bout de fil
Planche à pain, facultative pour tester la configuration.
Une boîte en plastique pour cartes de visite.
Deux morceaux de mousse plastique de 4 mm, certains laissés par des déchets.
Un morceau de membrane en plastique, comme diffuseur, comme ci-dessus.
Fer à souder et soudure, un couteau.
Étape 2: configuration et utilisation
Configurez le Raspberry Pi et AIY HAT comme indiqué dans le manuel AIY Voice HAT. Je recommanderais de souder les en-têtes au moins aux ports servo avant d'assembler Pi et HAT, car cela vous permet de connecter facilement des servos, une maquette ou des LED.
La boîte de présentation avait été construite à partir du couvercle d'une boîte en plastique pour cartes de visite, de deux morceaux de mousse s'insérant dans la boîte et d'un morceau de membrane d'emballage de taille similaire comme diffuseur. Dans l'une des pièces en mousse, six trous ont été percés et les LED placées dedans. Les pieds les plus courts (côté masse) des LED ont été reliés entre eux par un morceau de câble, puis une résistance a été ajoutée et un cavalier a été soudé à ce dernier. Aux autres pieds (côté plus) des LED, des câbles de démarrage ont été soudés.
Ceux-ci ont ensuite été connectés aux ports servo du HAT vocal AIY via des câbles d'allongement, le côté positif aux broches (extérieures) "P in", le connecteur négatif à l'une des broches de masse/moins (intérieures). Veuillez consulter le schéma ci-joint.
Je recommande fortement de tester la configuration sur une maquette avant de souder.
Maintenant, la membrane, la plaque LED et la couche d'étanchéité ont été placées dans la boîte en plastique.
Placez le script Braille_LED_1.py dans le dossier src. Dans ce cas, vous devrez peut-être d'abord rendre le script exécutable.
Maintenant, en utilisant le terminal de développement (!), le programme Braille_LED_1.py est lancé. Entrez 'src/Braille_LED_1.py' et appuyez sur 'Entrée'.
Il vous sera maintenant demandé d'appuyer sur le bouton de la boîte AIY et de dire votre mot ou votre phrase. Avec un certain retard, le système répétera ce qui avait été compris et l'affichera à l'écran ainsi que, lettre par lettre, sur l'affichage à six LED.
Si vous donnez le mot-clé "Au revoir" au lieu d'une phrase, le système vous dira Au revoir et le programme sera fermé.
Étape 3: Le code
Vous trouverez ci-dessous le code qui vous permet de parler à l'appareil vocal AIY et d'afficher la phrase reconnue lettre par lettre sur un petit « sémaphore » à 2x3 LED ou une matrice de type Braille.
Le code est un dérivé du script que j'ai utilisé pour un projet précédent utilisant le AIY voice HAT, étant un dérivé de l'exemple servo_demo.py décrit dans le manuel AIY voice HAT.
Vous pouvez également trouver un dictionnaire avec la partie du code Murray que j'avais trouvé sur Internet, sous forme de fichier texte. Il ne contient pas non plus de chiffres et omet certaines lettres, ce qui poserait problème ici.
Une limitation du programme dans son état actuel est que si un signe n'était pas inclus dans le dictionnaire, il ferait planter le programme. De plus, il ne s'agit pas d'une représentation du code braille complet en tant que langage de balisage. Comme vous pouvez le voir dans le script ci-dessous, le code Nemeth pour les nombres est redondant avec certains signes en braille standard, mais cela ne devrait pas poser de problème pour notre application spécifique.
#!/usr/bin/env python3
# Ce script est une adaptation du script servo_demo.py pour le HAT vocal AIY, # optimisé pour l'affichage de symboles de type Baille basé sur AIY import aiy.audio import aiy.cloudspeech import aiy.voicehat from gpiozero import LED #from gpiozero import Button from time import sleep # Dictionnaire: un alphabet braille modifié artificiellement, # nombres et quelques symboles tirés de l'extension Nemeth du braille Braille_6A = { " ": "123456", # espace "A": "1", "B": "12 ", "C": "14", "D": "145", "E": "15", "F": "124", "G": "1245", "H": "125", "I": "24", "J": "245", "K": "13", "L": "123", "M": "134", "N": "1345", "O ": "135", "P": "1234", "Q": "12345", "R": "1235", "S": "234", "T": "2345", "U": "136", "V": "1236", "X": "1346", "Y": "13456", "Z": "1356", "W": "2456", "#": "3456 ", # Préfixe numérique, c'est-à-dire que les signes suivants sont des nombres ", ": "2", ".": "256", # Point, fin de phrase (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # La lettre suivante est en majuscule; Numéro-Arrêt ? "": "", # Le code Nemeth Braille est une extension mathématique du Braille à 6 points # voir: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth Code '1', Braille 'virgule' "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Nemeth '6', Braille '!' "7": "2356", "8": "236", # Nemeth '8', Braille '?' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ": "23456", "*": "1346" # '*' est un symbole à deux motifs dans Nemeth, ici remplacé par un 'x' pour omettre les plantages } """ pour des raisons de simplicité, les motifs de nombre Braille standard donnés ci-dessous ont été remplacés par les Nemeth-Codes correspondants "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6": "124", "8": "1245", "9": "24", "0": "245", """ #Texte = "rbhTZkl 9t64+34#!" # Exemple de texte, à des fins de débogage def main(): reconnaissant = aiy.cloudspeech.get_recognizer() reconnaissable.expect_phrase('au revoir') # mot-clé, termine le programme button = aiy.voicehat.get_button() # AIY Statut du bouton led = aiy.voicehat.get_led() # AIY Button-LED status aiy.audio.get_recorder().start() led_1 = LED(26) # 1er connecteur, servo0, GPIO 26 # led supérieur gauche_2 = LED(6) # 2ème connecteur, servo1, GPIO 06 # led milieu gauche_3 = LED (13) # 3ème connecteur, servo2, GPIO 13 # led inférieur gauche_4 = LED (5) # 4ème connecteur, servo3, GPIO 05 # led supérieur droit_5 = LED (12) # 5ème connecteur, servo4, GPIO 12 # milieu droit led_6 = LED(24) # 4ème connecteur, servo3, GPIO 13 # en bas à droite #distance= Bouton (5) # capteur de distance connecté au servo3/GPIO 05, non utilisé ici aiy.audio.say ("Bonjour!",) aiy.audio.say("Pour commencer, s'il vous plaît appuyez sur le bouton",) aiy.audio.say("Si vous me dites au revoir, je vais terminer le programme",) tandis que True: # démarre loop led.set_state(aiy.voicehat. LED. BLINK) print("Pour activer la reconnaissance vocale n, appuyez sur le bouton bleu, puis parlez") print() button.wait_for_press() print('Écouter…') aiy.audio.say("J'écoute",) led.set_state(aiy.voicehat. LED. BLINK_3) text = reconnaissant.recognize() # chaîne de texte de la phrase reconnue led.set_state(aiy.voicehat. LED. OFF) si le texte est Aucun: aiy.audio.say('Désolé, je ne vous ai pas entendu.',) elif 'au revoir' dans le texte: aiy.audio.say("Au revoir",) aiy.audio.say('Arrivederci',) aiy.audio.say('Auf Wiedersehen',) sleep (3) print('bye! ') break # arrête la boucle et termine le programme else: print('Vous avez dit "', text, '"') # Vous permet de vérifier l'interprétation du système, y compris la majuscule aiy.audio.say('Je suppose que vous avez dit',) aiy.audio.say(text,) # vérification acoustique Text_up = text.upper() # transfère tout en majuscule print (Text_up) Text_Len = len(Text_up) print (Text_Len) pour i dans la plage (Text_Len): Lett = Text_up # Sélectionne une seule lettre, en commençant par la première, c'est-à-dire [0] print ("Letter=", Lett) Lett_B = Braille_6A[Lett] # Sélectionne le code correspondant dans le dictionnaire. Un signe manquant brisera le code ! print (Lett_B) if ("1" dans Lett_B): print ("LED 1") led_1.on() # active la LED au servo0" if "2" dans Lett_B: print ("LED 2") led_2.on() si "3" dans Lett_B: print ("LED 3") led_3.on() si "4" dans Lett_B: print ("LED 4") led_4.on() si "5" dans Lett_B: print ("LED 5 ") led_5.on() si "6" dans Lett_B: print ("LED 6") led_6.on() sleep (1) # modèle d'affichage pour une seconde print() led_1.off() # inactive toutes les LED sur les servos0 -5n led_2.off() led_3.off() led_4.off() led_5.off() led_6.off() sleep(0.3) # une courte pause sombre, pour indiquer la fin de la lettre si _name_ == '_main_ ': principale()
Étape 4: Outlook et remarques
Alors, quelle pourrait être la prochaine?
À côté de cette méta-blague informatique avec le kit vidéo AIY ou un autre système de reconnaissance d'images automatisé mentionné dans l'introduction, il pourrait y avoir d'autres options pour étendre le concept décrit dans cette instructable. Certains d'entre eux pourraient même être utiles dans le monde réel. Ceux-ci pourraient être:
- une programmation améliorée, pour que le texte soit transféré en code braille standard, avec tous les balisages et compressions. Cela ne devrait pas être beaucoup d'efforts pour un programmeur python qualifié. Ce que je ne suis pas, donc toute aide serait la bienvenue.
- étendre le système à une matrice 2x4. Cela devrait également être possible et aiderait à utiliser les codes Braille à 8 points correspondants, tels qu'ils sont utilisés par les afficheurs Braille électroniques. Au-dessus de cela, ce serait un peu plus proche du système de clacs Dearheart.
- construire un véritable afficheur braille 2x3 ou 2x4. Devrait être possible en utilisant soit un réseau de servos, soit un réseau de mini-solénoïdes 5V. Le principal défi serait que la distance standard entre les points tactiles soit de 2,45 mm, ou 1/10 de pouce, sur les écrans électroniques, de sorte que certains engrenages et mécanismes pourraient être nécessaires. L'autre défi pourrait être de réguler précisément la longueur de poussée.
Une solution aussi simple et bon marché pourrait intéresser un public plus large, car les afficheurs braille commerciaux sont assez chers. Il pourrait y avoir un avantage pour les apprenants en braille à utiliser un tel système à commande vocale. Comme ils pourraient saisir verbalement une phrase (en anglais) de leur choix, et obtenir le texte, les lettres et les signes, affichés sur le bout de leurs doigts.
- construire un système d'obturation mécanique ressemblant aux systèmes Murray ou Dearheart. Utiliser des servos, cela ne devrait pas être trop compliqué et pourrait être décrit dans un autre instructable. Ou pourrait être un beau projet d'école. Toute personne intéressée?
–――――
Quelques remarques et liens intéressants:
-Il existe une instructable décrivant une « lanterne sémaphore bricolage », une matrice LED 2x4, basée sur une carte de démonstration Propeller. J'aime bien la mise en page, mais la programmation m'a l'air un peu compliquée. S'il vous plaît regardez vous-même.
- J'ai maintenant trouvé un programme python pour générer du braille entièrement contracté (niveau 2). Malheureusement, il est limité à python 2 et à la version anglaise américaine de 2002:
- un programme plus complet semble être liblouis, https://github.com/liblouis/liblouis, mais je n'ai aucune idée de comment l'intégrer dans cette solution.
- une solution python intéressante semble venir de Grèce, https://github.com/ant0nisk/pybrl peut intégrer plusieurs langues et générer du braille de niveau 2.
- Je ne suis ni programmeur, ni électronicien, et je n'avais pas beaucoup de connaissances en braille il y a quelques jours.
Donc si vous voyez des erreurs, des omissions, ou si vous avez des idées pour le projet, faites-le moi savoir.
-Si vous aimez cette instructable, veuillez voter pour elle !
Conseillé:
Drone Raspberry Pi à commande vocale Alexa avec IoT et AWS : 6 étapes (avec photos)
Drone Raspberry Pi à commande vocale Alexa avec IoT et AWS : Salut ! Je m'appelle Armaan. Je suis un garçon de 13 ans du Massachusetts. Ce tutoriel montre, comme vous pouvez le déduire du titre, comment construire un drone Raspberry Pi. Ce prototype montre comment les drones évoluent et aussi quel rôle ils pourraient jouer dans le
Assistant à commande vocale à domicile/laboratoire : 14 étapes (avec images)
Assistant à commande vocale à domicile/laboratoire : à propos de moiHello ! Il s'agit de mon premier instructable, j'ai 17 ans. Je viens de Grèce, donc mon anglais n'est peut-être pas parfait mais je ferai de mon mieux. J'ai donc d'abord conçu cette application il y a 2 ans et j'ai trouvé ce concours l'occasion de mettre à jour mon ancien projet
Contrôle des appareils avec la commande vocale à l'aide de NodeMCU : 7 étapes (avec images)
Contrôle des appareils avec commande vocale à l'aide de NodeMCU : Je veux juste dire bonjour à tout le monde, c'est la première fois que j'écris un projet instructable. L'anglais n'est pas ma langue maternelle donc je vais essayer de faire court et aussi clair que possible. Contrôler des appareils avec une commande vocale n'est pas une chose étrange
Rédacteur en braille simple (discours en braille) : 8 étapes (avec images)
Simple Braille Writer (Speech to Braille): Bonjour à tous, Tout cela a commencé par faire un simple traceur XY après l'avoir terminé avec succès, j'ai pensé développer un simple convertisseur de texte de discours en braille. J'ai commencé à le rechercher en ligne et, de manière inattendue, les prix étaient trop élevés , ça m'a boosté
Led RVB à commande vocale : 5 étapes (avec images)
Led RVB à commande vocale : Bonjour les gars1 Aujourd'hui, je vais vous montrer comment construire une led RVB à commande vocale à l'aide d'un arduino/Ebot8