ESP32 - Módulo LDR

O módulo sensor de luz LDR consegue perceber e medir a luz ao seu redor. Ele tem duas saídas: uma saída digital, que pode ser LOW ou HIGH, e uma saída analógica.

Neste tutorial, vamos aprender a usar um ESP32 e um módulo sensor de luz LDR juntos para detectar e medir a quantidade de luz. Veja o que vamos abordar:

Módulo Sensor de Luz LDR
image source: diyables.io

Depois, você pode alterar o código para fazer um LED ou uma lâmpada acender (usando um relé) quando ele detectar luz.

Se você tem interesse em um sensor de luz na sua forma bruta, sugiro conferir o tutorial ESP32 - Sensor de Luz.

Sobre o Módulo Sensor de Luz LDR

O módulo sensor de luz LDR pode ser usado para descobrir se há luz ou quanta luz existe na área ao seu redor. Ele tem um pino de saída digital e um pino de saída analógica para diferentes opções.

Pinagem

O módulo sensor de luz LDR tem quatro pinos:

  • Pino VCC: conecte este pino à fonte de alimentação (entre 3,3V e 5V).
  • Pino GND: conecte este pino ao terra (0V).
  • Pino DO: é um pino de saída digital. Ele fornece um sinal HIGH quando está escuro e LOW quando está claro. Você pode ajustar o limiar entre escuro e claro usando um potenciômetro embutido.
  • Pino AO: é um pino de saída analógica. O valor diminui conforme a luz fica mais forte e aumenta conforme a luz fica mais fraca.
Pinagem do Módulo Sensor de Luz LDR
image source: diyables.io

Além disso, o módulo sensor de luz LDR vem com dois LEDs indicadores:

  • O indicador PWR-LED mostra o estado da alimentação.
  • O indicador DO-LED reflete o estado da luz no pino DO: ele acende quando há luz e fica apagado quando está escuro.

Como Funciona

Sobre o pino DO:

  • O módulo sensor de luz LDR tem um potenciômetro que permite ajustar a sensibilidade ou o limiar para detectar luz.
  • Quando a intensidade da luz no ambiente está acima do limiar definido (considerado claro), a saída do sensor no pino DO fica LOW e o DO-LED acende.
  • Quando a intensidade da luz no ambiente está abaixo do limiar definido (considerado escuro), a saída do sensor no pino DO fica HIGH e o DO-LED apaga.

Sobre o pino AO:

  • O valor lido no pino AO é inversamente proporcional à intensidade da luz no ambiente. Em outras palavras, conforme a intensidade da luz aumenta (mais claro), o valor no pino AO diminui.
  • Da mesma forma, conforme a intensidade da luz diminui (mais escuro), o valor no pino AO aumenta.

É importante notar que ajustar o potenciômetro não afeta o valor no pino AO.

Diagrama de Ligação

O módulo sensor de luz oferece duas saídas, DO e AO, que podem ser usadas separadamente ou juntas.

  • Como conectar o ESP32 e o módulo LDR usando uma protoboard
Diagrama de ligação ESP32 Módulo Sensor de Luz LDR

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Como conectar o ESP32 e o módulo LDR

Código ESP32 - Ler o valor do pino DO

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-ldr-module */ #define DO_PIN 13 // ESP32's pin GPIO13 connected to DO pin of the ldr module void setup() { // initialize serial communication Serial.begin(9600); // initialize the ESP32's pin as an input pinMode(DO_PIN, INPUT); } void loop() { int lightState = digitalRead(DO_PIN); if (lightState == HIGH) Serial.println("It is dark"); else Serial.println("It is light"); }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
  • Faça a ligação como na imagem acima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra o Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Copie o código acima e abra no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no ESP32
  • Cubra e descubra o módulo sensor de luz LDR com a mão ou com algum objeto
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
It is light It is light It is dark It is dark It is dark It is light It is light It is light
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Se você perceber que o estado do LED fica sempre aceso ou sempre apagado, independentemente da presença de luz, você pode ajustar o potenciômetro. Esse ajuste permite regular com precisão a sensibilidade à luz do sensor.

Além disso, o código pode ser modificado de acordo com as suas necessidades. Por exemplo, você pode programar o LED para ativar ou a lâmpada para acender quando a luz for detectada. Você também tem a flexibilidade de fazer um servo motor girar. Instruções detalhadas e tutoriais sobre essas opções de personalização podem ser encontrados no final deste guia.

Código ESP32 - Ler o valor do pino AO

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-ldr-module */ #define AO_PIN 36 // ESP32's pin GPIO36 connected to AO pin of the ldr module void setup() { // initialize serial communication Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { int lightValue = analogRead(AO_PIN); Serial.print("The AO value: "); Serial.println(lightValue); }

Passos Rápidos

  • Copie o código acima e abra no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no ESP32
  • Cubra e descubra o módulo sensor de luz LDR com a mão ou com algum objeto
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
The AO value: 145 The AO value: 146 The AO value: 146 The AO value: 572 The AO value: 1678 The AO value: 1945 The AO value: 2956 The AO value: 3001 The AO value: 3098 The AO value: 4005 The AO value: 4005 The AO value: 1645 The AO value: 1546 The AO value: 346 The AO value: 172
Ln 11, Col 1
ESP32 Dev Module on COM15
2

※ Nota:

Este tutorial usa a função analogRead() para ler valores de um ADC (Conversor Analógico-Digital) conectado a um módulo LDR. O ADC do ESP32 é bom para projetos que NÃO precisam de alta precisão. No entanto, para projetos que precisam de medições precisas, observe:

  • O ADC do ESP32 não é perfeitamente preciso e pode precisar de calibração para obter resultados corretos. Cada placa ESP32 pode ser um pouco diferente, então você precisa calibrar o ADC de cada placa individualmente.
  • A calibração pode ser difícil, especialmente para iniciantes, e nem sempre pode dar os resultados exatos que você quer.

Para projetos que precisam de alta precisão, considere usar um ADC externo (por exemplo, ADS1115) com o ESP32 ou usar um Arduino, que tem um ADC mais confiável. Se você ainda quiser calibrar o ADC do ESP32, consulte o ESP32 ADC Calibration Driver

Vídeo

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!