Journalisation et système d'alerte photocellulaire Raspberry Pi – Construire un capteur de lumière basse consommation avec Python
Ce guide vous explique comment construire un photosenseur basé sur Raspberry Pi qui journalise les niveaux de lumière et déclenche des alertes. Idéal pour surveiller des espaces sombres comme des placards ou des casiers d'équipement, ou simplement pour suivre l'éclairage ambiant.
Nous utiliserons des LED comme indicateurs de sortie, mais le circuit peut être adapté pour contrôler des relais, des buzzers ou même un service de notification. Tout ce dont vous avez besoin est un kit de démarrage Adafruit RPi – un pack économique incluant tout le nécessaire – ou vous pouvez assembler les pièces vous-même à partir de la nomenclature ci-dessous.
- 3 × LED diffuses 10 mm (rouge, bleu, vert)
- 1 × Condensateur 1 µF
- 1 × Photocellule (photorésistance)
- 3 × Résistances 560 Ω
- 1 × Pi Cobbler breakout
- 10 × Fils de liaison pour plaque d'essai
- 1 × Plaque d'essai sans soudure pleine longueur
Contrairement à un microcontrôleur typique, le Raspberry Pi ne possède pas de convertisseur analogique-numérique embarqué. Nous contournons cela en chronométrant la charge d'un condensateur à travers la photocellule – une technique RC peu coûteuse qui fournit des lectures fiables.
Prérequis
La programmation se fait en Python. Nous recommandons l'utilisation de la distribution Occidentalis d'Adafruit, qui inclut la bibliothèque RPi.GPIO et des modules précompilés pour le Pi. Si vous préférez une installation minimale, installez simplement RPi.GPIO via pip.
Comme le circuit consomme très peu de courant, une alimentation Pi standard suffit. Pour l'étalonnage, une source de lumière variable (par exemple, une lampe de bureau à luminosité réglable) vous aidera à voir comment le capteur réagit à différents niveaux d'éclairage.
Étape 1 – Câblage du circuit RC
- Insérez le Cobbler dans la plaque d'essai, en veillant à ce qu'aucune broche ne touche le même rail d'alimentation – sinon vous risquez de court-circuiter le Pi.
- Connectez la broche 3,3 V au rail positif de la plaque d'essai et la broche GND au rail négatif.
- Placez la photocellule sur l'espace entre les deux moitiés de la plaque d'essai.
- Câblez un côté de la photocellule au rail 3,3 V, et l'autre côté à la broche 18 du Pi.
- Connectez le condensateur 1 µF de la broche 18 à GND. Cela complète le réseau RC.
À ce stade, vous pouvez passer à l'étalonnage du capteur.
Étape 2 – Étalonnage et test
Exécutez le script Python suivant. Il mesure en continu le temps que met le condensateur à charger à travers la photocellule. La valeur retournée diminue à mesure que l'intensité lumineuse augmente.
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
RC_PIN = 18
def rc_time(pin):
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.LOW)
time.sleep(0.1) # décharger complètement le condensateur
GPIO.setup(pin, GPIO.IN)
count = 0
while GPIO.input(pin) == GPIO.LOW:
count += 1
return count
while True:
print(rc_time(RC_PIN))
time.sleep(0.5)
En variant la source lumineuse, vous observerez une tendance numérique claire : des niveaux de lumière plus élevés produisent des lectures plus basses. Capturez quelques échantillons dans l'obscurité et sous un éclairage typique pour établir un seuil de déclenchement d'alertes.
Étape 3 – Implémentation des alertes
Avec le seuil défini, modifiez le script pour allumer ou éteindre des LED, journaliser les données dans un fichier, ou envoyer une notification par email ou MQTT. Par exemple, pour faire clignoter une LED rouge quand la pièce devient lumineuse :
RED_LED = 17
GPIO.setup(RED_LED, GPIO.OUT)
while True:
level = rc_time(RC_PIN)
if level < THRESHOLD:
GPIO.output(RED_LED, GPIO.HIGH)
else:
GPIO.output(RED_LED, GPIO.LOW)
time.sleep(1)
Pour des flux de travail plus complexes, envisagez d'intégrer Home Assistant, Node‑RED ou un service web Flask personnalisé.
Sécurité et bonnes pratiques
- Vérifiez toujours les connexions des broches avant d'alimenter le Pi.
- Utilisez une alimentation 3,3 V pour le réseau RC ; évitez 5 V qui pourrait endommager le GPIO du Pi.
- Gardez la valeur du condensateur faible (1 µF) pour éviter de longs temps de charge qui ralentissent le script.
- Documentez vos données d'étalonnage ; cela simplifie le dépannage et les ajustements futurs.
Avec cette configuration, vous disposez maintenant d'un capteur de lumière fiable, basse consommation, qui journalise et réagit aux changements d'éclairage. N'hésitez pas à étendre le projet en ajoutant plusieurs capteurs, en journalisant dans une base de données, ou en visualisant les données sur un tableau de bord web.
Processus de fabrication
- Intégration MQTT transparente : capteurs NodeMCU DHT22 avec Raspberry Pi 3 B+ comme broker
- Système aquaponique piloté par Raspberry Pi : guide de construction et code
- Journaliser et graphiquer les événements d'un thermostat 24 V avec un optocoupleur et Raspberry Pi
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Surveillance transparente température et humidité sur Raspberry Pi avec EzTemp
- Surveillance de température de salle sur Raspberry Pi avec graphiques Gnuplot et alertes email
- Comment connecter un capteur de température DS1820 One‑Wire à un Raspberry Pi via GPIO
- Connexion du capteur ultrasonique HC‑SR04 au Raspberry Pi 3 : Guide complet
- Mesurer des capteurs analogiques sur Raspberry Pi sans ADC natif