ESP32 - Sensor de Luz
Este tutorial ensina como usar o ESP32 com o sensor de luz. Em detalhes, vamos aprender:
- Como o sensor de luz funciona.
- Como conectar o sensor de luz ao ESP32.
- Como programar o ESP32 para ler o valor de um sensor de luz.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
O sensor de luz LDR é muito barato, mas precisa de um resistor na ligação, o que pode deixar a montagem mais complexa. Para simplificar a ligação, você pode usar um módulo sensor de luz LDR como alternativa.
Sobre o Sensor de Luz
O sensor de luz mais usado é o fotorresistor (também conhecido como fotocélula, ou resistor dependente de luz, LDR).
Ele pode ser usado para detectar a presença de luz. Também pode ser usado para medir o nível de iluminância/brilho da luz.
Pinagem do Sensor de Luz
Um sensor de luz tem dois pinos. Assim como um resistor comum, NÃO precisamos diferenciar esses pinos.

Como o Sensor de Luz Funciona
A resistência do fotorresistor é inversamente proporcional à intensidade da luz. Quanto menos luz a face do fotorresistor recebe, maior é a resistência do fotorresistor. Por isso, podemos deduzir o quão clara está a luz ambiente medindo a resistência do fotorresistor.

WARNING
O valor medido pelo fotorresistor reflete a tendência aproximada da intensidade da luz, ele NÃO representa exatamente o fluxo luminoso. Por isso, o fotorresistor não deve ser usado em aplicações que exigem alta precisão. A calibração também é necessária para alguns tipos de aplicação.
ESP32 - Sensor de Luz
O pino de entrada analógica do ESP32 converte a tensão (entre 0V e ADC_VREF - o padrão é 3,3V) em valores inteiros (entre 0 e 4095), chamados de valor analógico ou valor ADC. Conectando um pino de entrada analógica do ESP32 ao fotorresistor, podemos ler o valor analógico usando a função analogRead().
Diagrama de Ligação entre o Sensor de Luz e o ESP32

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.
Código ESP32
O código ESP32 abaixo lê o valor de um sensor de luz e deduz o nível de luz
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
- Copie o código acima e cole no Arduino IDE.
- Compile e faça upload do código para a placa ESP32 clicando no botão Upload no Arduino IDE
- Abra o Serial Monitor no Arduino IDE

- Ilumine o sensor
- Veja o resultado no Serial Monitor. Ele fica parecido com o abaixo:
Sensor de Luz e LED
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Código ESP32
O código abaixo LIGA o LED se estiver escuro; caso contrário, DESLIGA o LED
※ Nota:
Este tutorial usa a função analogRead() para ler valores de um ADC (Conversor Analógico-Digital) conectado a um sensor de luz. 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