Hello World : allumer une lumière

dsc_0017

Comme deuxième étape, il me semble naturel de forger un « Bonjour le monde » traditionnel puisqu’il s’agit d’un nouvel environnement. Mon choix s’est arrêté à essayer d’allumer une lumière avec le Raspberry Pi. Opération qu’il me semble relativement simple à accomplir. Effectuer cet exploit permettra de comprendre le principe des branchements sur un breadboard, d’introduire le principe des GPIO, de manipuler du code Python exécuté sur le Pi pour interagir avec un composant sur le breadboard (la lumière).

Objectifs

  • Allumer une lumière sur un breadboard depuis un script Python exécuté sur le Raspberry Pi.

Équipements

  • Lumière DEL rouge (5mm 1.85-2.5v @20mA)
  • 1 résistance 220 ohm (5%)
  • 2 jumper wires (male – femelle)
  • Demi breadboard

dsc_0007

Le breadboard est une plaquette où il est possible de brancher des composantes électroniques sans avoir à souder. Idéal pour le prototypage. Cette plaque se diviser en deux fonctionnalités : des rangées pour le courant (+, -) [rangées A et D sur le schéma] et une grille pour les composantes [colonnes B et C sur le schéma].

basic_breadboard_layout

La zone pour le courant est organisée de façon horizontale. C’est-à-dire que si un des « trous » de la rangée du ground (-) reçoit effectivement du ground, toute la rangée sera alimentée. Ainsi, les composants, qui vont se trouver plus dans la partie centrale de la plaque, pourront se brancher vers la rangée du ground en question pour s’alimenter.

La grille utilisable pour les composants [colonnes B et C sur le schéma] est organisée de façon verticale. Les deux zones sont par contre indépendantes l’une de l’autre. L’idée est donc d’installer un composant sur la grille et de faire les connexions nécessaires avec la source de courant et les pins GPIO requises. Il est nécessaire de bien lire la documentation d’un composant pour comprendre comment le branchement doit s’effectuer.

Pour effectuer ses branchements, on utilise des câbles (jumper wires) qui permettent de s’insérer sans difficulté dans la plaque. C’est de cette façon qu’on relie des pins GPIO avec un composant brancher sur le breadboard.

Premier branchement

Dans un premier temps, il faut apporter le ground sur le breadboard en utilisant un câble qui part d’une pin GPIO GRN (ground) vers un trou sur la bande négative de la plaquette. Il peut s’agir de n’importe lequel trou ! Aussitôt qu’un trou est alimenté, la ligne complète est alimentée. Idéalement, on utilise un câble noir.

dsc_0010

La première difficulté se trouve à figurer quelle-est la pin sur le Raspberry Pi qui correspond au ground. Il n’y a pas de miracle, il suffit de consulter le plan officiel.

image

On peut donc voir qu’il y a plusieurs pins qui octroi du ground. Pour ma part, j’ai choisi la 3e pin du haut puisqu’elle était bien placée selon mon organisation. Maintenant, la bande négative est alimentée ! Au niveau conceptuel du moins puisque le Pi n’est pas encore alimenté.

Branchement de la lumière

On ajoute à présent la lumière sur la plaque. Peu importe l’endroit. La lumière est formée de deux connexions (une petite patte et une patte plus longue). La petite patte doit être reliée à la bande négative et l’autre vers une pin GPIO numérotée qui pourra être interfacé plus tard avec Python.

Attention ! Il faut protéger notre équipement avec une résistance entre la petite patte de la lumière et le ground. C’est pourquoi on utilise un résistor pour relier la petite patte à la bande négative plutôt qu’un câble directement.

dsc_0012

Une fois ce branchement effectué, on fait une connexion entre la grande patte et une pin GPIO libre numérotée. Dans mon cas, il s’agit de la pin #18 qui se trouve à être la 6e pin du haut.

dsc_0015

Premier script Python

Maintenant, on peut brancher l’alimentation du Pi et se connecter pour créer un premier script Python. L’idée de ce script est de simplement allumer la lumière pendant quelques secondes et de l’éteindre en envoyant ou non du signal vers notre pin GPIO sélectionnée (dans mon cas #18). Il suffit de créer un nouveau fichier (led.py) et de l’éditer.

import RPi.GPIO as GPIO, time
GPIO.setmode(GPIO.BCM)
GPIO.setwarning(False)
GPIO.setup(18, GPIO.OUT)

GPIO.output(18, True)
time.sleep(3)
GPIO.output(18, False)

Une fois terminée, on lance le script avec la commande python led.py et la lumière s’allume pour 3 secondes ! Maintenant, l’explication du code …

La première ligne (import RPi.GPIO ...) indique simplement à Python d’inclure les bibliothèques indiquées. Dans notre cas, une bibliothèque qui permet la manipulation des pins GPIO et une qui permet des manipulations du temps (nécessaire pour sleep).

La ligne GPIO.setmode(BCM) indique la façon dont nous allons identifier les pins dans le code. Il existe deux façons : BOARD et BCM. BOARD signifie simplement que les pins utilisées seront identifiées selon le numéro de la pin qui symbolise son emplacement (dans notre cas, il s’agit de l’emplacement numéro 12). BCM signifie que les pins seront identifiées suivant les nombres « Broadcom SOC channel ». Ces nombres correspondent simplement au numéro des pins GPIO (dans notre cas, la pin #18). L’image précédente de la carte qui montre l’organisation des pins illustre bien les deux types de numéros.

La ligne suivante GPIO.setwarning(False) permet simplement de ne pas afficher les avertissements dans la console. La ligne GPIO.setup(18, GPIO.OUT) prépare simplement la pin #18 (identifiée suivant BCM) pour recevoir un signal.

L’instruction GPIO.output(18, True) permet d’envoyer un signal vers une pin préparée en sortie. time.sleep(3) permet simplement de mettre le script en attente pendant 3 secondes et finalement GPIO.output(18, False) arrête l’envoi du signal vers la pin #18.

Références :

Advertisements

Une réflexion sur “Hello World : allumer une lumière

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l’aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s