mercredi 4 septembre 2013

LegoCar partie 1

Suite à ma présentation sur le forum forum.raspfr.org, il m'a été demandé de présenter mes projets.

En voici un 1er qui me tient particulièrement à coeur car je le réalise mon fils aîné. 

Il s'agit de la construction d'une voiture Légo pilotée avec un Raspberry Pi. 
Le défi lancé par Hugo (mon fils) est de construire une voiture avec un lance missile qu'il pourra facilement piloter . 
Nous nous sommes donc lancés dans la construction d'une voiture légo pilotée par une wii mote. 
Schéma de principe de la voiture : 



Étape 1 : Le contrôle des roues 


Vidéo d'introduction


La partie physique

Les roues sont contrôlées par un double pont en H (un pont pour les roues à droites et un autre pour les roues gauches) 
Le pont en H est relié au Raspi par un composant I2C qui pilote la direction et à deux pin GPIO qui envoient un signal PWM pour la puissance du moteur. 
Ci dessous le schéma du circuit  :


La photo 

Je n'ai branché que le train arrière de la voiture légo ( :-) vous verrez la voiture en entier plus tard )

le PCA9306 sert à convertir le bus I2C de 3,3V (tension du bus du Raspi) en 5V pour que le composant MCP23017 puisse sortir le bon niveau de tension pour le L298N.

J'ai mis un MCP23017 (composant I2C qui ajoute 16 bit d'entrée/sortie) pour me permettre de brancher d'autres composants ( des Led de status,le stepper motor du lance missile, qui seront détaillés dans les prochains billets).

Pour brancher les moteurs légos, j'ai acheté deux rallonges que j'ai coupé et dénudé, seul les deux fils du milieu servent pour piloter le moteur.

Bien maintenant le code pour contrôler les roues

Le code est écrit en python plus simple que le C++ à appréhender pour Hugo. 
Cela dit actuellement il ne comprend pas tout le code surtout l'interface graphique, mais ce n'était pas le but du TP. 
Voici un résumé des classes : 

I2CPerif : 
      Classe qui permet de manipuler un composant I2C, fait appel à la librairie standard logging pour tracer les appels sur le bus et smbus pour piloter le bus I2C. 

MCP23017 : 
     Classe qui permet de manipuler les entrées sorties du composant MPC23017. Cette classe utilise la classe I2CPerif.
     Le MCP23017 possède deux ports de entrée/sortie A et B. 
     Chaques bits de ces deux ports peuvent être définis en entrée/sortie avec si besoins des pullup. 
     Cette classe peut manipuler chaque pin individuellement ou par port
     Pour contrôler les roues, peu de fonction sont utilisées (mais je l'utilise dans d'autre projet donc elle est assez complète).

MotoMana :
Classe principale qui permet de contrôler les roues de la voiture, utilise rpi.GPIO et MCP23017

WidgetMotoMana : 
Classe graphique qui permet de piloter les roues, utilise MotoMana

Le code n'a rien de particulier et il est commenté, il est disponible sur https://bitbucket.org/sdelporte/pycpicode/overview. (attention  il n'y plus que les classes citées ci-dessus mais seule celle là sont nécessaires pour la LegoCar)

voila pour cette première étape, la suivante sera consacrée au capteur de distance.

Aucun commentaire:

Enregistrer un commentaire