Neste tutorial, você aprenderá a criar um sistema de iluminação inteligente utilizando o sensor de luz BH1750FVI, um Arduino Uno R4 Minima e um anel de LEDs NeoPixel. Este projeto ajusta automaticamente o brilho dos LEDs com base na intensidade da luz ambiente, proporcionando uma iluminação eficiente e adaptativa para diversas aplicações, desde automação residencial até sistemas de iluminação inteligentes.
Ao final deste tutorial, você terá um sistema funcional que não apenas responde às mudanças na iluminação ambiente, mas também exibe os níveis de luz e brilho em um display LCD, oferecendo uma interface clara e informativa.
Objetivos
O objetivo deste tutorial é guiar os entusiastas de eletrônica e desenvolvedores na criação de um sistema de iluminação inteligente utilizando o sensor de luminosidade BH1750FVI, um Arduino Uno R4 Minima, e um anel de LEDs NeoPixel. Ao seguir este tutorial, você aprenderá:
- Compreender o Funcionamento do Sensor BH1750FVI: Entender como o BH1750FVI mede a intensidade da luz e converte em sinal digital para o microcontrolador.
- Montar o Circuito: Conectar o sensor de luz BH1750FVI, o display LCD I2C 16×2, e o anel de LEDs NeoPixel ao Arduino Uno R4 Minima.
- Implementar o Código: Escrever e carregar o código no Arduino para ajustar o brilho dos LEDs com base na leitura do sensor e exibir os dados no display LCD. Instalar as bibliotecas necessárias (Adafruit_NeoPixel, LiquidCrystal_I2C, e BH1750FVI) via Arduino Library Manager.
- Visualizar o Resultado: Observar como o sistema ajusta automaticamente o brilho dos LEDs em resposta à iluminação ambiente e monitora as leituras no display LCD.
Materiais Necessários
Para seguir com este tutorial, você irá precisar dos seguintes componentes:
- Arduino Uno R4 Minima
- Sensor de Luz BH1750FVI
- Anel de LED RGB x24 WS2812 5050 Endereçável
- Protoboard
- Jumpers Macho-Macho
- Cabo USB tipo C
Como funciona o Sensor de Luz BH1750FVI?
O sensor de luz BH1750 é um dispositivo digital que mede a intensidade da luz em lux (lx). Ele é amplamente utilizado em projetos de eletrônica devido à sua precisão, baixo consumo de energia e facilidade de integração com microcontroladores como Arduino e Raspberry Pi.
O BH1750FVI opera utilizando um fotodiodo, que converte a luz incidente em uma corrente elétrica. Essa corrente é então amplificada e convertida em um sinal digital que pode ser lido por um microcontrolador. O sensor utiliza um conversor analógico-digital (ADC) interno para realizar essa conversão.
As principais características do BH1750 estão listadas abaixo:
- Faixa de Medição: O BH1750FVI pode medir intensidades de luz que variam de 1 lux até 65535 lux.
- Precisão e Resolução: O sensor oferece alta precisão e uma resolução de 1 lux, permitindo leituras muito detalhadas da intensidade da luz.
- Interface de Comunicação: O sensor utiliza a interface I2C para comunicação com microcontroladores, o que simplifica muito a sua integração em projetos de eletrônica.
- Consumo de Energia: O BH1750FVI é um sensor de baixo consumo de energia, ideal para aplicações alimentadas por bateria.
Para integrar o BH1750 com o Arduino ou outro microcontrolador, você precisa conectar os pinos de alimentação (VCC e GND) e os pinos de comunicação I2C (SCL e SDA).
Pinout do Sensor de Luz BH1750FVI
O sensor de luz BH1750FVI é um dispositivo fácil de usar, especialmente quando se trata de conectar a microcontroladores como Arduino. Abaixo está o pinout detalhado do sensor BH1750FVI:
- VCC: Pino de alimentação. Tensão: 3V a 5V
- GND: Pino de aterramento.
- SDA: Linha de dados do barramento I2C. Utilizada para comunicação de dados entre o sensor e o microcontrolador.
- SCL: Descrição: Linha de clock do barramento I2C. Utilizada para sincronização da comunicação de dados no barramento I2C.
- ADDR: Pino de seleção de endereço I2C. Define o endereço I2C do sensor. Quando conectado ao GND, o endereço I2C é 0x23; quando conectado ao VCC, o endereço é 0x5C.
Circuito do Sensor de Luz BH1750FVI e Arduino
Na imagem abaixo está o esquema de ligações do sistema de iluminação inteligente com o Sensor de Luz BH1750:
As ligações realizadas são as seguintes:
Sensor de Luz BH1750FVI <-> Arduino Uno R4 Minima
VCC <-> 5V
GND <-> GND
SCL <-> SCL
SDA <-> SDA
Display LCD 16×2 I2C <-> Arduino Uno R4 Minima
VCC <-> 5V
GND <-> GND
SCL <-> SCL
SDA <-> SDA
Anel de LED RGB <-> Arduino Uno R4 Minima
GND <-> GND
VCC <-> VCC
IN <-> Pino 9
Código para Sensor de Luz BH1750FVI e Arduino
O código abaixo implementa um sistema que ajusta dinamicamente o brilho de um anel LEDs NeoPixel com base na leitura da intensidade luminosa de um sensor BH1750FVI. Além disso, ele exibe a intensidade de luz medida e o nível de brilho configurado em um display LCD I2C 16×2.
As bibliotecas Adafruit_NeoPixel, LiquidCrystal_I2C, e BH1750FVI são necessárias e devem ser instaladas previamente através do Arduino Library Manager para garantir a comunicação I2C com o sensor de luz e o display LCD, e para o controle dos LEDs NeoPixel.
// Programa: Sistema de Iluminação Inteligente com Sensor de Luz BH1750FVI //Autor: Rosana Guse // Inclui as bibliotecas utilizadas no código #include <Adafruit_NeoPixel.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <BH1750FVI.h> // Definições de pinagem e número de pixels #define PIN 9 #define NUMPIXELS 24 // Definir valores RGB para os pixels const uint8_t redValue = 0; const uint8_t greenValue = 0; const uint8_t blueValue = 255; // Inicialização dos objetos Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Objeto NeoPixel para controle dos LEDs LiquidCrystal_I2C lcd(0x27, 16, 2); // Objeto LCD I2C para exibição de informações BH1750FVI LightSensor(BH1750FVI::k_DevModeContLowRes); // Objeto do sensor de luminosidade BH1750FVI void setup() { Wire.begin(); // Inicializa a comunicação I2C lcd.init(); // Inicializa o LCD lcd.backlight(); // Liga o backlight do LCD LightSensor.begin(); // Inicializa o sensor de luminosidade BH1750FVI pixels.begin(); // Inicializa a fita de LEDs NeoPixel pixels.clear(); // Limpa todos os pixels pixels.setBrightness(10); // Define o brilho inicial } void loop() { // Lê o nível de luminosidade em lux uint16_t lux = LightSensor.GetLightIntensity(); // Mapeia o valor de luminosidade para o brilho do LED (inverte o valor) const uint16_t minLux = 1; const uint16_t maxLux = 1000; uint8_t brightness = map(lux, minLux, maxLux, 255, 0); // Mapeia lux para o intervalo de brilho 0-255 brightness = constrain(brightness, 0, 255); // Garante que o brilho está dentro do intervalo permitido pixels.setBrightness(brightness); // Define o brilho da fita de LED // Define a cor de todos os pixels for (int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(redValue, greenValue, blueValue)); // Define a cor de cada pixel } pixels.show(); // Mostra as mudanças na fita de LED // Atualiza o display LCD updateLCD(lux, brightness); // Atualiza as informações no LCD delay(1000); // Atraso entre as leituras de 1 segundo clearLCD(); // Limpa as informações antigas do LCD } // Função para atualizar as informações no LCD void updateLCD(uint16_t lux, uint8_t brightness) { lcd.setCursor(0, 0); // Posiciona o cursor na primeira linha lcd.print("Lux: "); lcd.print(lux); // Exibe o valor de lux lcd.setCursor(0, 1); // Posiciona o cursor na segunda linha lcd.print("Brilho: "); lcd.print(brightness); // Exibe o valor de brilho } // Função para limpar o LCD void clearLCD() { lcd.setCursor(5, 0); // Posiciona o cursor para limpar a informação de lux lcd.print(" "); // Limpa a informação anterior lcd.setCursor(9, 1); // Posiciona o cursor para limpar a informação de brilho lcd.print(" "); // Limpa a informação anterior }
Funcionamento do Sistema de Iluminação Inteligente com BH1750FVI
O sistema de iluminação inteligente descrito utiliza um sensor de luminosidade BH1750FVI para medir a intensidade de luz ambiente e ajustar dinamicamente o brilho de um anel de LEDs NeoPixel. A principal função do BH1750FVI é fornecer leituras precisas da luz ambiente em unidades de lux, que são usadas para controlar o brilho dos LEDs de forma proporcional. Este ajuste dinâmico garante que os LEDs brilhem mais intensamente em condições de baixa luminosidade e diminuam o brilho em ambientes mais iluminados, economizando energia e melhorando a eficiência do sistema de iluminação.
O sistema também inclui um display LCD I2C 16×2 que exibe em tempo real a intensidade de luz medida pelo sensor (em lux) e o nível de brilho configurado para a fita de LEDs. Isso oferece uma interface clara e direta, permitindo que os usuários monitorem facilmente o funcionamento do sistema.
Este projeto é um excelente exemplo de como integrar diversos componentes eletrônicos para criar um sistema de iluminação adaptativo, que pode ser utilizado em diversas aplicações de automação residencial e sistemas de iluminação inteligentes.
Se você tiver dúvidas, sugestões ou experiências para compartilhar, fique a vontade para deixar um comentário abaixo. E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.