ESP32 avec capteur de lumière ambiante BH1750

ESP32 avec capteur de lumière ambiante BH1750

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.

ESP32 avec capteur de lumière ambiante BH1750 Programmation Arduino IDE Core

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.

Cartes de dérivation du capteur de lumière ambiante 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

Capteur de lumière ambiante BH1750

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

Brochage du capteur de lumière ambiante 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.

ESP32 avec capteur de lumière ambiante BH1750

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 !

ESP32 avec capteur de lumiere ambiante BH1750

Schéma – ESP32 avec BH1750

Câblez le capteur BH1750 aux broches ESP32 I2C. Vous pouvez suivre le diagramme schématique suivant.

Circuit de schéma de câblage ESP32 BH1750

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.

Bibliothèque BHT1750 Arduino IDE

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);
}

Afficher le code brut

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.

Bouton de téléchargement Arduino 2.0

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.

ESP32 avec capteur de lumière ambiante BH1750 Démonstration IDE Arduino

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.

Emballer

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.