Arduino avec capteur de lumière ambiante BH1750

Arduino 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 Arduino. Le capteur communique avec un microcontrôleur en utilisant le protocole de communication I2C.

Carte Arduino avec capteur de lumière ambiante BH1750 Arduino IDE

Vous apprendrez à câbler le capteur à la carte Arduino, à 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-mode de mesure du temps. 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.

Arduino avec capteur de lumière ambiante BH1750

Vous pouvez connecter le capteur BH1750 à l’Arduino en utilisant les broches I2C par défaut (ce sont les broches de l’Arduino UNO, si vous utilisez un autre modèle, vérifiez ses broches I2C) :

BH1750 : lire la lumière ambiante avec Arduino

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 !

Arduino avec capteur de lumiere ambiante BH1750

Schéma – Arduino avec BH1750

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

Schéma de câblage Arduino BH1750

Vous pouvez également suivre le tableau suivant :

BH1750 Arduino
VCC 5V
Terre Terre
SCL A5
SDA (Données) A4
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.

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 Arduino 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.

Les nouvelles lectures de luminance doivent être imprimées dans le moniteur série.

Carte Arduino 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 haute résolution continue, mais vous pouvez le modifier en passant le mode de mesure souhaité à la méthode begin() 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’Arduino Uno. 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 Arduino qui pourraient vous plaire :

Merci d’avoir lu.

  • fengzong Module de capteur d'intensité de lumière ambiante numérique 1 pc BH1750 pour Arduino GY-302 Couleur Bleue la Plus récente (Bleu)
  • DollaTek 5Pcs Module numérique de capteur d'intensité Lumineuse Photo résistor Photorésistance pour Arduino UNO
    Le module de résistance photosensible le plus sensible à la lumière ambiante, généralement utilisé pour détecter la luminosité de la lumière ambiante, déclencher des modules de microcontrôleur ou de relais; Le signal de sortie du comparateur est propre, bonne forme d'onde, capacité de conduite, plus de 15mA. La forme de sortie: sorties de commutation numériques DO (0 et 1) et sortie de tension analogique AO A boulons fixes pour une installation facile Avec potentiomètre réglable pour régler la luminosité de la détection de lumière
  • AZDelivery 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.