python et les gpio du raspberry pi

3 minute(s) de lecture

Avoir un micro-ordinateur comme le raspberry pi c’est sympa, surtout quand on a plusieurs I/O mais quand on ne sait pas s’en servir ça peut vite devenir problématique, on va donc voir comment les piloter. Afin de pouvoir modifier leur état, mais aussi de les lire. Le tout en utilisant du python.

raspberry-pi-rev2-gpio-pinout

[notice]

Attention on ne peut pas faire tout ce que l’on veut avec les GPIO elles ont leur limite à savoir :

– ne peut leur appliquer plus de 3.3v au risque de griller la pin et même le rasperry pi lui même

– pas plus de 8mA pour un total de 51 mA

– Toutes les pins ne sont pas des I/O certaines sont réservées pour la com, on peut le voir sur la photo ci-dessus

[/notice]

 

Afin de pouvoir utiliser les gpio en python il faut être en administrateur, pensez donc a utilisé la commande sudo python « VotreScript.py » ou la commande sudo -s pour être loggé en root.

 

Maintenant il faut savoir si la librairie est bien installée, pour ça on va ouvrir la console python:

 

sudo python

 

Puis on va importer la librairie :
import RPi.GPIO as GPIO

 

Si vous n’avez pas de messages d’erreur, c’est que la librairie est bien installée sinon il faudra l’installer .

On va commencer avec un petit exemple pour lire une entrée :

 

import RPi.GPIO as GPIO # on importe la librairie
""" in choisie le mode de numérotation des pins 
(soit le numéro de pin soit le numéro GPIO a voir sur l'image en début)"""
GPIO.setmode(GPIO.BOARD) 
channel = 11 # déclarations de la pin voulue
GPIO.setup(channel, GPIO.IN) # on met la pin en mode input
try : # gestion des erreur 
	while True:
		if GPIO.input(channel): # on regarde l'état de la pin
			print "la voie est a l'état haut"
		else :
			print "la voie est a l'état bas"
except KeyboardInterrupt: # on gère l'erreur du ctrl+c
	GPIO.cleanup() # on remet a zéro la confit des pins

 

On a donc un petit exemple sur comment lire une voie, mais maintenant on aimerait bien en écrire une des voies :

 

import RPi.GPIO as GPIO # on importe la librairie
import time
""" in choisie le mode de numérotation des pin 
(soit le numéro de pin soit le numéro GPIO a voir sur l'image en début)"""
GPIO.setmode(GPIO.BOARD) 
channel = 11 # déclaration de la pin voulu
# on met la pin en mode ouput avec une valeur initiale a l'état bas
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH) 
try : # gestion des erreurs 
	while True:
		GPIO.output(channel, False) # on met la voie a l'état bas
		time.sleep(0.2)
		GPIO.output(channel, True) # on met la voie a l'état haut
		time.sleep(0.2)
except KeyboardInterrupt: # on gère l'erreur du ctrl+c
	GPIO.cleanup() # on remet a zéro la confit des pins

 

Avec cet exemple on va pouvoir faire clignoter une led relié entre la voie 11 et la masse, et si maintenant on essayé de faire les deux en même temps ?

 

import RPi.GPIO as GPIO # on importe la librairie
""" in choisie le mode de numérotation des pin 
(soit le numéro de pin soit le numéro GPIO a voir sur l'image en début)"""
GPIO.setmode(GPIO.BOARD) 
channel = 11 # declaration de la pin interrupteur
channeled = 12 #declaration de la pin led
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH) 
# on met la pin en mode ouput avec une valeur initiale a l'état bas
GPIO.setup(channeled, GPIO.IN) # on met la pin en mode input
try : # gestion des erreurs 
	while True:
                        # on écrit la valeur de l'entrée 11 sur la voie 12
			GPIO.output(channel, GPIO.input(channel)) 
except KeyboardInterrupt: # on gère l'erreur du ctrl+c
	GPIO.cleanup() # on remet a zéro la confit des pins 

Maintenant on sait comment lire/écrire des digites sur notre rasperry pi plus tard nous verrons également comment ce servir de l’I²C pour communiquer avec un un arduino et le spi pour communique avec un MCP3004 pour avoir des entrées analogues sur notre rasperry pi