🆕 Tête de marionnette animatronique

Fabrication d'une tête animatronique. Le projet original est diffusé sous licence libre par Rolf Jethon et se compose d'une partie hardware : mécanique (pièces à imprimer, visserie, etc), électronique (raspberry pi ou orange pi, contrôleur de servomoteurs, servomoteurs, etc.) et d'une partie software développée par l'auteur (en perl!), les README donne des infos sur l'articulation du système logiciel.

Le système permet de synchroniser des mouvements de servomoteurs pré-enregistrés avec des fichiers audio MP3 et de les rejouer. 16 servomoteurs sont controlables grâce au driver PCA9685, l'audio est joué sur la sortie audio du Raspberry Pi. Les mouvements de servo sont enregistrés sur une base de temps de 50ms.

Le projet est aussi présenté en détail sur ce blog https://zappedmyself.com/animatronics/bechele2-info/

Les fichiers sont fournis en stl sur thingiverse, je les ai réunis en 6 lots pour faciliter l'impression

Différentes pièces :

Les fichiers sont slicés avec Cura pour Ender 3 avec une épaisseur de couches de 0.12mm

Durée d'impression

  • lot 1 : 40 minutes
  • lot 2 : 20 minutes
  • lot 3 : 2h20
  • lot 4 : 2h50
  • lot 5 : 2h10
  • lot 6 : 3h05 (avec eyeball-for-iris, mais pas eyeball)

Durée d'impression

  • lot 1 : 2h21
  • lot 2 : 1h10
  • lot 3 : 3h23
  • lot 4 : 1h55
  • lot 5 : 1h46
  • lot 6 : 1h39

Électronique

  • Raspberry Pi 3 ou 4
  • module Ă©lectronique driver 16 canaux pour servo, Ă  base de PCA9685 (diffĂ©rents possibles, exemple : HW-170 ou MotoPi)
  • 5 servomoteurs miniatures, on utilise des DMS-MG90-A de DFRobot, avec une amplitude de 270°
  • alimentation 5V Ă  x ampères

Quincaillerie

Test de 4 servomoteurs avec du matériel grove et une alimentation de 550 mA (ancien chargeur de téléphone). L'alimentation est largement sous-dimensionnée pour utiliser 5 servomoteurs. En lisant la datasheet du servomoteur, on voit que son courant de décrochage (stall currrent) est de 800±30 mA à 4.8V et 1100±30 mA à 6V, on peut donc imaginer 900mA pour alimenter chaque moteur (source)… Une alim de PC de récupération pourrait fournir largement ce qu'il faut.

test_servo.ino (cliquer pour afficher le code)

test_servo.ino
/* Test servomoteurs avec seeeduino lotus + module grove PCA9685 16-Chan I2C PWM driver
 
    arduino 1.8.5 @ Kirin, pierre@lesporteslogiques.net / 23 nov. 2022
      + lib. Seeed PCA9685 library, https://github.com/Seeed-Studio/Seeed_PCA9685
 
    Grove PCA9685 : https://wiki.seeedstudio.com/Grove-16-Channel_PWM_Driver-PCA9685
    Servo MG90 à 270° (DMS-MG90-A) https://www.dfrobot.com/product-1970.html
*/
 
#include "PCA9685.h"
#include <Wire.h>
 
ServoDriver servo;
 
void setup() {
  Wire.begin();  // join I2C bus
  Serial.begin(9600);
  servo.init(0x7f);
}
 
void loop() {
  // Test avec 4 servos
  for (int i = 1; i < 5; i++) {
    servo.setAngle(i, 0);
    delay(1000);
    servo.setAngle(i, 90);
    delay(1000);
  }
}

Pour enregistrer les mouvements des servos

Possible d'utiliser un de ces modèles en ajoutant les boutons

Module pour Raspberry Pi : documentation / lien fabricant

En fait, je ne sais pas si ça peut marcher avec le montage, ce module fonctionne avec une librairie python, se connecte en I2C et le code du projet est en perl…

Pour le montage du mécanisme des yeux, se reférer à cette vidéo : https://www.youtube.com/watch?v=U1c4R2EB83A

Le projet est fourni avec une image pour raspberry pi 3 mais vu que c'est difficile de se procurer ce genre de carte en ce moment, on part sur une installation manuelle sur un raspberry pi 4

Version du Pi 4 : Raspbian 10 buster (lsb_release -a)

téléchargement du fichier https://bechele.de/wp-content/uploads/2022/07/bechele2.tar.gz (depuis https://bechele.de/?page_id=80)

Installation des bibliothèques nécessaires

sudo apt update
sudo apt install cpanminus
sudo apt install wiringpi
sudo apt install alsa-utils
sudo apt install mpg123
sudo apt install i2c-tools
sudo apt install perl5 # déjà installé
sudo apt install perl-device-serialport # ne fonctionne pas
sudo apt install libdevice-serialport-perl 
sudo cpanm strict
sudo cpanm Device::SerialPort
sudo apt install ncurses-base ncurses-bin
sudo apt install libncurses5-dev libncursesw5 libncursesw5-dev
sudo cpanm Curses::UI
sudo cpanm WiringPi::API
sudo cpanm File::Find::Rule
sudo cpanm Device::PWMGenerator::PCA9685
sudo cpanm Audio::Play::MPG123
sudo cpanm Time::HR

Installation des scripts

les fichiers téléchargés sont dans le dossier /home/pi/bechele, on les copie dans les bons dossiers de /usr avec sudo.

sudo cp /home/pi/bechele/usr/lib/systemd/system/runlive.service /usr/lib/systemd/system/
sudo cp -R /home/pi/bechele/usr/local/bin/* /usr/local/bin/

Les fichiers à copier dans /home sont copiés manuellement.

  • openatelier/projet/tete_animatronique.txt
  • Dernière modification: 2022/11/30 16:42
  • par emoc