Arduino, Tutoriels

Comment utiliser BH1750 capteur de lumière avec Arduino

Bh1750 Avec Afficheur Lcd Et Arduino

Description du capteur de lumière BH1750

Bh1750 Capteur De Lumière Pour Arduino

BH1750 est un capteur de luminosité utilisé dans les projets d’électronique et de robotique. Il mesure la luminosité ambiante en lux (unité de mesure de l’éclairement) en utilisant la technique de mesure de la photométrie à flux optique. Il est basé sur un circuit intégré qui utilise un capteur photodiodes pour détecter la lumière et un circuit de traitement de signal pour convertir la mesure en une sortie numérique. Il est très précis et peut mesurer un minimum de 1 lux et un maximum de 65535 lux. Il est également très facile à utiliser, car il communique avec les microcontrôleurs via un bus I2C standard.

Il est utilisé dans divers applications comme les capteurs de luminosité pour les réglages d’éclairage automatique, les capteurs de luminosité pour les réveils, les capteurs de luminosité pour les projets d’éclairage automatique et les capteurs de luminosité pour les projets de robotique.

Mode de mesure du BH1750

le capteur prend en charge deux modes de mesure différents : mode de mesure continue et mode de mesure unique. Le mode de mesure continue permet de mesurer en continu les valeurs de lumière ambiante, tandis que le mode de mesure unique permet de mesurer une seule fois la valeur de la lumière ambiante, puis de passer en mode de mise hors tension pour économiser de l’énergie.

Chaque mode de mesure prend en charge trois modes de résolution différents : basse résolution, haute résolution et haute résolution 2. Le mode de basse résolution offre une précision de 4 lux avec un temps de mesure de 16 ms, le mode de haute résolution offre une précision de 1 lux avec un temps de mesure de 120 ms, et le mode de haute résolution 2 offre une précision de 0,5 lux avec un temps de mesure de 120 ms.

Il est important de noter que ces spécifications peuvent varier en fonction du fabricant ou du modèle du capteur utilisé, il est donc conseillé de vérifier la documentation du capteur pour plus de détails sur les modes de mesure et les résolutions prises en charge.

Les broches du BH1750

Le capteur BH1750 possède 4 broches:

  • VCC : C’est la broche d’alimentation qui doit être connectée à une source d’alimentation de 3.3 à 5V.
  • GND : C’est la broche de masse qui doit être connectée à la masse de votre circuit.
  • SDA : C’est la broche de données pour la communication I2C, généralement utilisée pour transmettre les données.
  • SCL : C’est la broche de horloge pour la communication I2C, généralement utilisée pour synchroniser les données.
Bh1750 Light Intensity Sensor Pinout Diagram
BH1750 Arduino

Utilisation du capteur de lumière BH1750 avec Arduino

Matériel nécessaire

Branchement :

Connectez le capteur BH1750 à l’Arduino en suivant le schéma suivant:

  • VCC : Alimentation 5V de l’Arduino
  • GND : Masse de l’Arduino
  • SDA : Broche SDA de l’Arduino (généralement la broche A4 sur les cartes Uno et Mega)
  • SCL : Broche SCL de l’Arduino (généralement la broche A5 sur les cartes Uno et Mega)

