Description
Module Capteur d’Intensité de Lumière Numérique BH1750FVI
Le module capteur d’intensité de lumière numérique BH1750FVI est un capteur de lumière ambiante numérique qui utilise l’interface I2C pour communiquer. Ce capteur peut mesurer la luminosité en lux (lx) dans une gamme de 1 à 65535 lx, ce qui le rend idéal pour ajuster la luminosité des écrans de téléphones mobiles, d’écrans LCD, ainsi que pour contrôler les phares des voitures en fonction de l’éclairage extérieur.
Caractéristiques en détails
- Tension de fonctionnement : 3V à 5V
- Gamme de mesure : 1 à 65535 lx
- Consommation de courant : 0.12 mA
- Interface de communication : I2C
- Précision : ±20%
- Spectre de détection : Sensibilité maximale à 560 nm (spectre visible à l’œil humain)
- Rejet de bruit lumineux : 50/60Hz
- Compatibilité : Compatible avec les microcontrôleurs utilisant une logique de 3.3V ou 5V
Fonctionnement
Le BH1750FVI mesure l’intensité lumineuse incidente et convertit cette valeur en un nombre numérique 16 bits. Le capteur fournit directement la valeur de lux par l’intermédiaire de l’interface I2C, ce qui facilite son utilisation avec les microcontrôleurs comme Arduino. La sortie est directement lisible en lux, évitant ainsi tout calcul supplémentaire.
Applications
- Ajustement de la luminosité des écrans de téléphones mobiles et d’écrans LCD
- Contrôle des phares des voitures en fonction de la luminosité ambiante
- Capteurs de lumière ambiante pour contrôler la luminosité des écrans
- Applications domotiques pour mesurer l’intensité lumineuse ambiante
Brochage
- VCC : Alimentation (3.3V ou 5V)
- GND : Masse
- SDA : Ligne de données pour I2C
- SCL : Ligne de l’horloge pour I2C
- ADDR : Sélection de l’adresse I2C (par défaut LOW = 0x23, HIGH = 0x5C)
Comment l’utiliser
Le capteur BH1750FVI est simple à utiliser grâce à son interface I2C. Connectez simplement les broches du capteur à votre microcontrôleur, puis utilisez une bibliothèque comme la bibliothèque BH1750 pour lire les valeurs de luminosité en lux.
Comment l’utiliser avec Arduino:
Code Arduino de base
#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;
void setup(){
Serial.begin(9600); // Initialiser la communication série
Wire.begin(); // Initialiser la communication I2C
lightMeter.begin(); // Initialiser le capteur BH1750
Serial.println("BH1750 Test"); // Message de test
}
void loop() {
float lux = lightMeter.readLightLevel(); // Lire la valeur de luminosité
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
delay(1000); // Attendre 1 seconde avant la prochaine lecture
}
But du code
Ce code initialise le capteur BH1750 et lit les valeurs de luminosité en lux toutes les secondes, affichant les résultats dans le Moniteur Série de l’Arduino.
Composants nécessaires pour le code de base
- Arduino Uno
- Module capteur d’intensité de lumière BH1750FVI
- Fils de connexion
Explication détaillée du code
- Inclusion des bibliothèques :
#include <Wire.h>: Inclut la bibliothèque Wire pour la communication I2C.#include <BH1750.h>: Inclut la bibliothèque BH1750 pour interagir avec le capteur.
- Initialisation dans
setup():Serial.begin(9600);: Initialise la communication série à 9600 bauds.Wire.begin();: Initialise la bibliothèque Wire pour la communication I2C.lightMeter.begin();: Initialise le capteur BH1750.
- Boucle principale
loop():float lux = lightMeter.readLightLevel();: Lit la valeur de la luminosité en lux.Serial.print("Light: "); Serial.print(lux); Serial.println(" lx");: Affiche la valeur lue dans le Moniteur Série.delay(1000);: Attendre une seconde avant de lire à nouveau.
Brochage détaillé
- VCC : Connecté au +5V de l’Arduino
- GND : Connecté à la masse (GND) de l’Arduino
- SDA : Connecté à la broche A4 de l’Arduino
- SCL : Connecté à la broche A5 de l’Arduino
Code Arduino avancé
Ce code utilise un écran LCD I2C 1602 pour afficher les valeurs de luminosité en lux.
#include <Wire.h>
#include <BH1750.h>
#include <LiquidCrystal_I2C.h>
// Initialiser le capteur BH1750
BH1750 lightMeter;
// Initialiser l'écran LCD I2C à l'adresse 0x27 avec 16 colonnes et 2 lignes
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup(){
Serial.begin(9600); // Initialiser la communication série
Wire.begin(); // Initialiser la communication I2C
lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE); // Initialiser le capteur en mode haute résolution continue
lcd.begin(); // Initialiser l'écran LCD
lcd.backlight(); // Allumer le rétroéclairage de l'écran LCD
lcd.print("BH1750 Test"); // Message de test
Serial.println("BH1750 Advanced Test"); // Message de test pour le Moniteur Série
}
void loop() {
float lux = lightMeter.readLightLevel(); // Lire la valeur de luminosité
lcd.setCursor(0, 0); // Positionner le curseur à la première ligne
lcd.print("Light: "); // Afficher le texte "Light:" sur l'écran LCD
lcd.setCursor(0, 1); // Positionner le curseur à la deuxième ligne
lcd.print(lux); // Afficher la valeur de luminosité sur l'écran LCD
lcd.print(" lx"); // Afficher l'unité de mesure "lx"
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
delay(500); // Attendre 500 ms avant la prochaine lecture
}
Explication détaillée du code avancé
- Inclusion des bibliothèques :
#include <Wire.h>: Inclut la bibliothèque Wire pour la communication I2C.#include <BH1750.h>: Inclut la bibliothèque BH1750 pour interagir avec le capteur.#include <LiquidCrystal_I2C.h>: Inclut la bibliothèque LiquidCrystal_I2C pour contrôler l’écran LCD.
- Initialisation dans
setup():Serial.begin(9600);: Initialise la communication série à 9600 bauds.Wire.begin();: Initialise la bibliothèque Wire pour la communication I2C.lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE);: Initialise le capteur BH1750 en mode haute résolution continue.lcd.begin();: Initialise l’écran LCD.lcd.backlight();: Allume le rétroéclairage de l’écran LCD.lcd.print("BH1750 Test");: Affiche un message de test sur l’écran LCD.Serial.println("BH1750 Advanced Test");: Affiche un message de test dans le Moniteur Série.
- Boucle principale
loop():float lux = lightMeter.readLightLevel();: Lit la valeur de la luminosité en lux.lcd.setCursor(0, 0); lcd.print("Light: ");: Affiche le texte “Light:” sur l’écran LCD.lcd.setCursor(0, 1); lcd.print(lux); lcd.print(" lx");: Affiche la valeur de luminosité sur l’écran LCD.Serial.print("Light: "); Serial.print(lux); Serial.println(" lx");: Affiche la valeur de luminosité dans le Moniteur Série.delay(500);: Attendre 500 millisecondes avant de lire à nouveau.
Brochage détaillé
Capteur BH1750FVI
- VCC → Arduino 5V
- GND → Arduino GND
- SDA → Arduino A4
- SCL → Arduino A5
Écran LCD I2C 1602
- VCC → Arduino 5V
- GND → Arduino GND
- SDA → Arduino A4 (partagée avec le capteur BH1750)
- SCL → Arduino A5 (partagée avec le capteur BH1750)
Mots clés: intensity, light, luminosity, digital, sensor.