Sensor de intensidade luminosa GY-30 (BH1750FVI)

No artigo anterior vimos o TSL2561, também disponível em nosso parceiro Curto-Circuito. Nesse artigo vamos discorrer sobre o sensor de intensidade luminosa GY-30.

Características do sensor de intensidade luminosa GY-30

Esse sensor parece bem interessante também. Pode ser alimentado de 3 à 5V e mede entre 0 e 65535 (ou, 2 Bytes de resolução).

Por ser um dispositivo I2C, possui saida digital direta e dispensa outras configurações.

Trabalha na faixa de luz visível.

Altamente preciso.

Wiring do sensor de intensidade luminosa GY-30

Não acho que seja necessário, but anyway; SDA ao pino 21 do ESP32 e SCL ao pino 22 do ESP32. No Arduino, pinos A2 e A3.

Código de exemplo

Esse é um código extremamente básico, a partir dele você poderá moldar toda a solução em seu entorno.

A biblioteca é a BH1750, está disponível no repositório do Arduino e serve para diversas plataformas.

#include <Arduino.h>
#include <Wire.h>
#include <BH1750.h>
/*
  BH1750 can be physically configured to use two I2C addresses:
    - 0x23 (most common) (if ADD pin had < 0.7VCC voltage)
    - 0x5C (if ADD pin had > 0.7VCC voltage)

  Library uses 0x23 address as default, but you can define any other address.
  If you had troubles with default value - try to change it to 0x5C.

*/
BH1750 lightMeter(0x23);

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

  /*

    BH1750 has six different measurement modes. They are divided in two groups;
    continuous and one-time measurements. In continuous mode, sensor continuously
    measures lightness value. In one-time mode the sensor makes only one
    measurement and then goes into Power Down mode.

    Each mode, has three different precisions:

      - Low Resolution Mode - (4 lx precision, 16ms measurement time)
      - High Resolution Mode - (1 lx precision, 120ms measurement time)
      - High Resolution Mode 2 - (0.5 lx precision, 120ms measurement time)

    By default, the library uses Continuous High Resolution Mode, but you can
    set any other mode, by passing it to BH1750.begin() or BH1750.configure()
    functions.

    [!] Remember, if you use One-Time mode, your sensor will go to Power Down
    mode each time, when it completes a measurement and you've read it.

    Full mode list:

      BH1750_CONTINUOUS_LOW_RES_MODE
      BH1750_CONTINUOUS_HIGH_RES_MODE (default)
      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

  */

  // begin returns a boolean that can be used to detect setup problems.
  if (lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)) {
    Serial.println(F("BH1750 Advanced begin"));
  }
  else {
    Serial.println(F("Error initialising BH1750"));
  }

}


void loop() {

  float lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);

}

A saída no terminal, da mesma forma que com TSL2561. Percebi que na posição mais parecida com o teste do sensor TSL2561 o valor teve uma diferença de aproximadamente 5%, mas devido à altíssima sensibilidade, acredito que a razão está mais para o fato de o sensor estar próximo à barra de pinos, com os conectores absorvendo um pouco da luz.

sensor de intensidade luminosa GY-30

Bem, claro que mostrar no terminal não tem graça, mas se adicionar essa informação ao display OLED de forma gráfica como mostrado nesse outro artigo, a brincadeira começa a ficar interessante!

Se desejar ver o artigo anterior para comparar os sensores, siga esse link.

Ainda, se quiser saber sobre a diferença entre candela, lumen e lux, recomendo essa leitura, que considero bastante agradável.

Até a próxima!

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.