Arduino Nano ESP32 - Sensor de Luz

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

Hardware Necessário

1×Arduino Nano ESP32
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 Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

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 exige 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 distinguir 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. Portanto, podemos inferir o quão clara é 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, mas NÃO representa exatamente o fluxo luminoso. Portanto, o fotorresistor não deve ser usado em aplicações que exigem alta precisão. A calibração também é necessária em alguns tipos de aplicação.

Arduino Nano 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. Ao conectar um pino de entrada analógica do Arduino Nano 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 Arduino Nano ESP32

Diagrama de Ligação do Sensor de Luz com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código Arduino Nano ESP32

O código do Arduino Nano ESP32 abaixo lê o valor de um sensor de luz e infere o nível de luz

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-light-sensor */ #define LIGHT_SENSOR_PIN A0 // The Arduino Nano ESP32 pin connect to the light sensor void setup() { // Initialize the Serial to communicate with the Serial Monitor. 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 analog_value = analogRead(LIGHT_SENSOR_PIN); Serial.print("Analog Value = "); Serial.print(analog_value); // The raw analog reading // We'll have a few threshholds, qualitatively determined if (analog_value < 40) { Serial.println(" => Dark"); } else if (analog_value < 800) { Serial.println(" => Dim"); } else if (analog_value < 2000) { Serial.println(" => Light"); } else if (analog_value < 3200) { Serial.println(" => Bright"); } else { Serial.println(" => Very bright"); } delay(500); }

Passos Rápidos

  • Se esta é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente do Arduino Nano ESP32 no Arduino IDE.
  • Copie o código acima e cole no Arduino IDE.
  • Compile e faça o upload do código para a placa Arduino Nano ESP32 clicando no botão Upload do Arduino IDE
  • Abra o Serial Monitor no Arduino IDE
Como abrir o Serial Monitor no Arduino IDE
  • Aponte luz para o sensor
  • Confira o resultado no Serial Monitor. Ele se parece com o abaixo:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' 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
Arduino Nano ESP32 on COM15
2

Sensor de Luz e LED

Diagrama de Ligação

Diagrama de Ligação do Sensor de Luz e LED com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código Arduino Nano ESP32

O código abaixo liga o LED se estiver escuro; caso contrário, desliga o LED

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-light-sensor */ #define LIGHT_SENSOR_PIN A0 // The Arduino Nano ESP32 pin connect to the light sensor #define LED_PIN D2 // The Arduino NanO ESP32 pin 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 analog_value = analogRead(LIGHT_SENSOR_PIN); // read the value on analog pin if (analog_value < 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 ou componente. O ADC do Arduino Nano ESP32 é adequado para projetos que não exigem alta precisão. No entanto, para projetos que precisam de medições precisas, tenha em mente o seguinte:

  • O ADC do Arduino Nano ESP32 não é perfeitamente preciso e pode exigir calibração para obter resultados corretos. Cada placa Arduino Nano ESP32 pode variar um pouco, então a calibração é necessária para cada placa individualmente.
  • A calibração pode ser difícil, especialmente para iniciantes, e nem sempre produz os resultados exatos que você quer.

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

Vídeo

Tutoriais Relacionados

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