Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Raspberry Pi & DMX 512
5 janvier 2014

Utilisation des GPIO

                Aujourd'hui j'ai testé  les GPIO de mon Raspberry. Cela me permettra par la suite d'acquérir par la suite les valeurs de mes curseurs.

Depuis la console

J’ai commencé par voir comment on pouvait faire pour définir et commander les GPIO directement depuis la console. Cela pour pouvoir faire des tests (vérifier la tension, tester avec un interrupteur), et aussi pour coupler avec une crontab (tâches exécutées périodiquement).

On commence par se positionner dans le dossier contenant les fonctions des GPIO.

cd /sys/class/gpio

On définit un GPIO (ici le numéro 24). Cela va créer un dossier gpio24 dans le dossier courant. Il contient les fonctions propres au GPIO 24

echo 25 > export

 On se place donc dans ce dossier

cd gpio24

 On définit ensuite la direction (entrée ou sortie) de notre GPIO 24. Ici en sortie. Pour une entrée il suffit de remplacer out par in.

echo out > direction

On lit l’état du GPIO. S’il est paramétré en sortie on verra s’il génère une tension ou non. S’il est paramétré en entrée on saura s’il reçoit une tension ou non.

cat value

On définit la valeur de notre GPIO (uniquement si il est paramétré en sortie). Si une led est branchée sur la broche du GPIO 24 (numéro 18) et sur la masse (broche 6), elle s’allume. Si on remplace le 1 par un 0 elle s’éteint.

echo 1 > value

On arrive donc facilement à commander les GPIO de notre framboise grâce à la console.

 

      Avec Python

Bon jouer avec  la console, c’est bien mais c’est vachement limité ! J’ai donc pensé à écrire un petit programme. Un petit coup de sudo telinit 5

Et me voici dans la superbe interface graphique de Raspbian. Sur le bureau se trouve un raccourci  vers Python : mon programme sera en Python.

Après quelques recherches sur le web j’ai trouvé la librairie RPi.GPIO qui permet d’écrire et de lire sur les GPIO.

On commence par importer la librairie en changeant légèrement son nom pour plus de simplicité pour la suite.

import RPi.GPIO as GPIO

On initialise ensuite les GPIO (tous d’un coup)

GPIO.setmode(GPIO.BOARD)

On  définit maintenant les directions des GPIO à utiliser. J’utilise là aussi le 24 en sortie et je rajoute le 25 en entrée. ATTENTION : cette bibliothèque n’attend pas le numéro des GPIO mais celui des broches physiques. Je vous met un tableau de correspondance (c’est mon image de référence qui me servira lors de la programmation en , il y a donc aussi les numéros pour la bibliothèque WiringPi utilisée plus tard).

GPIO.setup(18,GPIO.OUT)
GPIO.setup(22,GPIO.IN)

Brochage Raspberry

Pour écrire sur un GPIO

GPIO.output(24,GPIO.HIGH) #Etat haut
GPIO.output(24,GPIO.LOW) #Etat bas

Pour lire un GPIO

GPIO.input(25)

Attention : la fonction input ne renvoi rien de lisible par Python, il faut faire une comparaison avec GPIO.HIGH (état haut) ou avec GPIO.LOW (état bas).

 

      Conclusion

           L’accès aux GPIO est relativement simple que ce soit avec Python ou directement avec la console de notre Raspberry Pi. Cela état, j’ai effectué un test de vitesse et l’écriture d’une information sur un GPIO quelconque avec Python prend environ 25µ secondes. C’est relativement rapide mais pas assez pour générer un signal DMX (il faut que cela prenne 4µ secondes). L’utilisation du code C pourra diminuer ce temps. En revanche je compte utiliser le port série du RPi qui nous permettra sûrement d’atteindre cette vitesse. Mes recherches sont actuellement sur ce sujet.

A bientôt

 

Publicité
Publicité
Commentaires
Raspberry Pi & DMX 512
Publicité
Archives
Publicité