Le BH1750 est un capteur de lumière ambiante 16 bits. Dans ce guide, vous apprendrez à utiliser le capteur de lumière ambiante BH1750 avec la carte ESP32 à l’aide de l’IDE Arduino. Le capteur communique avec un microcontrôleur en utilisant le protocole de communication I2C.
Vous apprendrez à câbler le capteur à la carte ESP32, à installer les bibliothèques requises et à utiliser un simple croquis pour afficher les lectures du capteur dans le moniteur série.
Ce didacticiel couvre les sujets suivants :
Présentation du capteur de lumière ambiante BH1750
Le BH1750 est un capteur de lumière ambiante 16 bits qui communique via le protocole I2C. Il produit des mesures de luminosité en lux (unité d’éclairement dérivée du SI). Il peut mesurer un minimum de 1 lux et un maximum de 65535 lux.
Le capteur peut se présenter sous différents formats de cartes de dérivation. Voir les images ci-dessous. Les deux images représentent un capteur BH1750.
Caractéristiques du BH1750
Voici une liste des caractéristiques du capteur BH1750. Pour plus d’informations consultez le Fiche technique du capteur BH1750.
- Interface de bus I2C
- La responsabilité spectrale correspond approximativement à la réponse de l’œil humain
- Convertisseur d’éclairement en numérique
- Plage : 1 – 65535 lux
- Faible courant grâce à la fonction de mise hors tension
- 50Hz / 60Hz Fonction de rejet de bruit léger
- Il est possible de sélectionner 2 adresses d’esclaves I2 C différentes
- Petite variation de mesure (+/- 20%)
- L’influence de l’infrarouge est très faible
- Prend en charge le mode de mesure continue
- Prend en charge le mode de mesure unique
Modes de mesure
Le capteur prend en charge deux modes de mesure différents : mode de mesure continueet une fois mode de mesure. Chaque mode prend en charge trois modes de résolution différents.
Mode basse résolution | Précision de 4 lux | Temps de mesure de 16 ms |
Mode haute résolution | Précision de 1 lux | Temps de mesure de 120 ms |
Mode haute résolution 2 | Précision de 0,5 lux | Temps de mesure de 120 ms |
En mode de mesure continue, le capteur mesure en continu les valeurs de lumière ambiante. En mode de mesure unique, le capteur mesure une fois la valeur de la lumière ambiante, puis passe en mode de mise hors tension.
Applications
Le BH1750 est un capteur de lumière ambiante qui peut donc être utilisé dans une grande variété de projets. Par exemple:
- pour détecter s’il fait jour ou nuit ;
- pour régler ou allumer/éteindre la luminosité des LED en fonction de la lumière ambiante ;
- pour régler les écrans LCD et la luminosité de l’écran ;
- pour détecter si une LED est allumée ;
- …
Brochage BH1750
Voici le brochage du BH1750 :
VCC | Alimente le capteur (3.3V ou 5V) |
Terre | Masse commune |
SCL | Broche SCL pour la communication I2C |
SDA (Données) | Broche SDA pour la communication I2C |
AJOUTER* | Sélectionne l’adresse |
La broche ADD est utilisée pour définir l’adresse du capteur I2C. Si la tension sur cette broche est inférieure à 0,7 VCC (la broche est laissée flottante ou connectée à GND), l’adresse I2C est 0x23. Mais, si la tension est supérieure à 0,7xVCC (la broche est connectée à VCC), l’adresse est 0x5C. En résumé:
- Broche ADD flottante ou connectée à Terre → adresse : 0x23
- Ajouter une broche connectée à VCC → adresse : 0x5C
Interface I2C BH1750
Le capteur de lumière ambiante BH1750 prend en charge l’interface I2C.
Vous pouvez connecter le capteur BH1750 à l’ESP32 en utilisant les broches I2C par défaut :
BH1750 | ESP32 |
SCL | GPIO 22 |
SDA | GPIO 21 |
GPIO 22 et GPIO 21 sont les broches I2C par défaut ESP32. Vous pouvez utiliser d’autres broches tant que vous les définissez correctement sur le code.
BH1750 : Lire la lumière ambiante avec ESP32
Maintenant que vous êtes plus familiarisé avec le capteur BH1750, testons-le. Dans cette section, nous allons créer un projet simple qui lit la lumière ambiante et l’affiche dans le moniteur série Arduino IDE.
Pièces requises
Pour terminer ce tutoriel, vous avez besoin des pièces suivantes :
Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !
Schéma – ESP32 avec BH1750
Câblez le capteur BH1750 aux broches ESP32 I2C. Vous pouvez suivre le diagramme schématique suivant.
Vous pouvez également suivre le tableau suivant :
BH1750 | ESP32 |
VCC | 3.3V |
Terre | Terre |
SCL | GPIO 22 |
SDA (Données) | GPIO 21 |
AJOUTER* | Ne vous connectez pas |
En ne connectant pas le AJOUTER broche, nous sélectionnons 0x23 Adresse I2C. Connectez-le à 3.3V pour sélectionner 0x5C adresse à la place.
Préparation de l’IDE Arduino
Nous allons programmer la carte ESP32 à l’aide de l’IDE Arduino. Assurez-vous donc que le module complémentaire ESP32 est installé. Suivez le tutoriel suivant :
Installation de la bibliothèque BH1750
Il existe plusieurs bibliothèques à lire à partir du capteur BH1750. Nous utiliserons le Bibliothèque BH1750 par Christopher Laws. Il est compatible avec les ESP32, ESP8266 et Arduino.
Ouvrez votre IDE Arduino et accédez à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques. Le gestionnaire de bibliothèque devrait s’ouvrir.
Rechercher « BH1750” dans le champ de recherche et installez le Bibliothèque BH1750 par Christopher Laws.
Code – Lecture du capteur de lumière ambiante BH1750
Copiez le code suivant dans votre IDE Arduino. Ce code lit simplement la lumière ambiante en lux et affiche les valeurs sur le moniteur série. C’est l’exemple de code de la bibliothèque appelée Test BH1750 (vous pouvez y accéder dans Fichier > Exemples > BH1750 > Test BH1750
/*
Example of BH1750 library usage. This example initialises the BH1750 object using the default high resolution continuous mode and then makes a light level reading every second.
*/
#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;
void setup(){
Serial.begin(9600);
// Initialize the I2C bus (BH1750 library doesn't do this automatically)
Wire.begin();
// On esp8266 you can select SCL and SDA pins using Wire.begin(D4, D3);
// For Wemos / Lolin D1 Mini Pro and the Ambient Light shield use Wire.begin(D2, D1);
lightMeter.begin();
Serial.println(F("BH1750 Test begin"));
}
void loop() {
float lux = lightMeter.readLightLevel();
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
delay(1000);
}
La bibliothèque fournit également d’autres exemples qui méritent d’être explorés.
Comment fonctionne le code
Nous commençons par inclure les bibliothèques requises. le Fil.h bibliothèque pour utiliser le protocole de communication I2C et la BH1750.h bibliothèque à lire à partir du capteur.
#include <Wire.h>
#include <BH1750.h>
Ensuite, nous créons un BH1750 objet appelé posemètre.
BH1750 lightMeter;
Dans le mettre en place()initialisez le moniteur série à un débit en bauds de 9 600.
Serial.begin(9600);
Initialiser le protocole de communication I2C. Il démarrera une communication I2C sur les broches I2C par défaut du microcontrôleur. Si vous souhaitez utiliser différentes broches I2C, passez-les au commencer() méthode comme celle-ci Wire.begin (SDA, SCL).
Wire.begin();
Initialiser le capteur à l’aide de la commencer() méthode sur la BH1750 objet (posemètre).
lightMeter.begin();
Dans le boucle()nous créons une variable appelée lux, qui enregistre les valeurs de luminance. Pour obtenir la valeur, il vous suffit d’appeler le readLightLevel() fonction sur le BH1750 objet (posemètre).
float lux = lightMeter.readLightLevel();
Enfin, affichez la mesure sur le moniteur série.
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
Vous obtenez et imprimez une nouvelle lecture chaque seconde.
delay(1000);
Manifestation
Maintenant, vous pouvez télécharger le code sur votre tableau. Tout d’abord, connectez votre carte à votre ordinateur. Ensuite aller à Outils > Planche et sélectionnez la carte ESP32 que vous utilisez. Aller à Outils > Port et sélectionnez le port COM auquel votre carte est connectée. Enfin, cliquez sur le bouton de téléchargement.
Après avoir téléchargé le code avec succès, ouvrez le moniteur série à un débit en bauds de 9600 et appuyez sur le bouton RST embarqué ESP32.
Les nouvelles lectures de luminance doivent être imprimées dans le moniteur série.
Autres fonctions utiles
La bibliothèque que nous utilisons avec le capteur BH1750 fournit d’autres exemples qui illustrent d’autres fonctions et caractéristiques utiles. Tu peux vérifier tous les exemples de bibliothèque BH1750 ici.
Réglage du mode de mesure
Par défaut, la bibliothèque utilise le mode de mesure continu haute résolution, mais vous pouvez le modifier en passant le mode de mesure souhaité au commencer() méthode lors de l’initialisation du capteur. Par exemple:
lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)
Voici une liste de tous les modes disponibles :
- BH1750_CONTINUOUS_LOW_RES_MODE
- BH1750_CONTINUOUS_HIGH_RES_MODE (défaut)
- BH1750_CONTINUOUS_HIGH_RES_MODE_2
- BH1750_ONE_TIME_LOW_RES_MODE
- BH1750_ONE_TIME_HIGH_RES_MODE
- BH1750_ONE_TIME_HIGH_RES_MODE_2
Voir les propriétés de chaque mode dans cette section précédente.
Conclusion
Dans ce tutoriel, vous avez appris à utiliser le capteur de lumière ambiante BH1750 avec l’ESP32. Le capteur est très facile à utiliser. Il utilise le protocole de communication I2C, ce qui simplifie le câblage, et la bibliothèque fournit des méthodes pour obtenir facilement les lectures.
Nous espérons que vous avez trouvé ce tutoriel utile. Dites-nous dans les commentaires ci-dessous dans quel projet utiliseriez-vous le capteur BH1750.
Nous avons des tutoriels pour d’autres capteurs avec la carte ESP32 qui pourraient vous plaire :
Merci d’avoir lu.
-
DollaTek BH1750 BH1750FVI Puce intensité Lumineuse Module de capteur de lumière numérique Boule Lumineuse pour ArduinoAdoptez 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).
-
AZDelivery 5 x GY-302 BH170 Capteur de luminosité Capteur de luminosité Compatible avec Arduino et Raspberry Pi y Compris Un eBook✅ Ce capteur de lumière est idéal pour les stations météorologiques ou les projets de maison intelligente. ✅ Le BH1750 utilisé garantit un large éventail d'applications grâce à sa large plage de mesure. ✅ Avec une interface I2C pratique pour un contrôle facile du capteur. ✅ Dans cette percée, un pin pour changer l'adresse I2C a également été exécuté. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
-
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)