Tabla de contenido:

Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor: 4 pasos
Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor: 4 pasos

Video: Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor: 4 pasos

Video: Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor: 4 pasos
Video: Arduino Powerd RGB + White LED, Bluetooth controllable, Floor lamp 2024, Noviembre
Anonim
Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor
Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor
Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor
Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor
Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor
Lámpara LED inalámbrica Arduino Light-Matching con fotorresistor

Este instructivo detalla los pasos necesarios para construir una lámpara LED de detección de luz inalámbrica rudimentaria usando Arduino Unos y un fotorresistor. Una posible aplicación para este dispositivo sería iluminar una habitación que no tiene ventanas con luz solar artificial, coincidiendo con las condiciones reales de iluminación exterior en tiempo real. ¡Empecemos!

Lista de suministros:

Arduino Uno x2

NRF24L01 Transceptor inalámbrico x2 (Opcional - Mochila NRF24L01 x2)

Transistor darlington TIP120

Fotorresistencia

LED de 5 mm x3

Presionar el botón

Resistencia de 100 ohmios x3

Resistencia de 10 k ohmios x3

Varios cables de puente

Paso 1: Cableado de los módulos y el circuito NRF24L01

Cableado de los módulos y el circuito NRF24L01
Cableado de los módulos y el circuito NRF24L01
Cableado de los módulos y el circuito NRF24L01
Cableado de los módulos y el circuito NRF24L01
Cableado de los módulos y el circuito NRF24L01
Cableado de los módulos y el circuito NRF24L01

En este proyecto, un Arduino actuará como transmisor, enviando datos de nivel de luz desde el fotorresistor cuando se presiona el botón. El otro Arduino servirá como receptor, tomando esos datos y transformándolos en la señal a los LED. La primera imagen muestra el diagrama del transmisor y la segunda muestra el receptor.

Nota: en las fotos de mi proyecto, notarás que los transceptores NRF24L01 están conectados a otra PCB. Este es un módulo de mochila para los transceptores, que actúa como regulador de potencia. Además de facilitar el cableado, estas mochilas regulan la entrada de energía para el NRF24L01, permitiendo el uso de una fuente de alimentación de 5V. He omitido estas mochilas en mi diagrama en aras de la claridad.

(Si decide usar las mochilas, consulte este enlace para ver un diagrama de las ubicaciones de los pines en referencia al stock NRF24L01).

A continuación se adjunta una copia en PDF del circuito, para facilitar el zoom y la visualización detallada.

Paso 2: codificación del transmisor

El último paso es la codificación. Deberá instalar la biblioteca RadioHead o una biblioteca equivalente para usar con los módulos NRF24L01.

Para este proyecto, el transmisor y el receptor Arduino usan un código diferente en cada uno. Aquí está el código del transmisor:

También he adjuntado el archivo.ino (NRF_Send) para mayor comodidad.

#incluir

#incluir

RH_NRF24 nrf24; // Inicializando un transceptor como nrf24

botón int = 5; // Configuración de los valores de los pines para el botón y la fotorresistencia

int pResistor = A0; valor int = 0; // Valor de la luz de 0-1023

configuración vacía ()

{Serial.begin (9600); pinMode (botón, ENTRADA); pinMode (pResistor, ENTRADA); if (! nrf24.init ()) // Alerta al usuario si falla la inicialización del módulo Serial.println ("init falló"); // Los valores predeterminados después de init son 2.402 GHz (canal 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF falló"); }

bucle vacío ()

{if (digitalRead (button)) {// Enviar un mensaje si se presiona el botón value = analogRead (pResistor); // Leer el valor del fotorresistor (0-1023) uint8_t data = {value}; // Establece una matriz llamada "data " que contiene el valor de luz nrf24.send (data, sizeof (data)); // Envía la matriz al receptor nrf24.waitPacketSent (); // Espere hasta que el paquete haya sido enviado Serial.println ("Light Value:" + String (value)); // Imprime el valor de la luz en el monitor de serie}}

Paso 3: codificación del receptor

Para el receptor, el código también usa la biblioteca RadioHead.

#incluir

#incluir

RH_NRF24 nrf24;

int LEDPin = 3;

valor int = 0; // Valor de la luz de 0-1023

configuración vacía ()

{Serial.begin (9600); pinMode (LEDPin, SALIDA); if (! nrf24.init ()) Serial.println ("error de inicio"); // Los valores predeterminados después de init son 2.402 GHz (canal 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF falló"); }

bucle vacío ()

{// Espere un mensaje uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Almacena el mensaje recibido como una matriz llamada "buf " uint8_t len = sizeof (buf); // Almacena el tamaño de buf como "len" while (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Recibe el mensaje durante 200 milisegundos o hasta que se recibe el mensaje completo {value = buf [0]; // Establece el valor en el primer índice de buf , que es el int del fotorresistor analogWrite (LEDPin, map (value, 0, 1023, 0, 255)); // Establece el pin PWM para generar un valor escalado entre 0-255 para el brillo del LED Serial.println (String (value)); } analogWrite (LEDPin, 0); }

Paso 4: ¡HECHO

¡Disfruta jugando con diferentes niveles de luz y observa cómo los LED los combinan! El fotorresistor a veces puede ser delicado y funciona mejor en una habitación oscura con una fuente de luz localizada (pero también puede funcionar al aire libre con el sol).

Recomendado: