Accueil > Arduino, NodeMCU > Capteur de lumière BH1750 et Servo moteur SG90

Capteur de lumière BH1750 et Servo moteur SG90

Un petit article sur une utilisation possible des capteurs de luminosité BH1750. Il y a peu de temps j’ai écrit un article sur la création de la librairie pour gérer le capteur BH1750 (https://itechnofrance.wordpress.com/2018/03/03/utilisation-du-capteur-de-luminosite-bh1750fvi/); aujourd’hui nous allons utiliser 2 capteurs pour gérer un servo moteur SG90 en fonction de la luminosité. Par exemple cela permettrait de motoriser un panneau solaire afin de suivre le soleil pour obtenir une charge maximale du panneau.

Le câblage sera le suivant :

Et le programme qui va avec :
/*
 * Programme qui permet de  lire la luminosité par 2 capteurs de luminosité en mode basse résolution
 * et piloter un servo pour un NodeMCU Lolin ou Wemos D1 mini
 * Matériel :
 *            Wemos D1 mini
 *            2 capteurs BH1750
 *            1 servo SG90
 *
 * Auteur : iTechnoFrance
 */
#include <Wire.h>  // ajout de librairie de gestion I2C
#include <bh1750.h>  // ajout de la librairie de gestion du capteur BH1750
#include <Servo.h>  // ajout de la librairie de gestion du servo SG90
bh1750 lux_gauche;  // création d’une instance pour la mesure du capteur situé à gauche
bh1750 lux_droite;  // création d’une instance pour la mesure du capteur situé à gauche
Servo servo_sg90;   // création d’une instance pour contrôler le servomoteur
// déclaration des broches utilisées sur Wemos D1 mini
int sda = D2;  // GPIO4
int scl = D1;  // GPIO5
int position = 80;  // position du servo au milieu
int calibrage_capteur_lux = 200;  // définit la différence de Lux entre les 2 capteurs qui permet d’actionner le servo
void setup()
{
  Serial.begin(115200);
  // adresse 0x23 si broche ADD non branchée ou relié à 0v
  // adresse 0x5c si broche ADD branchée sur 5v
  lux_gauche.begin(0x23, sda, scl);  // initialise la librairie BH1750 pour une utilisation Wemos D1 mini
  lux_droite.begin(0x5c, sda, scl);  // initialise la librairie BH1750 pour une utilisation Wemos D1 mini
  servo_sg90.attach(0);  // utilise la sortie D3 (GPIO0) pour le contrôle du servomoteur
  servo_sg90.write(position); // positionne le servomoteur à 80°
}
void loop()
{
  uint16_t lux_g = lux_gauche.lecture_lumiere(0x23, MODE_UNE_MESURE_BASSE_RESOLUTION);  // effectue une mesure
  uint16_t lux_d = lux_droite.lecture_lumiere(0x5c, MODE_UNE_MESURE_BASSE_RESOLUTION);  // effectue une mesure
  if (lux_g > (lux_d + calibrage_capteur_lux))  // test de la différence de lumière entre les 2 capteurs
  {
    if (position > 10)  // évite d’aller en butée du servo
    {
      position–;
      servo_sg90.write(position);
    }
  }
  if (lux_d > (lux_g + calibrage_capteur_lux))  // test de la différence de lumière entre les 2 capteurs
  {
    if (position < 170)  // évite d’aller en butée du servo
    {
      position++;
      servo_sg90.write(position);
    }
  }
  delay(10);  // attente de 10ms
}
Une vidéo qui montre le fonctionnement est accessible à l’adresse :
Catégories :Arduino, NodeMCU Étiquettes : , , , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :