Índice:

Lâmpada brilhante controlável do nascer do sol: 6 etapas
Lâmpada brilhante controlável do nascer do sol: 6 etapas

Vídeo: Lâmpada brilhante controlável do nascer do sol: 6 etapas

Vídeo: Lâmpada brilhante controlável do nascer do sol: 6 etapas
Vídeo: Legendas em inglês [Battle Through The Heavens] Animação 3ª Temporada Coleção 2024, Julho
Anonim
Lâmpada brilhante controlável do nascer do sol
Lâmpada brilhante controlável do nascer do sol
Lâmpada brilhante controlável do nascer do sol
Lâmpada brilhante controlável do nascer do sol

Você já acordou às 7hs, o horário normal de que precisa para acordar para o trabalho, e se viu na escuridão? O inverno é uma época terrível, certo? Você tem que acordar no meio da noite (caso contrário, por que está tão escuro?), Arrancar-se da cama e mandar seu corpo semiconsciente para o chuveiro.

Este projeto visa resolver um dos problemas - escuridão matinal.

Há muitas lâmpadas baratas do nascer do sol por aí, mas todas têm baixa potência e são claras. Eles se parecem mais com um abajur, que supostamente faz você dormir melhor. Não é o que eu quero.

Ao mesmo tempo, basta ligar a luz forte para acordá-lo imediatamente, mas não com a suavidade suficiente. O que eu quero é uma combinação de ambas as abordagens - acender com um brilho baixo, lentamente atingir a velocidade máxima, então um alarme real dispara e você não fica mais com tanto sono. Vamos adicionar um pouco do canto de um pássaro a ele, e você acorda no céu todas as manhãs!

Etapa 1: Matriz de lâmpadas

Matriz de lâmpadas
Matriz de lâmpadas
Matriz de lâmpadas
Matriz de lâmpadas

Em primeiro lugar, precisamos da própria lâmpada. Eu tenho uma sala bem grande com paredes e teto brancos, então optei por 7 lâmpadas LED GU10, algo como 6W cada, mais de 40W de potência pura! Isso é o suficiente para fazer você sentir que já é dia. Também pode ser usado como uma iluminação ambiente normal durante o dia.

Realmente não importa como você o monta, quais lâmpadas você usa com quais soquetes. Tudo o que importa - essas lâmpadas devem ser reguláveis!

No meu caso, tenho uma prancha de madeira com 7 tomadas GU10 conectadas, todas conectadas entre si. Vou colocá-lo em uma caixa de plástico mais tarde.

Etapa 2: Teoria de escurecimento

Teoria de escurecimento
Teoria de escurecimento

Em teoria, não há diferença entre teoria e prática. Na prática, sim.

Controlar um dimmer de ESP32 / Arduino parecia não ser tão simples quanto eu imaginava. Eu tenho um dos módulos RobotDyn AC Light Dimmer. O fabricante sugere uma biblioteca para isso. Ele não funciona no ESP32 (e é realmente difícil de se adaptar, porque usa muito acesso de registro específico do ATMega de baixo nível), meio que funciona no Arduino Nano, dando uma tremulação terrível no brilho médio-baixo. É por isso que passei algum tempo investigando como tudo funciona e fazendo meu próprio caminho.

Um pouco de teoria

O módulo dimmer escolhido usa um TRIAC muito popular: BTA16. Existem muitos artigos sobre isso. Vou tentar resumir aqui.

TRIAC é um módulo que pode transmitir uma tensão positiva ou negativa de entrada para a saída ou pode bloqueá-la. Por padrão, ele bloqueia tudo. Para abri-lo, devemos dar-lhe um sinal alto na entrada do portão para 100 us. Então ele ficará aberto até que a corrente caia para zero, o que acontece quando uma tensão de entrada muda de sinal, cruzando uma tensão zero. Então, no ciclo seguinte, devemos fazer outro pulso de 100 us e assim por diante. Ao escolher quando dar um pulso, controlamos o brilho: faça logo no início, e será quase 100% de transmissão de potência. Faça isso mais tarde e ele ficará esmaecido. Confira o diagrama acima, explicando-o.

Para gerar pulsos no mesmo ponto do ciclo, precisamos saber exatamente quando ele começa. É por isso que o módulo dimmer tem um detector Zero-Cross embutido. Ele apenas levanta um sinal (que pegaremos como uma interrupção de hardware no Arduino) toda vez que a tensão passa de zero.

Etapa 3: prática de escurecimento

Prática de escurecimento
Prática de escurecimento

Sim, é assim que você acordaria, se sua lâmpada não diminuísse e colocasse todos os 40W de energia em seus olhos sonolentos.

Problemas comuns

Existem vários problemas que precisamos resolver.

Cintilando.

O tempo do microcontrolador deve ser realmente preciso para ligar e desligar a saída do gate. A biblioteca RobotDyn sugere, tem uma interrupção do temporizador a cada 100us e altera o nível do portão apenas no temporizador. Isso significa que pode estar +/- 50 microssegundos fora do valor ideal. Ele dá um bom resultado com brilho alto, mas treme muito com brilho baixo. Além disso, se o microcontrolador faz muitas coisas, diminui a precisão do tempo, portanto, o ideal é usar um microcontrolador dedicado para o dimmer.

Brilho mínimo. Os LEDs têm um conversor de energia embutido, que se recusará a funcionar sem energia suficiente. Minhas lâmpadas pareciam funcionar bem a partir de 10-11%.

