まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Rpi-pi_EYE -2-

Voici la suite du projet commencé ici :

Les fichiers 3D sont disponibles ici et en annexe de ce billet.

  • Depuis la dernière fois, j'ai modélisé l'arrière du boîtier qui accueille le Raspberry, revu le boitier de face pour que l'anneau soit facile à mettre en position, et tranché en deux les pièces d'engrenages.

J'ai donc imprimé tout ça en bleu et conservé l'œil blanc pour le moment.

  • Voici le kit de composants nécessaires à l'œil caméléon :

dsc00855.jpg
- Un Raspberry pi Model B.
- Un module Camera Pi.
- Deux Servos TowerPro SG90.
- Une carte SD d'au moins 4Go.
- Un écrou de 1/4" BSW (TPI 20) (1/4 pouce British Standard Whitworth, Threads Per Inch de 20).
- Une tige métallique de 2,1 cm coupée dans un gros trombone.
- Deux très petites vis de récup.
- Le kit de pièces imprimées.

Le montage :

  • L'écrou servira à permettre l'utilisation d'un trépied.

Il suffit de le glisser dans la fente prévue à cet effet !
dsc00862.jpg dsc00863.jpg

  • Ensuite on peut mettre en place le Raspberry avec sa carte SD dans le logement du boitier arrière.

En jouant sur l'élasticité du plastique ça passe sans problème, il se clipse au fond pour ne plus bouger.
dsc00864.jpg

  • Les pièces d'engrenages existent en deux versions au choix.

En un morceau, qu'il faudra imprimer verticalement, en activant les supports, où en deux morceaux qu'il faudra coller avec de la cyanoacrylate.
dsc00866.jpg dsc00869.jpg

  • La caméra est fixée dans l'œil avec les vis de récup.

N'oubliez pas la technique du briquet pour ne pas éclater le plastique[1] !
On utilise la tige métallique pour assembler les engrenages et on joue une nouvelle fois sur l'élasticité du plastique pour les loger dans l'œil.
dsc00868.jpg dsc00870.jpg

  • Maintenant que l'anneau a des ergots, il est facile de le mettre en place sur le boîtier avant, et avec un peu de chance il se clipse et tiens tout seul, sinon suffit de le coller.

dsc00871.jpg dsc00872.jpg

  • Les servos et le mécanisme de l'œil sont en places, il reste à les visser sur le boîtier :

dsc00873.jpg

  • Le boitier se referme et tient tout seul grâce au système de clips que j'ai conçu :

dsc00876.jpg dsc00878.jpg

  • On branche l'alimentation sur le côté, et on peut visser le trépied.

Si besoin, il sera possible de connecter un cordon HDMI.
dsc00879.jpg dsc00881.jpg

  • Voilà !

dsc00884.jpg dsc00885.jpg

Les branchements :

J'ai dessiné ce petit crobar avec Fritzing ! (source en annexe)

Rpi_Pi_Eye_bb.png
Ces branchements sont très simples, les voici pour rappel en texte :
- Fil orange du servo N°1 sur le GPIO1 du Raspberry (pin 12 - BCM18).
- Fil orange du servo N°2 sur le GPIO0 du Raspberry (pin 11 - BCM17).
- Fils rouge sur le +5V.
- Fils marron sur la masse de l'alimentation.

  • J'ai donc bricolé ce raccord avec une plaque à trou et des pinoches mâle et femelles :

dsc00894.jpg dsc00893.jpg

Le Code :

Je rappelle que j'utilise ici le serveur web.py pour faire fonctionner les servo à travers une interface web.
Référez-vous au billet précédent pour plus de précisions !
Pour l'exemple qui suit, j'ai déterminé au préalable les valeurs max pour les quatre positions cardinales et le centre.

  • On va écrire un programme qui sera placé dans le dossier /webpyserver/cameleon01.py :
#!/usr/bin/env python 
import web, RPIO, time
from web import form
from RPIO import PWM

servo = PWM.Servo()

# definit la page de nom index pour le site web 
urls = ('/', 'index')
dossier_web = web.template.render('templates')

app = web.application(urls, globals())

# definit les boutons a afficher 
ma_forme = form.Form(
form.Button("btn", id = "btn2", value = "s2", html = "Droite", class_ = "bouton_2"),
form.Button("btn", id = "btn3", value = "s3", html = "Gauche", class_ = "bouton_3"),
form.Button("btn", id = "btn4", value = "s4", html = "Centre", class_ = "bouton_4"),
form.Button("btn", id = "btn5", value = "s5", html = "Haut", class_ = "bouton_5"),
form.Button("btn", id = "btn6", value = "s6", html = "Bas", class_ = "bouton_6")
)

# definit l action a effectuer quand la page index est appele 
class index:
    def GET(self):
        forme = ma_forme()
        return dossier_web.index(forme, "Raspberry Pi control Servo")
    def POST(self):
        userdata = web.input()
# Droite
        if userdata.btn == "s2":        # Si le bouton 2 est appuye
            servo.set_servo(17, 1350)   # Alors bouger le servo 17
            servo.set_servo(18, 1350)   # Alors bouger le servo 18
            time.sleep(0.5)             # Attendre une demi seconde que le servo ait le temps de bouger
            servo.stop_servo(17)        # Par securite, stopper le servo 17
            servo.stop_servo(18)        # Par securite, stopper le servo 18
# Gauche
        if userdata.btn == "s3":
            servo.set_servo(17, 2150)
            servo.set_servo(18, 2150)
            time.sleep(0.5)
            servo.stop_servo(17)
            servo.stop_servo(18)
# Centre
        if userdata.btn == "s4":
            servo.set_servo(17, 1750)
            servo.set_servo(18, 1750)
            time.sleep(0.5)
            servo.stop_servo(17)
            servo.stop_servo(18)
# Haut
        if userdata.btn == "s5":
            servo.set_servo(17, 1350)
            servo.set_servo(18, 2150)
            time.sleep(0.5)
            servo.stop_servo(17)
            servo.stop_servo(18)
# Bas
        if userdata.btn == "s6":
            servo.set_servo(17, 2150)
            servo.set_servo(18, 1350)
            time.sleep(0.5)
            servo.stop_servo(17)
            servo.stop_servo(18)
        raise web.seeother('/')

# programme 
if __name__ == '__main__':
    app.run()
  • Tout est prêt, on démarre le serveur web avec la commande :
sudo python cameleon01.py

Et on se rend avec son navigateur à l'adresse IP du Raspberry en spécifiant le port 8080…
Apparaissent alors 5 boutons d'actions, enjoy ^__^

À suivre…

Note

[1] Les trous de vis seront peut-être un peu étroit en fonction des vis à disposition; dans ce cas, pour éviter d'éclater le plastique en vissant, il suffit d'engager la vis puis de chauffer la tête de vis quelques secondes avec une flame, et enfin de visser doucement et d'attendre que le plastique durcisse. Le pas de vis aura donc été creusé sans danger.

Commentaires

1. Le mercredi, 21 octobre 2015, 12:10 par genma

Toujours aussi fan de tes projets et friands de tes tutos. Merci pour celui-ci, ça fait envie :-)

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet