Module lumière, pression, température, humidité
Test pour connecter un modue tout complet qui comprend plusieurs capteur sur une même carte.
Description du module : module_set_hdc1080_bmp280_bh1750fvi
En fait pour la programmation, on agit comme si on avait affaire a des capteurs séparés.
On peu trouver un exemple sur :
http://arduinolearning.com/code/htu21d-bmp180-bh1750fvi-sensor-example.php
Pour ma carte, je l'ai relier au SDA(20)/SCL(21) de la carte mega/ESP.
Il y a une petit subtilité pour le BH1750, il faut l'initialiser dans le begin sinon on se trouve avec une erreur.
Cette erreur est signalée readLightLevel si l'attribut BH1750_MODE n'est pas défini.
L'attribut BH1750_MODE est défini dans configure lequel est appelé à partir de la begin fonction.
Il est initialisé à UNCONFIGURED et par défaut à CONTINUOUS_HIGH_RES_MODE dans la déclaration de la begin fonction.
j'ai ajouté dans mon code :
// begin returns a boolean that can be used to detect setup problems.
if ( !lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)) {
Serial.println(F("Error initialising BH1750"));
}
Donc en résumé ce que l'on a besoin :
#include <BH1750.h>
#include <Adafruit_BMP085.h>
#include <Sodaq_SHT2x.h>
...
BH1750 lightMeter(0x23);
Adafruit_BMP085 bmp;
...
float lux = 0; // data BH1750 luminosité
float pression = 0; // data BMP180 pressio
float temp = 0; // data HTU21D température
float hum = 0; // data HTU21D humidité
...
//======== Fonction SETUP ================================================================
void setup(void) {
...
...
// begin returns a boolean that can be used to detect setup problems.
if ( !lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)) {
Serial.println(F("Error initialising BH1750"));
}
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
...
}
...
//========================================================================================
// Affiche le résultat des capteurs
void Aff_capteur() {
// Test luminosité
lux = lightMeter.readLightLevel();
pression = bmp.readPressure();
hum = SHT2x.GetHumidity();
temp = SHT2x.GetTemperature();
// affichage
Serialprint(...
....
ou
// Affichage du code sur l'écran TFT 3.5
tft.fillRect(0,455 ,200, 455 , BLACK);
tft.setTextSize(2);
tft.setTextColor(GRAY);
tft.setCursor(10, 300);
tft.print("Temperature :");
tft.setCursor(180, 300);
tft.print(temp);
tft.setCursor(10, 320);
tft.print("Humidite :");
tft.setCursor(180, 320);
tft.print(hum);
tft.setCursor(10, 340);
tft.print("Luminosite :");
tft.setCursor(180, 340);
tft.print(lux);
tft.setCursor(10, 360);
tft.print("Pression :");
tft.setCursor(180, 360);
tft.print(pression);
delay(500);
tft.fillRect(0,455 ,200, 455 , BLACK);
if (debug) {
Serial.print("reçu="); Serial.println(value);
}
}