ESP32 - Sensor de Luz

Este tutorial ensina como usar o ESP32 com o sensor de luz. Em detalhes, vamos aprender:

Hardware Necessário

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow
1×(Alternativa) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativa) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativa) ESP32 Uno-form board
1×(Alternativa) ESP32 S3 Uno-form board
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Sensor de Luz
1×10 kΩ Resistor
1×Protoboard
1×Fios Jumper
1×(Opcional) Conector de Alimentação DC
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP32
1×(Recomendado) Breakout Expansion Board for ESP32
1×(Recomendado) Divisor de Alimentação para ESP32

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)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

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.

Pinagem do Sensor de Luz

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.

Como o Sensor de Luz Funciona

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

Diagrama de Ligação ESP32 Sensor de Luz

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

/* * 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-light-sensor */ #define LIGHT_SENSOR_PIN 36 // ESP32 pin GIOP36 (ADC0) void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { // reads the input on analog pin (value between 0 and 4095) int analogValue = analogRead(LIGHT_SENSOR_PIN); Serial.print("Analog Value = "); Serial.print(analogValue); // the raw analog reading // We'll have a few threshholds, qualitatively determined if (analogValue < 40) { Serial.println(" => Dark"); } else if (analogValue < 800) { Serial.println(" => Dim"); } else if (analogValue < 2000) { Serial.println(" => Light"); } else if (analogValue < 3200) { Serial.println(" => Bright"); } else { Serial.println(" => Very bright"); } delay(500); }

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
Como abrir o Serial Monitor no Arduino IDE
  • Ilumine o sensor
  • Veja o resultado no Serial Monitor. Ele fica parecido com o abaixo:
∞
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
Analog Value = 406 => Dim Analog Value = 412 => Dim Analog Value = 465 => Dim Analog Value = 471 => Dim Analog Value = 3511 => Very bright Analog Value = 3521 => Very bright Analog Value = 3618 => Very bright
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Sensor de Luz e LED

Diagrama de Ligação

Diagrama de Ligação ESP32 Sensor de Luz LED

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

/* * 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-light-sensor */ // constants won't change #define LIGHT_SENSOR_PIN 36 // ESP32 pin GPIO36 (ADC0) connected to light sensor #define LED_PIN 22 // ESP32 pin GPIO22 connected to LED #define ANALOG_THRESHOLD 500 void setup() { // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(LED_PIN, OUTPUT); // set ESP32 pin to output mode } void loop() { int analogValue = analogRead(LIGHT_SENSOR_PIN); // read the value on analog pin if (analogValue < ANALOG_THRESHOLD) digitalWrite(LED_PIN, HIGH); // turn on LED else digitalWrite(LED_PIN, LOW); // turn off 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

Vídeo

※ 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!