Après pas mal de recherches sur différents sites j’ai enfin réussi à fabriquer un bras de webcam pour Raspberry commandé via interface web HTML5. Je vais reprendre ici pas à pas les différents points pour vous expliquer comment faire. J’ai réaliser ça avec un Raspberry PI2 mais ça doit fonctionner très bien également sur le modèle B+ voir A.
Menu :
- Matériel
- Etape 1 : Assemblage des servomoteurs
- Etape 2 : Branchement des servomoteurs sur le Raspberry
- Etape 3 : Installation du serveur web Apache
- Etape 4 : Installation de ServoBlaster
- Etape 5 : Interface web HTML5
- Résultat final
- Améliorations et Évolutions
Matériel :
- votre Raspberry préféré et une webcam pour raspebby
- deux servomoteurs par exemple : SG90 9G Micro Motor Servo
- un pack de piles 3xAAA 1,5v et les piles qui vont avec
- une équerre 90° 4cm x 4cm (dans tout les magasins de bricolage)
- Equere 90°
- Pack pour 3 piles AAA
- 2 Servomoteurs
Etape 1 : Assemblage des servomoteurs
Pour l’assemblage du support il suffit de coller 2 à 2 les deux servomoteurs comme sur cette photo :
Puis sur le servo fixer l’équere à 90° comme cela à l’aide de deux vis (généralement fourni avec le servo) :
Pour finir fixer « le pied » sur le boitier de pile ou directement votre boitier de raspberry avec de la colle :
Je sais, ce n’est pas les explications les plus détaillées que j’ai fourni mais les photos parlent d’elles mêmes… Au final ça donne ça :
Et avec une camera 5MP :
Et le model nocturne avec 2 led + camera infrarouge :
Etape 2 : Branchement des servomoteurs sur le Raspberry
- Les fils rouges (+Vcc) des servos doivent être connecter au + du pack de piles.
- Les fils marron (GND) doivent être relié à la borne – du pack de pile qui lui même est relié au GND sur le Raspberry (borne 39).
- Pour finir, le fils jaune du servo 1 sur la borne 11 (GPIO 17) et le fils jaune du servo 2 sur la borne 13 (GPIO 27).
Etape 3 : Installation du serveur web Apache
Cette étape est facultative si votre serveur apache est déjà installé. Sinon pour l’installer :
sudo apt-get update sudo apt-get upgrade sudo apt-get install apache2
Vous trouverez sur le site raspbian-france.fr tous les détails sur l’installation et la configuration avancé d’apache pour Raspberry.
Pour pouvoir executer des commande depuis la page html vous devez ajouter l’utilisateur www-data dans le sudoer. Pour cela tapez :
visudo
et ajouter les lignes suivantes :
# User privilege for Servo CMD from apache www-data ALL=(ALL:ALL) NOPASSWD:ALL
/!\ C’est pas terrible au niveau sécurité, ça veux dire que l’utilisateur apache peux passer root.
Après vos test, et si vous souhaitez commander vos servo en dehors de votre réseau privé vous devriez ajuster le sudoer pour réduire les autorisations. (si vous êtes intéressé dites le moi dans les commentaires je pourrais faire des test et vous dire ici ce qu’il faut exactement).
Etape 4 : Installation de ServoBlaster
ServoBlaster (voir la doc ici) est une interface qui va vous permettre de commander simplement plusieurs servo moteur avec un raspberry. Il y a pas mal d’articles sur cette interface, par exemple ici avec des bateaux. Pour l’installer :
sudo apt-get install git git clone git://github.com/richardghirst/PiBits.git cd PiBits/ServoBlaster sudo make
Après l’installation vous devriez voir une nouvelle interface dans /dev/ :
ls -l /dev/servoblaster prw-rw-rw- 1 root root 0 Jan 25 19:23 /dev/servoblaster
Puis pour tester ServoBlaster et commander vos servos tapez :
echo P1-11=120 > /dev/servoblaster echo P1-13=120 > /dev/servoblaster
Réessayer en faisant varier la valeur 120 pour modifier la position de vos servos. Vous pouvez aussi utiliser les % de 0 ) 100% qui corresponde à a position du servo.
Etape 5 : Interface web HTML5
L’interface est vraiment minimaliste, libre à vous de la modifier et de l’adapter à vos besoins et projets.
Les code php est visible ici : https://github.com/Sirus10/servo
mais pour le récupérer sur votre raspberry faites simplement:
cd /var/www/ git clone git://github.com/Sirus10/servo.git
Pour finir rendez-vous avec votre navigateur web sur l’adresse ip de votre raspberry et amusez vous !
Ex : http://192.168.1.21/servo/ :
Résultat final :
- Avec led 3w Infra rouge
- Avec led 3w Infra rouge
Améliorations et Évolutions :
C’est vraiment la base qu’il y a ici, il y a beaucoup de possibilité pour intégrer ça dans une interface webcam par exemple ou autre. C’est juste un début…
- [FAIT] utiliser du jquery au lieu d’avoir a chaque fois à recharger la page php
- utiliser un canva avec HTML5 (voir ici) ?
- [FAIT] Inverser la commande du servo vertical
Dans le même esprit mais pour créer un radar de surface 🙂
http://www.magdiblog.fr/boa-pi-drone/pi-boat-radar-de-surface/
Bonjour,
Quand je fait sudo make dans le dossier ServoBlaster il me met : « make: *** No targets specified and no makefile found. Stop. »
Comment je fais??
Merci d’avence
salut
j’espère que ça peu toujours aides
tu vas dans ce dossier :
cd ./PiBits/ServoBlaster/user/
tu exécutes la commande :
sudo make servod
Bonjour
Merci pour le tuto j’ai un RPI 3B+ raspbian buster.
Servoblaster fonctionne mon serveur apache aussi j’y accède avec mon ip ex 192.168.0.8.
et quand j’essaie 192.168.0.8/servo/ la page est introuvable j’ai bien les fichiers dans /var/www/servo/.
ne manque t’il pas le fichier index.html ? pour apache2
merci pour vôtre aide mon email est dossinjohn@gmail.com
Bonjour,
j’ai le même souci que Xnow
et malgré la commande que tu proposes ci dessus
dans le dossier dev je n’ai pas servoblaster
as tu une idée ?
Merci d’avance
Bonjour.
Apres avoir suivi le tuto et quelques conseils (commentaires et autres car novice chez raspberry)
J’aimerais faire la meme chose sur un raspberry qui a un l’OS de Motion Eye d’installer dessus.
Actuellement, je n’arrive pas a controller les servo moteur, j’accede bien a la page 192.168.1.XX/servo, mais aucune action sur les servo lorsque je souhaite les mettre en action.
Quelqu’un a une idée du pourquoi du comment? Une incompatibilité entre Motion Eye et ServoBlaster?
Bonjour Robinson,
J’ai réussi à faire les deux : motion eye os et servo moteur.
J’ai compilé 3,4 tutos 🙂
https://gadgetaulab.fr/?p=58
Redis moi si tu t’en sors ?
Gotenash
Salut salut. Je suivi le tuto que tu as mis en commentaire. Ca fonctionne dans l’ensemble. J’explique : avec un servo moteur de brancher sur le raspberry ca fonctionne. Par contre, des que j’en ajoute un autre, il n’y en a toujours que celui precedement installer sur la pin 11 qui fonctionne.
J’ai l’impression que seul les pins 2,4 (5v) ; 6 (ground) ; 11(GPIO 17) fonctionne et non le reste. A moins que je n’ai pas fait les chose comme il faut…
Ben oui c’est bizarre, pour ma part ça fonctionne correctement et du coup si ca marche pour un de tes servos soit forcément marcher pour l’autre.
tu utilises bien les pins 11 et 13 qui sont les GPIO 17 et 27 ?
tu n’as pas un des servos moteurs de cramé, tu as interverti je suppose ?
tu as testé en ligne de commande ?
cette vidéo m’avait bien aidé https://www.youtube.com/watch?v=f5AErQTI9XA
Sinon tu n’as plus qu’à venir au Gadgetaulab en Normandie ^^
Grace a la vidéo, j’ai pu brancher plusieurs servo moteur sur une breadbord et voir si il y avait des GPIO qui ne fonctionner plus. Après plusieurs test, J’ai donc mis les GPIO 22 et 23 qui fonctionne.
Une fois rebrancher au « propre » sur le raspberry pi, ça ne fonctionner plus. Effectivement, j’ai fait l’erreur de brancher un servomoteur sur les PINs n° 2 ; 6 et 15 et l’autre sur les PINs n° 4 ; 9 et 16 alors que sur la breadbord j’avais alimenter tous les servo sur une PIN 5V et sur un GND. Du coup, en branchant les deux servo moteur sur la même alimentation, a savoir les PINs n° 2 et 6, je n’ai plus de souci. les deux servomoteur fonctionne. Merci donc pour tous. 😉 Et surtout bonne continuation. 🙂
Re,
tu alimentes tes servo direct sur le raspberry ?
J’avais vu ça : »Selon le nombre et la puissance du servomoteur utilisé, il peut être alimenté par la borne 5V de la carte Raspberry Pi mais il est fortement conseillé d’utiliser une source de puissance extérieur afin de protéger la carte. »
du coup j’ai toujours alimenté avec des piles ^^
Ping : Caméra raspberry motorisée – GadgetauLab
Super. Merci pour tes recherches. Je test ça au plus vite et te redit. 😉
Merci encore.
Rebonjour Gotenash,
Pour repondre a ta question, oui j’alimente les servo directement via le raspberry pi.
Je pense effectivement qu’il peux y avoir un risque mais vue l’utilisation que j’en ai, cela ne doit pas faire beaucoup souffrir le raspberry, en effet, j’actionne les servo qu’une ou deux fois par jour. Si j’avais besoin d’une utilisation beaucoup plus poucer, je passerais sans nul doute sur une alimentation exterieur du raspberry.
Par contre, j’aurais une petite question en rapport avec la page PHP de serviblaster.
En effet, je controle les servo depuis n’importe ou via un reseau VPN. Le souci que j’ai c’est que quand j’arrive sur la page 192.168.x.x/servo, les curseurs de deplacement ce trouve etre au centre de leurs axes respectif. J’aimerais que le raspberry garde en memoire la position des curseurs pour que si je deplace les servi, a l’ouverture de la page deux heure apres par exemple, je puisse avoir l’information du positionnement des servo par rapport a leur courses maximum et evité un genre de « reset » de leur position. Je ne sais pas si je me suis bien faot comprendre.
Merci de m’avoir lu et un grand merci pour ton aide en tout cas.