Utilisation du capteur de lumière numérique BH1750FVI I2C

Utilisation du capteur de lumière numérique BH1750FVI I2C

L’appareil BH1750 est un capteur de lumière numérique qui utilise l’interface I2C. Cela lui permet d’être connecté au Raspberry Pi avec seulement quatre fils.

Le module permet une mesure rapide et économique du niveau de lumière ambiante et le niveau de lumière peut être lu sous forme de nombre numérique grâce au convertisseur analogique-numérique 16 bits intégré. L’appareil lui-même est couramment utilisé dans les téléphones portables, les téléviseurs LCD et les appareils photo numériques.

Module de capteur de lumière BH1750

Le module que j’ai ne mesure que 32 x 16 mm. J’ai soudé un en-tête à cinq broches sur le PCB et cela m’a permis de le brancher sur un morceau de planche à pain.

le Fiche technique du circuit intégré du capteur de lumière ambiante BH1750 fournit tous les détails techniques dont certains sont utilisés dans mon exemple de script Python.

Configurer l’interface I2C

Pour utiliser ce module, vous devez activer l’interface I2C sur le Raspberry Pi car elle n’est pas activée par défaut. Il s’agit d’un processus assez simple qui est décrit dans mon tutoriel Activation de l’interface I2C sur le Raspberry Pi.

Connexion du matériel du capteur de lumière au Pi

Le tableau suivant montre comment j’ai connecté les broches du module sur le PCB à l’en-tête GPIO du Pi (P1). Veuillez vous référer à mon guide d’en-tête GPIO pour un diagramme.

Carte de circuits imprimés Desc Broches d’en-tête GPIO
GND Terre P1-14
AJOUTER Adresse sélectionner P1-14
ADD I2C SDA P1-03
SCL I2C SCL P1-05
VCC 3.3V P1-01

Voici un schéma d’une configuration de maquette. Si vous connectez les cinq broches du module directement au Pi, vous n’avez besoin que de cinq fils femelle-femelle.

Configuration du module BH1750

Ce diagramme de Fritzing utilise une pièce personnalisée que j’ai créée pour mon module. D’autres modules peuvent avoir une disposition des broches différente, alors assurez-vous de connecter les bonnes broches au Pi si la vôtre est légèrement différente.

Avec l’appareil connecté et le Pi sous tension, la commande « i2cdetect » devrait afficher l’appareil avec l’adresse 0x23.

Exemple de script Python pour afficher le niveau de luminosité

Vous pouvez télécharger un exemple de script pour lire le niveau de luminosité du module et l’imprimer à l’écran.

Utilisez la commande suivante :

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bh1750.py

Ou utiliser ce lien dans un navigateur.

Pour l’exécuter, vous pouvez utiliser :

python bh1750.py

ou pour Python 3 :

python3 bh1750.py

La sortie devrait ressembler à quelque chose comme :

BH1750 Exemple de sortie

La boucle while continue de prendre des lectures toutes les demi-secondes jusqu’à ce que vous appuyiez sur CTRL-C.

Remarques sur les scripts Python :

  • Les instructions import importent les bibliothèques Python utilisées dans le reste du code, y compris smbus qui gère l’interface I2C.
  • Tous les appareils I2C doivent avoir une adresse. Dans cet exemple, j’ai lié la broche ADDR à la terre afin que l’adresse utilisée par l’appareil soit 0x23. L’adresse devient 0x5C si la broche ADDR est liée à 3,3V.
  • Le bloc de constantes est répertorié dans la fiche technique et définit les différents modes dans lesquels l’appareil peut fonctionner. Je les définis tous mais n’utilise que « ONE_TIME_HIGH_RES_MODE_1 ». Les autres modes ne présentent un réel intérêt que si vous devez effectuer des lectures à grande vitesse.
  • La fonction « smbus.SMBus(1) » configure l’interface I2C.
  • La fonction « read_i2c_block_data » permet de lire 2 octets de données de l’appareil à l’aide du ONE_TIME_HIGH_RES_MODE_1.
  • La fonction convertToNumber est ensuite utilisée pour convertir ces 2 octets de données en un nombre. La valeur 1,2 dans le calcul est définie dans la fiche technique.

Acheter un module BH1750

Le module est disponible auprès de différents vendeurs en ligne :

  • Jopto 3 Pièces BH1750FVI Intensité lumineuse numérique Module de capteur de lumière Capteur d'éclairage DC 5V Boule lumineuse Boule d'éclairage Compatible avec Arduino
    Le module de capteur de lumière numérique BH1750FVI est un circuit intégré de capteur d'intensité lumineuse numérique pour une interface de bus série à deux fils. Les données d'intensité lumineuse collectées par le module peuvent être utilisées pour régler la luminosité du rétroéclairage de l'écran LCD et du clavier. La résolution du module peut détecter une large gamme de changements d'intensité lumineuse. Tension de fonctionnement : 5 V CC Interface de communication : I2C La gamme de lumière d'entrée: 1-65535lx Faible dépendance à la source lumineuse : lampe à incandescence, lampe fluorescente, lampe halogène, LED blanche, lampe fluorescente peuvent être utilisées.
  • DollaTek BH1750 BH1750FVI Puce intensité Lumineuse Module de capteur de lumière numérique Boule Lumineuse pour Arduino
    Adoptez la puce BH1750FVI d'origine ROHM. Gamme FVI : 0- 65535Ix, convertisseur AD 16 bits intégré au capteur, sortie numérique directe, omettant les calculs complexes, omettant l'étalonnage FVI. Conversion de niveau de communication interne, connexion avec microcontrôleur 5V IO, prise en charge STM32/51/ardunio. Câble d'interface XH2.54 pour le bricolage du client. Diamètre extérieur 26 mm, grand diamètre 28,5 mm, hauteur 26 mm (plus boule lumineuse).
  • DollaTek GY-30 BH1750FVI Capteur d'intensité Lumineuse numérique I2C Raspberry Pi
    Le capteur BH1750FVI permet de mesurer le niveau d'éclairage ambiant. BH1750FVI est un capteur de lumière numérique calibré qui mesure l'intensité de la lumière incidente et la convertit en un nombre numérique de 16 bits. Il peut mesurer l'intensité lumineuse ambiante allant de 0 à 65535 Lux (L). Le Lux est une unité SI pour l'éclairement et est égal à une lumière par mètre carré. Le capteur BH1750FVI donne directement la sortie en Lux. La fonction de réponse spectrale du capteur est approximativement proche de celle de l'oeil humain. La sortie du capteur est accessible via une interface I2C. L'adresse I2C 7 bits est 0 × 23 si la broche ADDR est mise à la terre, ou 0x5C si ADDR est lié à VCC.