Posted on

Capteur de lumière photorésistance avec Raspberry Pi

Raspberry Pi photo-resistor light sensor

Dans ce tutoriel, nous utilisons un capteur de luminosité. Avec un script Python sur votre Raspberry Pi, vous pourrez savoir qu’il fasse sombre ou non. Lorsque vous aurez terminé ce didacticiel, vous pourrez connecter un module de capteur de luminosité avec sortie numérique à votre Pi via les broches GPIO. Vous aurez également le code de base pour convertir le signal de sortie du capteur en informations utilisables dans votre script Python.

Ce dont vous aurez besoin pour ce tutoriel

Tout d’abord, vous devez avoir un Raspberry Pi 3 avec la dernière version de Raspbian. Cette version comprend “Thonny”. Nous utiliserons cet EDI convivial pour écrire notre code Python. Si vous n’êtes pas familier avec Python ou avec Thonny ou avec les broches GPIO, je vous suggère de consulter nos tutoriels “Débuter à programmer en Python sur Raspberry Pi” et/ou “Commencer à programmer les GPIO du Raspberry Pi” pour une introduction rapide.

Ensuite, vous aurez besoin d’un peu de matériel supplémentaire:

  • un breadboard (nous utilisons un breadboard de 400 points)
  • un capteur de luminosité avec sortie numérique
  • des câbles Dupont
  • un T-cobbler
  • un câble GPIO 40 broches

Raspberry Pi GPIO discovery kit

Si vous manquez des pièces, n’hésitez pas à visiter notre boutique. Nous avons un kit bien conçu contenant toutes les pièces dont vous avez besoin pour démarrer.

Le module capteur de lumière

Light sensor moduleLe module capteur de lumière est équipé d’une LDR (Light Dependent Resistor). Le LDR a une résistance variable qui change en fonction de l’intensité de la lumière qui lui tombe dessus. Cela nous permet de mesurer l’intensité de la lumière ambiante.

La résistance du LDR diminue lorsque l’intensité de la lumière augmente. Il en résulte un signal analogique qui ne convient pas aux broches GPIO de notre Raspberry Pi. Pour cette raison, nous utilisons ce module équipé du LDR bien sûr, mais également d’un comparateur de tension et d’un potentiomètre. Ces composants nous permettent d’avoir une sortie numérique avec un seuil de luminosité ajustable:

  • intensité lumineuse > seuil : sortie = 0
  • intensité lumineuse < seuil : sortie = 1

Le signal de sortie de la broche “DO” (digital output) peut donc être connecté directement à une broche GPIO de notre Raspberry Pi. La tension de fonctionnement du module est de 3,3V à 5V.

Certains modules d’éclairage ont une quatrième broche, il s’agit de la sortie analogique (broche gauche sur l’image). Ce signal de sortie ne peut pas être connecté directement aux broches GPIO du Raspberry Pi. Il faut un circuit plus complex ou un autre type de carte capable de lire les signaux analogiques.

Et pour finir, le module est équipé de 2 LED: pour indiquer que le module est sous tension et pour indiquer l’état mesurée de la luminosité.

 

Mettre en place la partie matérielle

Avant de brancher des câbles sur les broches GPIO de votre Raspberry Pi, assurez-vous d’éteindre correctement le Pi et de retirer le câble d’alimentation de la carte mère!

Raspberry Pi GPIO light sensor

 

  • connectez le câble 40 broches sur les broches GPIO de votre Pi (si nécessaire, retirez d’abord le cache de votre Pi)
  • branchez le T-cobbler sur le breadboard comme indiqué sur la figure ci-dessus ou ci-dessous
  • branchez l’autre extrémité du câble 40 broches dans le T-cobbler
  • reliez la broche VCC du capteur à une broche 5V (fil rouge)
  • reliez la broche DO du capteur à la broche 23 (fil jaune)
  • connectez le GND du capteur à une broche GPIO GND (fil noir)
Raspberry Pi light sensor fritzing

Writing the code

Le but de ce didacticiel est d’écrire un script Python très simple qui nous permet de visualiser quand le module détecte l’obscurité ou la lumière. Pour écrire le code, nous utilisons l’EDI Thonny. Vous pouvez trouver Thonny dans le menu d’applications de votre Raspberry Pi.

Écrivez ou collez le code suivant dans l’EDI:

import RPi.GPIO as GPIO
import time GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
LIGHT_PIN = 23
GPIO.setup(LIGHT_PIN, GPIO.IN)
lOld = not GPIO.input(LIGHT_PIN) print('Starting up the LIGHT Module (click on STOP to exit)')
time.sleep(0.5) while True:
if GPIO.input(LIGHT_PIN) != lOld:
if GPIO.input(LIGHT_PIN):
print ('\u263e')
else:
print ('\u263c')
lOld = GPIO.input(LIGHT_PIN)
time.sleep(0.2)

 

Quelques explications à propos du code:

  • GPIO.setmode (GPIO.BCM) L’option GPIO.BCM signifie que nous faisons référence aux broches par le numéro “Broadcom SOC channel”, ce sont les numéros après “GPIO”
  • GPIO.setwarnings (False) nous l’utilisons ceci pour éviter les messages d’avertissement.
  • GPIO.setup(LIGHT_PIN, GPIO.IN) nous définissons la broche PIR-pin (= 23) comme une broche d’entrée
  • lOld = not GPIO.input(LIGHT_PIN) Nous utilisons une variable “lOld” pour sauvegarder le dernier état du capteur, cela nous permettra de comparer la dernière valeur mesurée avec la précédente et d’imprimer uniquement lorsque la valeur a changé. Pour être sûr d’imprimer l’état lors du lancement du script, nous attribuons la valeur opposée du capteur de lumière à cette variable.
  • time.sleep(0.5) On attend une demi seconde pour être certain que le capteur soit stabilisé.
  • while True: est une boucle à l’infinie (jusqu’à ce que nous interrompons le programme)
  • Attention, Python est sensible aux espaces. Ne supprimez pas le “tab” avant la ligne de code quit suit la commande “while”
  • if GPIO.input(LIGHT_PIN) != lOld: si le signal est différent du dernier état mesuré
  • if GPIO.input(LIGHT_PIN): si le signal est 1, l’intensité de la lumière est faible => obscurité
  • print ('\u263e') imprimer le symbole de la lune (code ASCII), n’hésitez pas à modifier le code ASCII dans du texte à votre choix
  • print ('\u263c') imprimer le symbole du soleil (code ASCII)
  • lOld = GPIO.input(LIGHT_PIN) nous sauvegardons le dernier statut mesuré dans la variable lOld
  • time.sleep(0.2) On attend 0,2 secondes avant de poursuivre la boucle

 

Python script for light sensor

 

Lorsque que vous avez terminé avec le code, cliquez sur le bouton Exécuter. Vous verrez l’état de l’intensité de la lumière apparaître à l’écran. Si l’intensité de la lumière change au-dessus ou en-dessous du seuil, le nouvel état sera imprimé à l’écran.

N’hésitez pas à ajuster le potentiomètre sur le module pour ajuster le seuil.

Pour arrêter le programme, cliquez simplement sur le bouton STOP.

Toutes nos félicitations! Avec cette configuration, vous connaissez l’intensité de la lumière ambiante. Vous pouvez également utiliser le script pour une application dans laquelle vous souhaitez contrôler une lampe par exemple. Ayez encore beaucoup de plaisir!

découvrez ici plus de produits

Abonnez-vous à notre newsletter

En vous abonnant, vous acceptez notre politique de protection de la vie privée.