Article original : The hardware behind Otto: a monkey plush which became my vocal assistant

Par Flavio De Stefano

Otto est un doudou singe que nous avons trouvé dans un magasin d'autoroute lors d'un voyage avec ma copine en février 2017.

Sa capacité, tout en étant extrêmement mignon, était de vous écouter, puis de marcher et de répéter toutes les choses avec une tonalité plus élevée.

Mon objectif était de le rendre plus puissant en le transformant en assistant vocal.

Image SkeletOtto et Otto

Ceci est la première partie d'une série sur Otto.

À l'origine, il était composé des éléments matériels suivants :

  • Un moteur connecté à ses jambes pour lui permettre de marcher
  • Une carte intégrée simple et fermée (aux modifications)
  • Un microphone et un haut-parleur
  • Un bouton-poussoir pour démarrer la phase d'écoute
  • Quatre piles AA
  • Un interrupteur pour couper complètement l'alimentation du circuit

Je voulais remplacer toutes ces choses par du matériel frais et programmable.

Le vrai défi ici était de trouver les bons composants qui s'adaptaient au boîtier d'origine. L'espace disponible n'était pas très grand, donc chaque choix devait être fait consciencieusement.

Carte de base

Le matériel préféré pour ce projet est la carte Raspberry PI.

Elles sont minuscules et suffisamment puissantes pour permettre aux développeurs d'utiliser un langage de programmation de haut niveau et des bibliothèques intégrées sans flasher le logiciel à chaque fois.

De plus, vous pouvez déboguer votre application dans un environnement plus confortable.

Le meilleur matériel à l'époque était le Raspberry Pi Zero W. Lancé à la fin du mois de février 2017, le Pi Zero W possède toutes les fonctionnalités du Pi Zero original mais avec une connectivité ajoutée.

Image Raspberry Pi Zero W

La carte n'était pas suffisante pour un tel projet, donc j'ai ajouté du matériel supplémentaire.

Composants audio

Pour construire un assistant vocal, nous avons besoin de composants audio. Les exigences pour ces composants sont, bien sûr, un haut-parleur et un microphone.

Pour le microphone, j'ai essayé un microphone USB. Le problème avec cet accessoire était qu'il n'était pas aussi sensible que je l'aurais souhaité. De plus, un hub USB supplémentaire était nécessaire pour le connecter.

De plus, je ne pouvais pas connecter facilement un haut-parleur brut.

Pour cette raison, j'ai opté pour l'achat d'une carte supplémentaire qui accomplissait très bien cette tâche : ReSpeaker 2-Mics Pi HAT.

ReSpeaker 2-Mics Pi HAT est une carte d'extension à double microphone pour Raspberry Pi conçue pour les applications d'IA et vocales.

La carte est développée sur la base de WM8960, un codec stéréo à faible consommation. Il y a 2 microphones de chaque côté de la carte pour collecter les sons. Elle offre également 3 LEDs RGB APA102, 1 bouton utilisateur et 2 interfaces Grove sur la carte.

Je ne prévoyais pas de connecter des LEDs à ma carte, mais le fait que ce HAT ait des LEDs intégrées m'a fait penser à les utiliser.

Image ReSpeaker 2-Mics Pi HAT — Spécifications matérielles

Ensuite, j'ai pris un ancien mini-haut-parleur Bluetooth, je l'ai démonté et je l'ai connecté au port de sortie JST 2.0 Speaker Out.

Pour le faire fonctionner, vous devez installer leurs pilotes sur votre carte. Les pilotes sont également utilisés pour contrôler les LEDs dans votre application via un protocole standard.

Image ReSpeaker 2-Mics Pi HAT

Astuce : lorsque vous installez un shield, toutes vos broches GPIO sont couvertes. Il est utile de savoir quelles broches sont réellement utilisées par votre carte. Pour cela, utilisez https://pinout.xyz/

Par exemple, pour cette carte, consultez ce lien : https://pinout.xyz/pinout/respeaker_2_mics_phat

Alimentation de la carte

La carte Raspberry Pi peut être facilement alimentée via une entrée USB 5V. Le problème avec cette approche est que vous devez acheter un pack de batteries et le connecter via USB.

Je n'ai pas trouvé de pack de batteries assez petit pour s'adapter à mon doudou, donc mon unique alternative était d'utiliser des batteries LiPo.

Image Batterie LiPo — 3.7V 2000mAh

Vous ne pouvez pas connecter votre batterie LiPo directement à votre carte, vous devez utiliser un convertisseur. Il peut être alimenté par n'importe quelle batterie LiIon/LiPoly 3.7V, puis il convertit la sortie de la batterie en 5.2V DC.

Initialement, j'ai acheté un LiPo SHIM, mais je n'ai pas remarqué que ce contrôleur alimente votre carte sans charger vos batteries.

Pour cette raison, je suis passé à Adafruit PowerBoost 500 Charger. Il dispose d'un circuit de chargeur de batterie intégré. Vous pourrez garder votre projet en fonctionnement même pendant la charge de la batterie !

Image Adafruit PowerBoost 500 Charger

Matériel supplémentaire

Le logiciel utilise le concept de "mot clé" pour démarrer l'interaction. Basiquement, il écoute continuellement un mot clé, comme "Hey Otto", puis vous parlez et dites des commandes.

Pour avoir une méthode alternative pour démarrer l'interaction, j'ai installé un bouton-poussoir connecté directement à la carte GPIO, à la broche GPIO8.

Image Bouton-poussoir

Maintenant, une seule chose manquait : l'interrupteur marche-arrêt.

J'ai connecté ce simple composant au PowerBoost Charger via son port ENABLE. Le but du port ENABLE est de déconnecter complètement la sortie.

Image Interrupteur marche-arrêt

Connecter tout ensemble

Ici vous pouvez voir en détails le schéma de circuit complet (https://www.circuit-diagram.org/circuits/0d85ce05)

Image Schéma de circuit d'Otto

Et voici un aperçu du travail :

Image Le matériel derrière Otto