Arduino Nano ESP32 - Sensor de luz

Este tutorial proporciona instrucciones sobre cómo usar Arduino Nano ESP32 con el sensor de luz. En detalle, aprenderemos:

Hardware Requerido

1×Arduino Nano ESP32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Sensor de Luz
1×10 kΩ Resistor
1×Protoboard
1×Cables Puente
1×(Opcional) Conector de Alimentación DC
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

El sensor de luz LDR es muy asequible, pero requiere una resistencia para el cableado, lo que puede hacer que la instalación sea más compleja. Para simplificar el cableado, puedes usar un módulo de sensor de luz LDR como alternativa.

Acerca del Sensor de Luz

El sensor de luz más utilizado es una fotorresistencia (también conocida como fotocelda, o resistencia dependiente de la luz, LDR).

Puede usarse para detectar la presencia de la luz. También se puede usar para medir el nivel de iluminancia de la luz.

Pinout del sensor de luz

Un sensor de luz tiene dos pines. Al igual que una resistencia normal, NO necesitamos distinguir estos pines.

Pinout del sensor de luz

Cómo funciona el sensor de luz

La resistencia de la fotorresistencia es inversamente proporcional a la intensidad de la luz. Cuánta menos luz incide sobre la fotorresistencia, mayor es su resistencia. Por lo tanto, podemos inferir cuán brillante es la luz ambiental midiendo la resistencia de la fotorresistencia.

Cómo funciona un sensor de luz

WARNING

El valor medido por la fotorresistencia refleja la tendencia aproximada de la intensidad de la luz; no representa exactamente el flujo luminoso. Por lo tanto, la fotorresistencia no debe utilizarse en una aplicación que requiera alta precisión. La calibración también es necesaria para algún tipo de aplicación.

Arduino Nano ESP32 - Sensor de Luz

El pin de entrada analógica del ESP32 convierte el voltaje (entre 0 V y ADC_VREF, por defecto 3,3 V) en valores enteros (entre 0 y 4095), llamados valor analógico o valor ADC. Al conectar un pin de entrada analógica del Arduino Nano ESP32 a la fotorresistencia, podemos leer el valor analógico utilizando la función analogRead().

Diagrama de cableado entre el sensor de luz y Arduino Nano ESP32

Diagrama de cableado del sensor de luz para Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código para Arduino Nano ESP32

El código de Arduino Nano ESP32 a continuación lee el valor de un sensor de luz e infiere el nivel de iluminación.

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.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); }

Pasos R\u00e1pidos

  • Si es la primera vez que usas Arduino Nano ESP32, consulta cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
  • Copia el código anterior y pégalo en el IDE de Arduino.
  • Compila y carga el código en la placa Arduino Nano ESP32 haciendo clic en el botón Subir en el IDE de Arduino
  • Abre el Monitor Serial en el IDE de Arduino
Cómo abrir el monitor serial en el IDE de Arduino
  • Emite luz al sensor
  • Consulta el resultado en el Monitor Serial. Se muestra lo siguiente:
COM6
Send
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
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Sensor de Luz y LED

Diagrama de cableado

Diagrama de cableado del sensor de luz y LED para Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código de Arduino Nano ESP32

El código de abajo enciende el LED si está oscuro; de lo contrario, apaga el LED.

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.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 utiliza la función analogRead() para leer valores de un ADC (Convertidor Analógico-Digital) conectado a un sensor o componente. El ADC del Arduino Nano ESP32 es adecuado para proyectos que no requieren alta precisión. Sin embargo, para proyectos que necesiten mediciones precisas, tenga en cuenta lo siguiente:

  • El ADC del Arduino Nano ESP32 no es perfectamente preciso y podría necesitar calibración para obtener resultados correctos. Cada placa Arduino Nano ESP32 puede variar ligeramente, por lo que la calibración es necesaria para cada placa individual.
  • La calibración puede ser un desafío, especialmente para principiantes, y podría no siempre arrojar exactamente los resultados que desea.

Para proyectos que requieren alta precisión, considere usar un ADC externo (p. ej. ADS1115) con el Arduino Nano ESP32 o usar otro Arduino, como el Arduino Uno R4 WiFi, que tiene un ADC más fiable. Si aún desea calibrar el ADC del Arduino Nano ESP32, consulte el ESP32 ADC Calibration Driver.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Tutoriales Relacionados

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!