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.
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.
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 :
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 ArduinoLe 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.
-
ICQUANZX 3 Pcs GY-302 BH1750FVI Capteur D'Intensité De La Lumière Numérique Module Détecteur 3V-5V Alimentation pour AVR ArduinoModule de détecteur d'intensité lumineuse numérique GY-302 Capteur intégré 16bitAD BH1750FVI d'origine utilisant ROHM Alimentation: 3-5v Taille: 13.9mm X 18.5mm (1mm = 0.0393inch)
-
ARCELI 3 pièces BH1750FVI Module numérique de capteur de lumière, Puce numérique d'éclairage d'intensité Sphère de lumière pour ArduinoLe module de capteur de lumière numérique BH1750FVI est un capteur d'intensité lumineuse numérique avec circuit intégré pour une interface de bus série à deux fils. Conversion interne du niveau de communication, connexion au microcontrôleur 5 V E / A, support de STM32 / 51 / Arduino. Câble d'interface XH2.54, pratique pour les clients DIY ; Petite taille, largement utilisé dans la détection de lumière intérieure, les légumes, les pépinières, les serres. Les données d'intensité lumineuse détecté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. Faiblement dépendant de la source lumineuse : ampoule, tube fluorescent, halogène, LED blanche ou tube fluorescent. Convient pour les téléphones portables, les téléviseurs LCD, les ordinateurs portables, les consoles de jeux portables, les appareils photo numériques, les caméras vidéo numériques, les PDA, les moniteurs LCD