Note : La broche ADD est utilisée pour définir l’adresse du capteur I2C. Si la tension sur cette broche est inférieure à 0,7VCC (la broche est 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.

Bh1750 Arduino

Bibliothèque et code

Pour télécharger la bibliothèque BH1750 pour Arduino sur GitHub et importer la bibliothèque dans Arduino IDE en allant dans “Fichier” > “Exemple” > “BH1750” > “BH1750” (ou la chercher dans la bibliothèque de l’Arduino IDE)

Voici un exemple de code pour utiliser BH1750 avec arduino:

#include <Wire.h>
#include <BH1750.h>

BH1750 lightMeter;

void setup() {
  Serial.begin(9600);
  lightMeter.begin();
}

void loop() {
  uint16_t lux = lightMeter.readLightLevel();
  Serial.print("Luminosité : ");
  Serial.print(lux);
  Serial.println(" lux");
  delay(1000);
}

Il est important de noter que ce capteur nécessite une communication I2C pour fonctionner, donc assurez-vous que les broches SDA et SCL de l’Arduino sont connectées correctement et que la bibliothèque Wire.h est incluse dans votre code.

Comment fonctionne le code

Ce code utilise les bibliothèques Wire.h et BH1750.h pour communiquer avec un capteur de lumière BH1750 via une interface I2C. La bibliothèque BH1750.h contient des fonctions qui facilitent la communication avec le capteur, tandis que la bibliothèque Wire.h fournit des fonctions pour la communication I2C.

Dans la fonction “setup()”, la communication série est initialisée à une vitesse de 9600 bauds avec la commande “Serial.begin(9600)”. Ensuite, la fonction “lightMeter.begin()” est utilisée pour initialiser le capteur BH1750.

La fonction “loop()” est exécutée en boucle et contient les instructions suivantes :

  1. “uint16_t lux = lightMeter.readLightLevel();” utilise la fonction “readLightLevel()” de la bibliothèque BH1750 pour lire la luminosité actuelle mesurée par le capteur.
  2. “Serial.print(“Luminosité : “);” affiche le texte “Luminosité :”
  3. “Serial.print(lux);” affiche la valeur de la luminosité mesurée (en lux) sur le moniteur série.
  4. “Serial.println(” lux”);” affiche le texte ” lux” sur le moniteur série.
  5. “delay(1000);” fait une pause de 1000 millisecondes (1 seconde) avant de recommencer la boucle.

Utilisation du capteur BH1750 avec Arduino et l’afficheur LCD I2C

Bh1750 Avec Afficheur Lcd Et Arduino
Bh1750 Avec Arduino Et L’Afficheur Lcd I2C

Pour utiliser ce capteur avec Arduino, vous aurez besoin des éléments suivants:

  • Un Arduino (par exemple, l’Arduino Uno)
  • Un BH1750 capteur de lumière
  • Un afficheur LCD I2C 16×2
  • Des câbles de connexion pour relier les composants
  • La bibliothèque Wire pour Arduino
  • La bibliothèque BH1750 pour Arduino
  • La bibliothèque LiquidCrystal_I2C.h

Voici les étapes pour utiliser le capteur BH1750 avec Arduino et l’afficheur LCD I2C:

  1. Tout d’abord, vous devrez télécharger et installer les bibliothèques nécessaires pour utiliser le BH1750 et l’afficheur LCD I2C. Ces bibliothèques peuvent être téléchargées à partir de la bibliothèque Arduino.
  2. Branchez le capteur BH1750 à l’Arduino en utilisant les câbles de connexion. Le BH1750 a trois broches: VCC, GND et SDA. Reliez VCC à la broche 3.3V de l’Arduino, GND à GND et SDA à A4 (ou SDA sur un arduino MEGA).
  3. Connectez l’afficheur LCD I2C 16×2 à votre carte Arduino en utilisant les broches SDA, SCL, VCC et GND correspondantes. Pour savoir plus sur comment utiliser l’afficheur LCD I2C avec Arduino, vous pouvez voir cette article : https://www.moussasoft.com/afficheur-lcd-arduino
  4. Téléchargez et ouvrez le sketch Arduino suivant pour tester le capteur BH1750 avec l’afficheur LCD I2C:
#include <Wire.h>
#include <BH1750.h>
#include <LiquidCrystal_I2C.h>

BH1750 lightMeter;
LiquidCrystal_I2C lcd (0x27, 16,2);

void setup() {
  Serial.begin(9600);
  lightMeter.begin();
  lcd.begin(16, 2);
  lcd.backlight();
}

void loop() {
  uint16_t lux = lightMeter.readLightLevel();
  lcd.setCursor(0, 0);
  lcd.print("Light: ");
  lcd.print(lux);
  lcd.print(" lx");
  delay(1000);
}

Ce code utilise trois bibliothèques : Wire.h, BH1750.h et LiquidCrystal_I2C.h. Il utilise un capteur de lumière BH1750 pour mesurer la luminosité et un afficheur LCD I2C pour afficher les résultats.

Dans la fonction setup() :

  • Il initialise la communication série à 9600 bauds pour permettre au code de communiquer avec l’ordinateur.
  • Il initialise le capteur BH1750 en appelant la fonction begin().
  • Il initialise l’afficheur LCD I2C en appelant la fonction begin() et en spécifiant la taille de l’écran (16 colonnes, 2 lignes).

Dans la fonction loop() :

  • Il mesure la luminosité en utilisant la fonction readLightLevel() de la bibliothèque BH1750 et stocke la valeur mesurée dans la variable “lux”.
  • Il définit le curseur de l’afficheur LCD I2C à la première colonne de la première ligne en utilisant la fonction setCursor(0, 0).
  • Il affiche le texte “Light: ” à l’écran.
  • Il affiche la valeur de la luminosité mesurée (stocker dans la variable lux) suivi de ” lx”
  • Il fait une pause de 1000ms (1 seconde) avant de répéter la boucle.

Ainsi ce code permet de mesurer la luminosité toutes les secondes et l’affiche sur l’afficheur LCD I2C.

Lien outilles

Video descriptif du tutoriel BH1750 avec Arduino : https://www.youtube.com/watch?v=r1pJDV2UYIQ

Video descriptif du tutoriel BH1750 avec Arduino et l’afficheur LCD I2C : https://www.youtube.com/watch?v=3ymixFIGUEk

La fiche technique du BH1750 : https://datasheet.octopart.com/BH1750FVI-TR-Rohm-datasheet-25365051.pdf

Un commentaire sur “Comment utiliser BH1750 capteur de lumière avec Arduino

  1. Philippe Roulin dit :

    Bonjour,
    Trés intéressant.
    Est-il possible de rajouter un relais à ce montage pour déclencher un autre relais de puissance 220v ?
    Si oui, comment l’intégrer dans le code
    Merci d’acvance

Les commentaires sont fermés