Nous avons fabriqué Écho : un robot bipède autonome capable de marcher comme un humain. Il parle, entend et comprend les questions et y répond !
Ce projet ne nécessite ni tour, ni fraiseuse, CNC, imprimante 3D... Un établi, un étau et une perceuse suffisent pour la mécanique.
En fait, la tête d’Écho est constituée du boitier audio d'un Alexa Écho Pop (le moins cher des Alexa : entre 30 et 40 €) et de sa carte principale. (Alexa Écho Pop est trop grosse, pas belle, et surtout trop lourde pour le robot).
Rappelons qu'Alexa est une famille d'enceintes connectées intelligentes, proposées par Amazon et capable de diffuser de la musique, allumer des appareils et interrupteurs et plein d'autres choses... (Alexa, allume la lampe, Alexa, éteint le chauffage, Alexa, raconte-nous une blague...)
Cet Alexa Écho Pop est relié en Wifi à Arduino Cloud et à la carte Arduino Nano 33 Iot (Sur le dos d'Écho). Ainsi, en développant dans Arduino Cloud, on peut donner des ordres à Écho : Écho lève le bras...
Nota : Pour des petits projets, L'utilisation d'Arduino Cloud est gratuite.
Ce projet peut se construire à 5 niveaux. On peut s'arrêter à chaque niveau, continuer plus tard, ou jamais :
On construit le robot avec la carte Arduino Nano 33 Iot mais sans la tête Alexa Écho Pop. Le robot est autonome, muet et silencieux.
On construit le robot avec la carte Arduino Nano 33 Iot et la tête Alexa Écho Pop mais sans Arduino Cloud et sans programmer Alexa Écho Pop. Le robot parle, répond mais il est schizophrène : il n'y a aucune relation avec ce qu'il fait et ce qu'il dit : un dictionnaire ambulant !
On construit le robot avec la carte Arduino Nano 33 Iot et la tête Alexa Écho Pop mais sans Arduino Cloud. Mais on programme Alexa Écho Pop avec des routines à travers l'application Alexa : Si on demande à Écho "Qui est ton constructeur", il répond "Mon constructeur, c'est Oncle Hub, mon maître" etc...
On construit le robot avec la carte Arduino Nano 33 Iot et la tête Alexa Écho Pop, avec Arduino Cloud que l'on utilise pour programmer Alexa Écho Pop et la relier à l'Arduino Nano 33 Iot. Le robot parle répond et obéit aux ordres : lève le bras, va à droite, arrête...
On ajoute Tensor Flow Lite à Écho pour le munir d'une IA et lui permettre d'apprendre...
On peut ainsi construire le robot progressivement et s'arrêter ou reprendre quand on veut...
Nota : la fabrication d'un robot bipède est nettement plus difficile que celle d'un Robot quadrupède comme Coucouic.
Nota : le nombre de noms que l'on peut donner à Alexa Écho Pop est limité : Alexa, Amazon, Écho, Ordinateur, Ziggy. D'où le nom du robot : Écho. (Nous lui avons donné une voix masculine assez lente). A noter qu'on ne peut (malheureusement) pas lui donner une voix d'enfant, garçon ou fille.
Nota : L'alimentation Amazon vendue avec Alexa Écho Pop fournit une tension de 12V. Nous avons alimenté Alexa Écho Pop avec les batteries d'Écho : environ 8V. Alexa Écho Pop fonctionne dans ces conditions (jusqu'à environ 6V) mais la puissance maxi du son sera sans doute limitée. Mais bon, nous n'utilisons pas toute la puissance sonore disponible. (Sinon, il faut rajouter un convertisseur supplémentaire et diminuer l'autonomie...). Le courant de veille d'Alexa Écho Pop est d'environ 30 mA.
Alexa Écho Pop en version noire et couleur lavande :
Nous avons démonté Alexa Écho Pop pour gagner de la place et surtout du poids :
Le boîtier en plastique et sa grille
Les 2 circuits imprimés : la carte principale et le connecteur Jack d'alimentation
Le guide de lumière pour les Leds
Le boitier acoustique en plastique noir avec son le haut-parleur (avec une tôle en aluminium que nous n'utilisons pas).
Nous n'utilisons que le boitier acoustique avec son haut-parleur, la carte principale et un morceau de grille dépouillé de son tissu (pour protéger le haut-parleur) et recoupée.
L'utilisation d'un Arduino Nano Iot et d'Arduino Cloud offre énormément de possibilités à Écho...
Nota : Pour que la tête fonctionne, il faut évidemment que Écho soit relié à un réseau Wifi (Sinon, on utilise le point d'accès du téléphone, la tête d'Écho peut fonctionner "n'importe où")... Le reste du robot est entièrement autonome.
Nous avons installé la boîte acoustique en plastique noir comme tête sur Écho avec la grille d'origine modifiée. Ça donne à Écho un petit air "Darth Vador". Nous avons aussi installé la carte d'Alexa Écho Pop dans son dos, fixée sur la plaque en plexiglas de protection d'Arduino Nano 33 Iot.
Écho est capable de se relever s'il tombe sur le ventre ou sur le dos. Pour pouvoir se relever, son "cerveau" est un Arduino Nano 33 Iot : Un Arduino Nano mais plus puissant (et plus cher : ~25 €) et muni d'un IMU (Inertial Measurement Unit). (L'IMU permet de connaitre l'orientation de la carte dans les 3 axes X, Y et Z). Attention : les Arduino Nano fonctionnent, en principe avec une tension d'alimentation de 5V. L'Arduino Nano 33 Iot fonctionne sous une tension d'alimentation de 3.3V. Le maximum des tension sur les entrées analogiques est donc de 3.3V.
A noter que l'on pourrait faire tourner (voir l'article d'Elektor de septembre-octobre 2024) une IA limitée (Tensor Flow Lite) sur cette carte. Pour faire par exemple, de la reconnaissance vocale sans passer par Alexa ou que Écho apprenne à marcher et se relever tout seul...
L'Arduino Nano 33 Iot contient aussi un module Wifi et un module Bluetooth. Module Bluetooth qu'il n'est pas prévu d'utiliser dans Écho.
Écho est équipé de servomoteurs robot. Nous souhaitons en mettre le minimum. (8). Chaque servomoteur est livré avec un étrier en aluminium fixe et un mobile.
Pour marcher correctement, il faut, a priori, au minimum :
Un servomoteur à la cheville
Un servomoteur au genou
Un servomoteur à la tête du fémur
Il faut donc 3 servomoteurs par jambe. Nous souhaitons ajouter 1 servomoteur par bras, pour l’esthétique et l'équilibre pendant la marche (et peut-être aussi pour qu'Écho puisse se relever plus facilement après une chute. Il faut donc 8 servomoteurs en tout.
Nota: on appelle souvent les servos, les moteurs ou les actuateurs des DOF (Degree Of Freedom). Plus il y en a, plus le robot est agile et plus il est difficile à programmer.
Écho est muni d'un capteur à ultrason, de l’interrupteur de marche à levier et d'un microphone comme notre Couicouic le Robot. Écho peut se mettre en veille avec une très faible consommation et s'animer quand il entend du bruit et activer la tête Alexa Écho Pop pour répondre aux questions. Attention au capteur à ultrason : sa tension d'alimentation max est de 5.5V : on ne peut pas l'alimenter directement avec les batteries qui montent à 8.4V. Il faut, par exemple, ajouter un régulateur 78L05 pour l'alimenter !
Écho est alimenté par 2 batteries 18650, chacune munie d'un connecteur SM-2P. Les batteries sont branchées en série (contrairement à Couicouic où elles sont en parallèle) pour augmenter le rendement et simplifier la construction. Une batterie est fixée sur chaque bras pour l'équilibre.
Nota : pour charger les 2 batteries Lithium type 18650, on trouve des petits chargeurs USB qui sont très pratiques mais mal conçus : en fait de gestion de charge il y a une simple résistance série (3.9 ohms) (et un transistor pour allumer la Led)
Il vaut beaucoup mieux utiliser ce genre de carte qui enclenche la charge en dessous de 4.1V, la déclenche au-dessus de 4.3V (+-1.2%), la limite à 0.6A, allume une Led rouge pendant la charge, une Led bleue quand la batterie est chargée. Elle limite le courant d'utilisation à 3A, coupe la batterie en dessous de 2.4V et fait clignoter la Led rouge en cas d'anomalie.
Nous pensions alimenter directement l'Arduino Nano 33 Iot et les servomoteurs avec les batteries (pas de convertisseur ). Il n'est pas évident de trouver des servomoteurs qui encaissent les 8.6V des batteries à un cout raisonnable...
Écho est donc équipé d'un convertisseur (fixé sur sa poitrine) pour les servomoteurs (un modèle 10A). (Le convertisseur permet aussi de régler finement la tension des servos et donc leur puissance et la consommation à vide).
Nomenclature et cout du projet :
8 servomoteurs : 96€ les 8 (plus ou moins chers selon la qualité)
2 batteries 18650 avec connecteur SM-2P : 6.25€ les 2 (Attention aux batteries 18650 qui affichent des capacités grotesques : 90 000 mAh par exemple)
1 Arduino Nano 33 Iot : 25€
1 Convertisseur 9A : 3€71
1 Capteur ultrason : 1€80
1 Carte microphone : 1€30
1 Alexa Écho Pop (option) : 40 € (entre 20 à 30 € d'occasion)
Soit un total approximatif de 170€ sans la visserie, un peu d'aluminium, un interrupteur et quelques bricoles...
Projet 3D d'Écho :
De bas en haut :
Les pieds d'Écho : 2 plaques en acier (pour lester un peu le bas) 120x75 (pour suffisamment de stabilité) vissées sur les étriers du servomoteur de cheville avec une semelle en plastique (collée adhésif double face).
Les 2 servomoteurs de cheville (axe AV&AR) 270° (angle : +- 100°) qui permettent d'incliner Écho pour changer alternativement d'appui : pied gauche/pied droit.
Les 2 servomoteurs de genou (axe G&D) 270° (angle : +- 135°) directement fixés par leurs étriers à l'étrier du servomoteur de cheville.
Les 2 servomoteurs de hanche (axe G&D) 270°, (angle : +- 135°) fixés par leurs étriers à :
1 profilé en aluminium en U pour écarter les jambes et les bras
2 profilés aluminium en U, l=20 vissés l'un contre l'autre et qui constituent le thorax d'Écho et maintiennent, dans le dos, la carte Arduino Nano Iot et sur la poitrine le convertisseur.
Sur le profilé en U sont fixés, par leurs étriers, les 2 servomoteurs de bras (axe G&D) 270° (angle : depuis la verticale avant jusqu'à 90° arrière), reliés aux bras.
Bras : 2 tubes PVC formés à chaud (avec une forme en bois, dans l'étau). Dans chacun est installée une batterie 18650 avec connecteur SM-2P. Le mouvement des bras pendant la marche et la masse de la batterie 18650 permettent d'équilibrer Écho et d'atteindre une vitesse un peu plus élevée. Aux extrémités de chaque bras est fixé un bouchon de bouteille (liège) pour amortir les chutes, pour que le robot puisse se relever plus facilement. A l'autre extrémité, une petite équerre en alu pour éviter (bug) que le bras puisse faire plus d'un tour et arracher les fils de la batterie. Elle retient aussi la batterie vers le haut. Une vis plastique retient la batterie vers le bas.
Le convertisseur de tension pour fournir la tension aux servomoteurs
Le microphone et l'interrupteur de marche (Interrupteur finalement placé sur le côté pour une meilleure accessibilité). En, fait, l'interrupteur a 3 positions :
Avant : Marche Robot et Alexa Écho Pop : le robot se déplace et on peut discuter avec lui
Milieu : Arrêt
Arrière : Alexa Écho Pop seul : on peut discuter avec le robot qui est immobile
La tête Alexa Écho Pop (option)
La mécanique est minimum :
2 plaques en acier rectangulaires (120x75x2) avec des trous pour les chaussures
2 profilés en U (environ 80x40x20) percés
1 Profilé en U 25x20 e1.5 l120
2 tubes PVC avec des trous pour les bras
Quelque chose pour fixer l'Arduino Nano 33 Iot sur les profilés en U
Carte microphone :
Les dimensions d'Écho : ~180x120x370 mm
Masse : environ 1.55 kg (avec la tête)
Il faut d'abord mettre au point une jambe avec ses 3 servos. Puis la 2e jambe et écrire le code pour faire marcher Écho . On peut déjà réaliser un robot-tronc. Il faudra éventuellement optimiser les dimensions et la forme des chaussures. Il faut déterminer la vitesse de marche maxi sur un sol plat sans (trop) se casser la figure.
Il faut écrire le code pour faire tourner à gauche ou à droite, reculer Écho .
Puis, avec le capteur à ultrason, écrire le code pour que Écho évite les obstacles en utilisant le recul et la rotation. (le capteur à ultrason doit être incliné vers le sol)
Il faut ensuite mettre au point un algorithme pour qu'Écho se relève s'il tombe sur le ventre ou sur le dos (ce qui est facilement détecté par l'IMU de l'Arduino Nano 33 Iot. Il faut s'assurer qu'il puisse se relever d'un point de vue mécanique (masses, centre de gravité) et que les bras ont la longueur adéquate.
On peut alors écrire le code pour mettre Écho en veille (~20mA hors Alexa Écho Pop) , à l'écoute avec le microphone, et le réveiller s'il entend du bruit.
Nota : Alexa Écho Pop, en veille, consomme environ 30 mA...
Quand Écho est debout, à l'arrêt, on peut détecter (avec l'IMU) si on est en train de le pousser vers l'avant ou l'arrière et mettre un pied en avant ou en arrière pour éviter de tomber...
Il n'est pas prévu que Écho puisse tourner la tête...
En théorie, avec l'IMU, Écho pourrait monter des plans inclinés ou des (petits) escaliers...
On pourra ensuite habiller Écho ...
Réalisation :
Un début d'embryon d'Écho, de haut en bas :
Les vis écrous M3
La carte microphone
L'interrupteur Marche à levier 3 positions
Les 2 profilés en aluminium en U vissés M3 qui forment le thorax
Les 2 batteries avec un cordon USB de charge
Les 2 plaques rectangulaires des pieds 120x75
Il manque :
les 8 servomoteurs avec leurs étriers...
Un morceau de jambe assemblé avec 2 servomoteurs : (il manque le profilé en U, la cheville et le pied)
Attention à l'ordre de montage !
Premiers essais :
Les servomoteurs fonctionnent bien, il sont relativement silencieux, puissants et rapides. Par contre, visiblement, ils n'aiment pas être alimentés au-dessus de 5V : à partir de 6V, la consommation à vide augmente beaucoup (150 mA par servo x 8) et ils deviennent instables.
Sur la photo : de haut en bas :
Les 2 profilés en U qui accueillent :
une petite équerre en aluminium avec la carte microphone
Une équerre en aluminium qui maintient le capteur à ultrason
L'interrupteur de marche à levier
2 servomoteurs reliés à :
La carte Arduino Nano Iot
Les mouvements de jambe fonctionnent. Il manque le pied (et le bras) et le profilé en U.
Nous avons écrit le code Arduino d'Écho qui compte environ 1000 lignes. (Une bonne partie du code est écrite avec l'aide de l'IA : ChatGPT4o). La puissance de l'Arduino Nano 33 Iot nous a permis de trouver une solution logicielle simple pour gérer les mouvements de plusieurs servomoteurs à la fois (éventuellement les 8 ensembles) avec des angles différents et accélération et décélération de chaque mouvement de servomoteur. On gagne en vitesse, en équilibre et en souplesse (et aussi en consommation)...
Nous avons construit une potence pratique pour la mise au point d'Écho (les pieds d'Écho sont à peu près à 1 cm au-dessus de la base de la potence) :
Nous avons fait les zéros mécaniques précis et mesuré les angles exacts. Nous avons vérifié qu'Écho peut marcher en inclinant ses pieds : ça marche. Nous avons vérifié qu'il peut se relever : pas beaucoup de marge avec le poids supplémentaire des batteries, du convertisseur et de la tête mais le poids des pieds en acier aide.
Nota : on peut tester la plupart des mouvements d'Écho, hors tension, en pliant manuellement les hanches, les genoux, les pieds et en notant les angles dans le logiciel...
Les 8 servomoteurs sont montés (il manque le profilé en U) mais non câblés. Il manque le convertisseur (sur la poitrine) les batteries (une sur chaque bras) le profilé aluminium en U et la tête. Les bras et les pieds sont provisoires.
La 2e vidéo d'Écho sans la tête : entièrement autonome, il tombe, mais se relève (à peu près) tout seul...
Écho presque complet (sauf la tête), câblé avec le convertisseur . Nous avons rajouté une "casquette" pour protéger le capteur à ultrason (tordu par les chutes) et 2 "demi-frites" (de piscine) comme amortisseur de choc provisoire en cas de chute avant ou arrière. Le hardware est à peu près fini (il manque le câblage des ultrasons et du microphone). Écho sans la tête pèse 1050 g.
Côté logiciel : pencher en avant, à gauche, tourner à droite, à gauche, bouger, marcher en glissant, assis, arbre droit, se relever quand il est sur le ventre ou sur le dos... fonctionnent.
Le plus difficile est sans doute de le faire marcher en statique. On peut aussi le faire marcher en dynamique : en balançant les pieds au bon rythme tout en essayant de garder de la stabilité sur n'importe quel sol. Le code est plus difficile à mettre au point dans la mesure où on ne peut pas ralentir le mouvement ou faire des pauses entre chaque phase. Il faut trouver expérimentalement la bonne vitesse, les bons angles des pieds, des cuisses des mollets et des bras (qui permettent de compenser l'équilibre). Par contre, on peut obtenir une marche relativement rapide. Il faut aussi qu'il marche à peu près droit .
Attention à la matière des semelles et du terrain sur lequel Écho marche. (Nous utilisons du plastique collé adhésif double face).
Si Écho tombe de temps en temps, ce n'est pas très grave : il est capable de se relever.
Le capteur à ultrason permet à Écho de connaitre la distance des obstacles et de les éviter. Les "oreilles" : la carte microphone permet à Écho de sortir de son état de en veille et de démarrer quand il entend du bruit.
De temps en temps, Écho passe en veille : immobile, debout et écoute : s'il y a un bruit, il redémarre. Écho, en veille, consomme environ 20 mA (hors Alexa Écho Pop).
Le Mosfet de puissance éteint le convertisseur quand les servomoteurs sont inutilisés pour économiser du courant et gagner en autonomie. La sortie A0 de l'Arduino est reliée à la grille d'un petit Mosfet N BST76 dont le drain est relié à la grille d'un Mosfet P de puissance IRF4905 (Source reliée au + batterie, Drain à l'entrée du convertisseur , une résistance de 100k entre Grille et Source). Dès que Écho est immobile, la sortie passe à 0, bloque le BST76, le IRF4905 et éteint le convertisseur pour économiser les 100 à 200 mA de courant de veille des 8 servomoteurs.
La carte microphone est reliée aux batteries via un filtrage 4k7/220uF pour nettoyer les parasites. Elle est reliée à l'entrée analogique A2 de l'Arduino Nano 33 Iot.
A noter que les servomoteurs, en position debout, déconnectés se maintiennent en position. Si Écho levait une jambe à l'horizontale, en équilibre sur l'autre jambe, en déconnectant les servomoteurs , le poids de la jambe horizontale suffirait à faire retomber, en partie, la jambe...
Nota : Pour éviter d'arracher l'embase microUSB de la carte Arduino Nano 33 Iot, nous l'avons équipée d'un câble USB court (20cm) et l'autre extrémité (En USB-C) est fixée à l'épaule gauche d'Écho pour le programmer. Nous avons aussi installé une diode 1N4004 entre le + batterie (après l'interrupteur) et l'Arduino Nano 33 Iot : Ça évite que, quand on branche l'Arduino Nano 33 Iot sur l'USB pour le programmer, la tension d'alimentation retourne dans le convertisseur et actionne les servomoteurs : Écho se met à marcher pendant qu'on le programme même si l'interrupteur est sur arrêt !
Une 3e vidéo d'Écho sans la tête : il marche, tombe, fait le pitre et se relève...
Et une 4e vidéo d'Écho habillé en Nounours avec sa "fourrure"...
Photo de gauche (avant):
Les 2 servomoteurs de cuisse sont reliés chacun par 4 vis M3 sur le bas du profilé, les 2 servomoteurs de bras sont reliés chacun par 4 vis M3 sur le haut du profilé.
Les bras sont réalisés avec un tube PVC formé à chaud). Rappelons que chaque bras contient une batterie 18650 reliée par un connecteur de type SM-2P, au niveau de l'épaule. Chaque batterie 18650 est maintenue dans le tube PVC par une vis plastique noire M3x20 en bas et par la butée en rotation en aluminium en haut. Un morceau de bouchon peint en bas permet d'amortir les chocs et se relever.
Le convertisseur est protégé par une plaque de protection en plexiglas (sur laquelle sont fixés 2 embouts caoutchouc gris pour amortir les chocs en cas de chute avant).
Photo de droite (arrière) :
Un "circuit imprimé" maintient la carte Arduino Nano Iot (et la carte d'Alexa Écho Pop) et une protection en plexiglas transparent. (sur laquelle sont fixés 2 embouts caoutchouc gris pour amortir les chocs en cas de chute avant). La plaque en plexiglas est percée d'un trou avec un bouton poussoir noir pour activer ou non les microphones d'Écho .
Sous le capot en plexiglas, la carte d'Alexa Écho Pop alimentée à partir des 2 batteries 18650 : Les fils d'alimentation, rouge et noir, directement soudés sur la carte, sont visibles.
Un câble noir relie le haut-parleur de la tête à la carte d'Alexa Écho Pop.
La carte Arduino Nano 33 Iot est sous la carte d'Alexa Écho Pop.
Vue détaillée du dos d'Écho :
Des câbles...
La corde multicolore qui permet de suspendre Écho à la potence en bois pour la mise au point
L'interrupteur de marche (rouge) (en haut à gauche) à levier monté sur une équerre en aluminium (qui maintient aussi le connecteur USB) fixée par 2 vis noires sur le profilé aluminium de la structure.
Soudée sur l'interrupteur est visible la diode 1N4004 (noire) qui évite le retour de courant vers les servomoteurs pour éviter que le robot ne s'agite pendant la programmation USB
Le câble USB noir de 20 cm dont le connecteur micro-USB est relié au haut de la carte Arduino Nano Iot enfichée sur une plaque à trous .
Le câble noir à 2 conducteurs, soudés directement au boitier haut-parleur et à la carte Alexa Écho Pop
La carte Alexa Écho Pop alimentée par un fil noir et un fil rouge (soudés sur la carte) et maintenue sous le capot plexiglas par 3 vis M3 plastique noir.
Le capot de protection en plexiglas (percé de 2 trous pour laisser passer les 2 condensateurs de la carte Alexa Écho Pop et gagner un peu d'épaisseur), maintenu par 4 vis et entretoises M3 métal.
Nota : Nous n'avons pas installé la tôle aluminium d'origine qui sert de radiateur supplémentaire au processeur de la carte Alexa Écho Pop. La position verticale de la tôle aluminium de refroidissement du processeur devrait suffire pour un refroidissement correct.
2 équerres latérales en aluminium pour protéger les 2 cartes
En haut, sur le verso de la carte Alexa Écho Pop, les Leds d'Alexa Écho Pop indiquent l'état de la carte
Quand Écho bouge, il fait un peu de bruit et ça peut l'empêcher d'entendre correctement les questions : "Quelle est la racine cubique de 3". D'autre part, quand Écho écoute ou répond, Alexa Écho Pop allume ses diodes Leds bleues. Nous avons donc relié à l'Arduino Nano Iot une LDR (connectée à A3) installée contre une des Leds d'Alexa Écho Pop. (Une LDR est un composant dont la résistance diminue quand on l'éclaire). (La LDR est à l'intérieur d'une gaine noire.)
Quand Écho écoute ou répond, la Led est allumée, la résistance de la LDR diminue (elle passe de quelques dizaines de kohms à quelques centaines d'ohms). Arduino Nano Iot le détecte et suspend les mouvements des servos jusqu'à l'extinction de la Led. Ça rend Écho beaucoup plus naturel : il s'arrête de bouger pour écouter et répondre. Et il entend nettement mieux. (il faut juste vérifier qu'en plein soleil, Écho continue de bouger normalement.) Sinon, on fera dire à Écho : "Écho a une insolation" :-)
Nous avons légèrement modifié Echo pour l'équiper d'une prise USB-C dirigée vers le haut, sur son épaule gauche.
Schéma :
That's All Folks !
Créé le 10/07/2024
A jour le 04/07/2025