Tabla de contenido:

Lámpara de amanecer brillante controlable: 6 pasos
Lámpara de amanecer brillante controlable: 6 pasos

Video: Lámpara de amanecer brillante controlable: 6 pasos

Video: Lámpara de amanecer brillante controlable: 6 pasos
Video: Lámpara solar adaptable tipo poste 👀, ahora podrás ponerla donde sea e iluminar cualquier espacio 2024, Mes de julio
Anonim
Lámpara de amanecer brillante controlable
Lámpara de amanecer brillante controlable
Lámpara de amanecer brillante controlable
Lámpara de amanecer brillante controlable

¿Alguna vez se despertó a las 7:00 pm, la hora habitual a la que necesita levantarse para ir al trabajo, y se encontró en la oscuridad? El invierno es una época terrible, ¿verdad? Tienes que despertarte en medio de la noche (de lo contrario, ¿por qué está tan oscuro?), Arrancarte de la cama y enviar tu cuerpo semiconsciente a la ducha.

Este proyecto tiene como objetivo resolver uno de los problemas: la oscuridad de la mañana.

Hay muchas lámparas de amanecer baratas, pero todas son pálidas y de baja potencia. Se parecen más a una lámpara de noche, que se supone que te hará dormir mejor. No es lo que quiero en absoluto.

Al mismo tiempo, con solo encender la luz brillante se despertará inmediatamente, pero no con la suficiente suavidad. Lo que quiero es una combinación de ambos enfoques: encender con un brillo bajo, alcanzar lentamente la velocidad máxima, luego suena una alarma real y ya no tienes tanto sueño. Agreguemos un poco el canto de un pájaro, ¡y te despertarás en un cielo cada mañana!

Paso 1: Matriz de lámparas

Matriz de lámpara
Matriz de lámpara
Matriz de lámpara
Matriz de lámpara

En primer lugar, necesitamos la lámpara en sí. Tengo una habitación bastante grande con paredes y techo blancos, así que elegí 7 lámparas LED GU10, algo así como 6W cada una, ¡más de 40W de potencia pura! Eso es suficiente para hacerte sentir que ya es de día. También se puede utilizar como iluminación de habitación habitual durante el día.

Realmente no importa cómo lo monte, qué lámparas use con qué enchufes. Todo lo que importa, ¡deben ser lámparas regulables!

En mi caso, tengo una tabla de madera con 7 enchufes GU10 conectados, todos conectados entre sí. Lo pondré en una caja de plástico más tarde.

Paso 2: Teoría de atenuación

Teoría de atenuación
Teoría de atenuación

En teoría, no hay diferencia entre teoría y práctica. En la práctica lo hay.

Controlar un atenuador desde ESP32 / Arduino parecía no ser tan simple como imaginaba. Tengo uno de los módulos RobotDyn AC Light Dimmer. El fabricante sugiere una biblioteca para eso. No funciona en ESP32 (y es realmente difícil de adaptar, porque usa una gran cantidad de acceso de registro específico de ATMega de bajo nivel), funciona en Arduino Nano, dando un parpadeo terrible en el brillo medio-bajo. Por eso pasé un tiempo investigando cómo funciona todo y haciendo mi propio camino.

Un poco de teoría

El módulo de atenuación elegido utiliza un TRIAC muy popular: BTA16. Hay muchos artículos al respecto. Intentaré resumirlo aquí.

TRIAC es un módulo que puede transmitir un voltaje de entrada positivo o negativo a la salida, o puede bloquearlo. Por defecto bloquea todo. Para abrirlo, debemos darle una señal alta en la entrada de la puerta por 100 us. Luego permanecerá abierto hasta que la corriente caiga a cero, lo que sucede cuando un voltaje de entrada cambia el signo, cruzando un voltaje cero. Luego, en el siguiente ciclo, deberíamos hacer otro pulso de 100 us y así sucesivamente. Al elegir cuándo dar un pulso, controlamos el brillo: hazlo desde el principio, y estará cerca del 100% de transmisión de potencia. Hágalo más tarde y se atenuará. Mira el diagrama de arriba, explicándolo.

Para generar pulsos en el mismo punto del ciclo, necesitamos saber exactamente cuándo comienza. Es por eso que el módulo de atenuación tiene incorporado un detector de cruce por cero. Simplemente genera una señal (que captaremos como una interrupción de hardware en Arduino) cada vez que el voltaje cruza cero.

Paso 3: práctica de atenuación

Práctica de atenuación
Práctica de atenuación

Sí, así es como te despertarías, si tu lámpara no tiene atenuación y pone los 40 W de potencia en tus ojos adormilados.

Problemas comunes

Hay varios problemas que debemos abordar.

Parpadeando.

La sincronización del microcontrolador debe ser realmente precisa al encender y apagar la salida de la puerta. La biblioteca que sugiere RobotDyn, tiene una interrupción del temporizador cada 100us y cambia el nivel de la puerta solo en el temporizador. Significa que puede estar a +/- 50 microsegundos del valor óptimo. Da un buen resultado con un brillo alto, pero parpadea mucho con un brillo bajo. Además, si el microcontrolador hace muchas cosas, disminuye la precisión del tiempo, por lo que lo ideal es utilizar un microcontrolador dedicado para el atenuador.

Brillo mínimo Los LED tienen un convertidor de potencia incorporado, que simplemente se negará a funcionar si no tiene suficiente energía. Mis lámparas parecían funcionar bien a partir del 10-11%.