Mesmo com esse valor, algumas das minhas lâmpadas recusaram-se a acender na inicialização. Mesmo ao aumentar o brilho posteriormente, eles permanecem escuros. É por isso que, quando passamos do estado OFF para algum brilho positivo, iniciamos com um período de aquecimento de 5 ciclos, quando damos potência total às lâmpadas. Em seguida, continuamos com o brilho desejado. É quase imperceptível, mas realmente ajuda.

Freqüência da rede elétrica de 50/60 Hz. Você precisa saber quanto esperar antes do próximo zero. É muito simples - apenas olhamos para a diferença de tempo entre as duas últimas interrupções.

Mudança gradual de brilho. ESP32 é muito lenta, leva 0,5 seg para processar um HTTP trivial ou até mesmo solicitação WebSocket, então não espere uma transição de brilho suave, ela precisa ser implementada de alguma forma no nível do dimmer. É por isso que, quando recebe um novo brilho de uma porta serial, ele apenas define o alvo e, em seguida, se aproxima lentamente com o tempo.

A solução

Aqui está meu código simples do Arduino para o dimmer. Ele espera por um comando (um byte com o novo brilho) da entrada serial, lida com interrupções Zero-Cross, controla o TRIAC, lidando com todos os problemas acima.

Etapa 4: controlador da lâmpada (ESP32)

Controlador de lâmpada (ESP32)
Controlador de lâmpada (ESP32)
Controlador de lâmpada (ESP32)
Controlador de lâmpada (ESP32)

Aqui está o esquema de conexão de todos os componentes que possuo. A placa ESP32 é muito diferente da que eu uso (Heltec), então os pinos escolhidos parecem um pouco estranhos, mas ainda deve funcionar bem. Sinta-se à vontade para usar diferentes pins em seu projeto.

Aqui está o código que controla tudo. É muito simples.

As características principais

Controlável. A lâmpada se conecta ao WiFi, inicia um servidor WebSocket na porta 81 e aguarda os comandos. O formato do comando é

Apenas dois comandos são suportados por enquanto: "set_brightness" e "update_settings", que são … bastante autodescritivos.

Obtendo o tempo do NTP. Não quero complicar demais as coisas e adicionar um relógio de tempo real ao esquema. Temos acesso à Internet, o que significa que podemos obter o tempo real de algum servidor NTP e, em seguida, controlar a hora atual usando os temporizadores do sistema.

Alarme do nascer do sol. Você pode definir um alarme. O que ele realmente faz: começa com o brilho mínimo e gradualmente vai para o brilho total ao longo de 10 minutos. Em seguida, ele permanece ligado por algumas horas. Em seguida, ele desliga gradualmente ao longo de 60 segundos.

Todos os parâmetros acima são configuráveis.

Pássaros cantando. O FPlayer mini é usado para reproduzir música. Existem muitos guias para isso, mas essencialmente você só precisa conectar um cartão MicroSD, formatado em FAT32, com um arquivo chamado 0001.mp3. Este arquivo pode ter o que você quiser, no meu caso são 15 minutos de pássaros cantando (ele será repetido), e isso torna minha manhã incrível. Observe que há um enorme capacitor ligado e resistores de 1 kOhm na linha serial entre ESP32 e DFplayer - são opcionais, mas ajudam a reduzir o ruído.

Armazenamento das configurações na EEPROM. Todas as configurações são gravadas na EEPROM e carregadas na inicialização. Torna possível usar a lâmpada com pelo menos um recurso de alarme sem um controlador conectado.

Renderizando algumas informações na tela OLED. Meu Heltec ESP32 tem uma tela SSD1306 128X64 I2C embutida. Todas as informações essenciais são reproduzidas nela. Eu sei, a caixa parece feia, acabei de imprimir algumas coisas em 3D e cortei os buracos e as janelas com uma furadeira. Rápido, sujo, mas funciona!

Etapa 5: Painel de Controle

Painel de controle
Painel de controle
Painel de controle
Painel de controle

Esse é o coração do projeto. Um Raspberry Pi com uma tela original de 7 , executando um front-end Kivy.

Aqui está o código-fonte completo.

As características

Escrito em Python. Eu amo Kivy, é uma estrutura Python para interfaces de usuário. Muito simples, mas flexível e eficiente (usa muito código C interno para alto desempenho e aceleração de hardware).

Clima. Mostra a temperatura e a pressão atuais do lado de fora. Se você conectar um sensor remoto - temperatura interna também. Solicita e analisa a previsão do tempo para as 12 horas seguintes e dá um conselho sobre a probabilidade de chuva.

Controlador SunriseLamp. Outro painel exibe algumas informações básicas sobre o alarme e permite que você ajuste o brilho. Se você for para as configurações, você pode configurar qualquer parâmetro da lâmpada, incluindo a programação de alarme, volume máximo de áudio e assim por diante.

Screensaver. Renders Game of Life na tela após algum período de inatividade.

Costumava haver mais do que isso, mas outras coisas pareciam ser inúteis.

Instalação

Instalei tudo manualmente no Raspbian, e agora posso dizer: não repita meus erros. Use o KivyPie, tem tudo pré-instalado.

Além disso, basta seguir o guia de instalação no repositório de código.

Etapa 6: Divirta-se

Pessoalmente, estou feliz com o dispositivo. Eu uso como iluminação principal em casa durante o dia, e me permite acordar de manhã, é incrível.

Eu sei que as instruções não são muito granulares e descritivas. Se alguém fizer a mesma coisa e tiver problemas, terei todo o gosto em ajudar!

Recomendado: