Projet de servomoteurs interactifs avec Arduino et capteurs HC-SR04
Composants et fournitures
![]() |
|
× | 1 | |||
|
× | 3 | ||||
![]() |
|
× | 36 | |||
|
× | 1 | ||||
|
× | 1 | ||||
|
× | 1 | ||||
|
× | 36 | ||||
![]() |
|
× | 5 |
Outils et machines nécessaires
![]() |
|
|||
![]() |
|
Applications et services en ligne
![]() |
|
À propos du projet
La vidéo ci-dessous montre l'animation créée par 36 servomoteurs formant une œuvre d'art électronique. Un Arduino Uno et trois contrôleurs PWM 16 canaux gèrent le tout en arrière-plan. L'inspiration originale vient d'une installation bien plus grande comptant 450 servos, vue dans un musée d'art moderne. Mais même cette version réduite à 36 servos produit des effets fascinants.
Une fonctionnalité interactive optionnelle, non montrée dans la vidéo, peut être ajoutée. Elle est purement facultative : le logiciel fonctionne parfaitement sans elle. Pour cette option, cinq capteurs de distance à ultrasons sont fixés le long du bord supérieur arrière de l'affichage. Lorsque vous placez votre main au-dessus du capteur central, l'Uno passe en mode interactif et tous les servos tentent de suivre votre main tandis qu'elle se déplace au-dessus des capteurs. Quand vous retirez votre main pendant quelques secondes, le programme revient à son animation par défaut. Vous pouvez ajouter cette option si vous le souhaitez ; sinon, le logiciel fonctionne très bien sans.
Matériel
Le projet est construit sur un panneau perforé de 60 x 120 cm, dont la largeur a été réduite à 81 cm. Les servos sont espacés de 10 cm et fixés à l'arrière du panneau avec de la colle chaude. Les bâtons de glace, coupés à 8,25 cm, sont collés sur les axes des servos, toujours à la colle chaude.
Les servomoteurs SG90 représentent le poste de dépense principal. On trouve des lots de 8 pour environ 20 € sur Amazon. Il faut donc compter environ 100 € pour les 36 servos. Les SG90 sont censés avoir une course de 180°, mais la plupart n'y parviennent pas tout à fait. Quelques-uns sont très en deçà et doivent être écartés. En achetant 5 lots de 8, vous devriez pouvoir sélectionner 36 bons exemplaires offrant au moins 160° de course.
Les servos doivent être positionnés sur leur position minimale (PWM 150), et les bâtons de glace doivent être montés horizontalement et pointant vers la droite dans cette position minimale, vus depuis l'avant. Un petit programme est fourni pour s'assurer que les servos sont bien dans cette position minimale : SetServosToMinimum.

La photo ci-dessus montre l'agencement côté verso. Les trois contrôleurs PWM sont montés à gauche des servos. L'alimentation 30W 5V se trouve à l'extrême droite. L'Arduino est alimenté séparément via un adaptateur USB. Cette configuration permet de débrancher le câble USB et, via une rallonge USB, de le connecter à l'ordinateur pour modifier le programme. C'est un peu inhabituel, mais très pratique.
On aperçoit aussi les capteurs à ultrasons optionnels montés le long du bord supérieur de l'affichage. De la colle chaude et des bâtons de glace supplémentaires ont servi à les fixer. La petite carte de prototypage sous l'Uno sert simplement à distribuer l'alimentation et la masse à tous les capteurs à ultrasons.
Logiciel
J'utilise la bibliothèque Adafruit PWM Servo Driver pour piloter les contrôleurs 16 canaux ; vous devrez la récupérer chez Adafruit et l'installer dans les bibliothèques Arduino. Mon logiciel fonctionne tel quel, avec ou sans les capteurs à ultrasons optionnels. Il propose une variété d'effets dans un spectacle d'un peu plus de trois minutes avant de boucler. Si les capteurs optionnels sont installés, le mode interactif s'active dès qu'une main est détectée au-dessus du capteur central.
Le logiciel contient beaucoup d'éléments. Je n'en expliquerai pas tout ici, mais voici le principe de base. J'utilise deux tableaux : curPos stocke la position actuelle de chaque servo divisée par trois, et tarPos stocke la position cible de chaque servo, également divisée par trois. Cette division par 3 sert deux objectifs : elle permet de stocker les valeurs dans un octet (byte), et je déplace toujours les servos par incréments de 3 pas.
Au démarrage, l'Uno ne connaît pas les positions des servos. La routine setup place tous les servos en position verticale et initialise curPos et tarPos pour correspondre à cette position. On peut ensuite déplacer les servos vers d'autres positions en modifiant les valeurs cibles dans tarPos.
Une sous-routine appelée goToTargets() est la méthode principale pour mouvoir les servos. On contrôle leur destination en définissant les cibles dans tarPos, et leur vitesse via goToTargets. Cette routine offre deux façons de contrôler la vitesse : elle déplace les servos vers leurs cibles par pas de 15, le paramètre reps donnant des multiples de 15 pas. L'autre paramètre, mydelay, ajoute simplement un délai en millisecondes à chaque appel de goToTargets.
Le reste du code consiste essentiellement en diverses configurations et implémentations des différents effets présentés.
La fonction interactive optionnelle est gérée par une sous-routine appelée trackRoutine. Elle est invoquée lorsque goToTargets détecte un objet (votre main) au-dessus du capteur central à ultrasons. Elle tente de faire suivre à tous les servos le mouvement de votre main au-dessus des capteurs. Après quelques secondes sans détection, elle rend la main et le programme principal reprend.
Code
- Logiciel ServosArt pour Arduino Uno
Logiciel ServosArt pour Arduino Uno Arduino
Pas d'aperçu (téléchargement uniquement).
Schémas
Montre comment l'Uno et les servos sont connectés via trois contrôleurs 16 canaux
Connecte 5 capteurs de distance à ultrasons à l'Uno pour permettre aux servos de suivre le mouvement de la main.
Processus de fabrication
- Raspoulette : Prototype de système autonome de porte de poulailler à énergie solaire
- Simple Pi Robot – Construire un rover autonome 2 roues motrices avec Raspberry Pi
- Services professionnels de réparation de servomoteurs Fanuc
- Réparation professionnelle de servomoteurs Siemens – Service rapide et fiable
- Guide expert : réparation et conseils de dépannage de servomoteurs
- Kit MOSMusic : MOSFET, Arduino et plus pour éclairage musical
- Comprendre les moteurs linéaires : de l'énergie électrique au mouvement linéaire précis
- Pourquoi les réducteurs planétaires améliorent les performances des servomoteurs
- Principes des presses servo : puissance, précision et efficacité expliquées