Incluso con este valor, algunas de mis lámparas se negaron a encenderse al arrancar. Incluso cuando aumentan el brillo más tarde, permanecen oscuros. Por eso, cuando pasamos del estado OFF a algún brillo positivo, comenzamos con un período de calentamiento de 5 ciclos, cuando damos plena potencia a las lámparas. Luego continuamos con el brillo deseado. Es casi imperceptible, pero realmente ayuda.

Frecuencia de red 50/60 Hz. Necesita saber cuánto esperar antes del próximo cero. Es bastante simple: solo observamos la diferencia de tiempo entre las dos últimas interrupciones.

Cambio gradual de brillo: ESP32 es bastante lento, se tarda 0,5 segundos en procesar una solicitud HTTP o incluso WebSocket trivial, así que no espere una transición de brillo suave, debe implementarse de alguna manera en el nivel de atenuación. Es por eso que, cuando recibe un nuevo brillo de un puerto serie, simplemente establece el objetivo y luego se acerca lentamente a él con el tiempo.

La solución

Aquí está mi código Arduino simple para el atenuador. Espera un comando (un byte con el nuevo brillo) de la entrada serial, maneja las interrupciones Zero-Cross, controla el TRIAC, manejando todos los problemas anteriores.

Paso 4: Controlador de lámpara (ESP32)

Controlador de lámpara (ESP32)
Controlador de lámpara (ESP32)
Controlador de lámpara (ESP32)
Controlador de lámpara (ESP32)

Aquí está el esquema de conexión de todos los componentes que tengo. La placa ESP32 es muy diferente de la que yo uso (Heltec), por lo que los pines elegidos se ven un poco extraños, pero aún así deberían funcionar bien. Siéntase libre de usar diferentes pines en su proyecto.

Aquí está el código que lo controla todo. Es bastante sencillo.

Las principales características

Controlable La lámpara se conecta a WiFi, inicia un servidor WebSocket en el puerto 81, espera comandos. El formato de comando es

Solo se admiten dos comandos por ahora: "set_brightness" y "update_settings", que son … bastante autodescriptivos.

Obteniendo tiempo de NTP No quiero complicar demasiado las cosas y agregar un reloj de tiempo real al esquema. Tenemos acceso a Internet, lo que significa que podemos obtener la hora real de algún servidor NTP y luego realizar un seguimiento de la hora actual utilizando los temporizadores del sistema.

Alarma de salida del sol. Puede configurar una alarma. Lo que realmente hace: comienza con el brillo mínimo y gradualmente va hasta el brillo completo durante 10 minutos. Luego permanece encendido durante un par de horas. Luego se apaga gradualmente durante 60 segundos.

Todos los parámetros anteriores son configurables.

Pájaros cantando DFPlayer mini se utiliza para reproducir música. Hay muchas guías para ello, pero esencialmente solo necesita conectar una tarjeta MicroSD, formateada en FAT32, con un archivo llamado 0001.mp3. Este archivo puede tener lo que quieras, en mi caso son 15 minutos de canto de pájaros (será en bucle), y hace que mi mañana sea increíble. Tenga en cuenta que hay un condensador enorme en la alimentación y resistencias de 1 kOhm en la línea serial entre ESP32 y DFplayer: son opcionales, pero ayudan a reducir el ruido.

Almacenamiento de la configuración en EEPROM Todas las configuraciones se escriben en EEPROM y se cargan al inicio. Permite utilizar la lámpara con al menos una función de alarma sin un controlador conectado.

Presentando algo de información en la pantalla OLED. Mi Heltec ESP32 tiene una pantalla SSD1306 128X64 I2C incorporada. Toda la información esencial se muestra en él. Lo sé, la caja se ve fea, acabo de imprimir en 3D algunas cosas y cortar los agujeros y las ventanas con un taladro. Rápido, sucio, ¡pero funciona!

Paso 5: Panel de control

Panel de control
Panel de control
Panel de control
Panel de control

Ese es el corazón del proyecto. Una Raspberry Pi con una pantalla original de 7 , con algunos front-end de Kivy.

Aquí está el código fuente completo.

Las características

Escrito en Python Me encanta Kivy, es un marco de Python para interfaces de usuario. Muy simple, pero flexible y eficiente (usa mucho código C en su interior para un alto rendimiento y aceleración de hardware).

Clima: muestra la temperatura y la presión actuales en el exterior. Si conecta un sensor remoto, también la temperatura interior, también solicita y analiza la previsión meteorológica para las siguientes 12 horas y avisa sobre la probabilidad de lluvia.

Controlador SunriseLamp. Otro panel muestra información básica sobre la alarma y le permite ajustar el brillo. Si va a la configuración, puede configurar cualquier parámetro de la lámpara, incluido el horario de la alarma, el volumen máximo de audio, etc.

Screensaver. Renders Game of Life en la pantalla después de un período de inactividad.

Solía haber más que eso, pero otras cosas parecían inútiles.

Instalación

Instalé todo manualmente en Raspbian y ahora puedo decir: no repitas mis errores. Usa el KivyPie, tiene todo preinstalado.

Aparte de eso, simplemente siga la guía de instalación en el repositorio de código.

Paso 6: ¡Disfruta

Personalmente, estoy contento con el dispositivo. Lo uso como iluminación principal en casa durante el día, y me permite despertarme por la mañana, es increíble.

Sé que las instrucciones no son muy detalladas ni descriptivas. Si alguien hace lo mismo y tiene problemas, ¡estaré encantado de ayudar!

Recomendado: