scratch_logoLe python, c, c++, le perl et autre langage sont des langages très puissants quand on les connaît, mais pas forcement adapter au plus jeune (ou pas) qui débute et qui ne sont pas a l’aise avec ce genre de chose. Alors qu’elle pourrait être la solution pour eux ? Tous simplement je dirais Scratch.Scratch est un moyen simple pour les débutants de programmer le Raspberry Pi, conçu pour ceux qui n’ont pas programmé avant et sont rebutés par le code « écrit ». Les programmes sont créés simplement par glisser-déposer de différents types de blocs ensemble pour produire une séquence d’instructions. Et il existe une sorte d’extension qui permet d’utiliser les GPIO du Raspberry Pi avec Scratch. On va donc voir comment l’installer et puis comment utiliser Scratch et les GPIO du raspberry.

Tout d’abord l’installation.

Il va falloir utiliser le terminal du Raspberry Pi pi et taper les commandes suivantes :

sudo wget http://goo.gl/Pthh62 –O install_scratchgpio5.sh
sudo bash install_scratchgpio5.sh

Si vous faites l’installation depuis un autre utilisateur la commande d’installation diffère un peu :

sudo bash install_scratchgpio5.sh VotreNomdUtilisateur

Personnellement quand je fais des tests avec les IO j’utilise ce genre de module, qui possède quelques LED, un bouton et un buzzer, ce qui me permet de vérifier rapidement si ça marche sans avoir à refaire un câblage à chaque fois.

RPI MS100A

Maintenant, rentrons dans le vif du sujet, l’utilisation de Scratch et les GPIO du raspberry.

Tout d’abord il faut ouvrir Scratch et utiliser le broadcast qui se trouve dans control puis faire new et lui donner quelque chose qui ressemble a cela :

tous allumer puis tous eteindreTout allumer puis tout éteindre

 

 

Faire clignoter une LED
Faire clignoter une LED

une manière de piloter plusieurs entrées sortie en même temps une manière de piloter plusieurs entrées sorties en même temps

Un petit exemple complet :

Scratch et les GPIO

Mais il est également possible d’utiliser l’appareille photo du raspberry pi comme ceci :

exemple Camera

Cette bibliothèque permet pas mal de choses, comme le contrôle de servo moteur, de steppeur ou même de capteur ultrasonique, pour plus d’information vous pouvez allez vois le site du développeur

Vous pouvez maintenant piloter les entrer sortie de votre raspberry pi grâce a scratch, il existe énormément d’exemples d’utilisation de scratch

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