Controlador de exaustão WiFi

imagem
Quase dois anos se passaram desde a fabricação do controlador de controle de umidade para o banheiro . Todo esse tempo, o controlador serviu fielmente sem falhas e congelamentos, como convém a um bom dispositivo, e até recebeu uma caixa artesanal glamorosa com a mão leve de minha esposa.

imagem

Mas o progresso tecnológico inexoravelmente avança e novas tendências novamente me assombram. Há muito nutri a idéia de implementar o conceito de uma casa inteligente nos módulos WiFi ESP8266. Ele experimentou esses módulos por algum tempo e agora decidiu transferir sua "casa inteligente" para eles.

O principal objetivo do projeto foi a implementação de novos recursos que usarei em outros dispositivos no futuro.
Então, o que a atualização do controlador do ventilador no ESP8266 me dará?

Novos recursos


  • Veja todos os indicadores no WiFi de um computador / tablet / telefone.
  • Processamento de parâmetros adicionais - tempo de operação do ventilador e tempo de queima da lâmpada no banheiro.
  • Controle de ventilador WiFi do computador / tablet / telefone.
  • Configurando o controlador via WiFi, salvando valores na memória não volátil.
  • Registrando periodicamente os valores de todos os indicadores em um servidor na Internet.
  • Bem, como ainda existe a Internet, a hora é exibida com sincronização pelo protocolo NTP.

Todas essas funções permitem analisar a operação do controlador e, no futuro, otimizar os parâmetros do algoritmo de controle. Bem, este controlador entrará no sistema geral de uma casa inteligente com o monitoramento dos parâmetros ambientais do banheiro.
imagem
O esquema não mudou muito em relação à versão anterior:
  • Atmega328 substituído por ESP8266
  • O indicador de sete segmentos substituiu o módulo de exibição final pelo TN1637
  • Um triac com um acoplador óptico é substituído por um relé de estado sólido (o mesmo, mas no caso).

Todas as principais diferenças no programa do controlador.

Lista de componentes


  • ESP8266 módulo ESP07 com placa adaptadora ~ $ 2.3
  • Visor de quatro segmentos de quatro dígitos no chip TM1637 com conexão I2C ~ $ 1
  • Relé de Estado Sólido OMRON G3MB-202P ~ $ 1
  • Fonte de alimentação 220V / 3.3V 600mA ~ $ 2.2
  • Sensor de temperatura e umidade (baixa precisão, mas suficiente para minhas tarefas) DHT11 ~ $ 0.7
  • Caixa de plástico para instrumentos 110x73x34 ~ $ 1
  • Fotoresistor, apenas resistores, tábua de pão e fios

Total de cerca de US $ 9
Todas as peças, exceto o estojo e a fonte de alimentação, foram compradas no aliexpress.com. Encomende gabinetes e fontes de alimentação a preços razoáveis ​​em taobao.com
imagem

Montagem do controlador


Este controlador é um protótipo para futuros dispositivos no ESP8266, portanto a instalação foi feita em uma placa de ensaio.
imagem
Faço um filtro de luz sob o indicador em uma pasta para papéis, comprada em uma papelaria. Uma janela transparente para o fotorresistor - um filme protetor que sobrou de um telefone (eu pedi uma vez com margem, agora está por aí).
imagem
E este é meu antigo controlador que trabalhou no banheiro por dois anos.
imagem
Ao depurar, um defeito tecnológico foi detectado - o fotodiodo atrás da janela recebeu pouca luz e sem um amplificador, não funcionou quando a lâmpada foi acesa no banheiro, tive que trazê-la para a lâmpada.
imagem
imagem

Agora, vou falar sobre os recursos do programa, algoritmos de controle e configurações deste controlador.

O ESP8266, diferentemente do Atmega328, no qual a versão anterior foi implementada, possui muito mais memória (RAM, ROM. EEPROM), que, juntamente com o Wi-Fi embutido, permite implementar as funções do servidor WEB embutido sem economizar memória para cadeias de texto.

Porém, com o GPIO, o ESP8266 é muito ruim; portanto, um luxo como gerenciar um indicador de sete segmentos não é diretamente acessível a ele. Portanto, o indicador no chip TM1637 foi selecionado, o que requer apenas duas saídas para conexão.

Ambiente de desenvolvimento


Eu já joguei o suficiente com vários firmwares ESP8266 que me permitem escrever programas nos intérpretes incorporados LUA, JC e geralmente programar através da WEB. Eu tentei escrever em um SDK. Ele optou por uma opção de compromisso - programação no IDE do Arduino.
Uma instalação, programação e um número bastante simples de bibliotecas prontas, que, na maioria das vezes, funcionam no ESP. Esse ambiente permitiu o uso de muitos códigos antigos que fornecem a lógica básica para a operação do controlador de controle do ventilador, que foi preservada da versão anterior.

Basicamente, foi interessante transferir o algoritmo comprovado que implementa a máquina de estados determinísticos finitos descrita na tabela de transição de estados: as
imagem
bibliotecas do Arduino surgiram sem problemasDHT para trabalhar com sensores de umidade / temperatura da Adafruit e para trabalhar com o indicador no TM1637 DigitalTube .

Os detalhes do uso do IDE do Arduino para programar o ESP8266 estão bem descritos neste artigo.

Implementando novos recursos


É muito inconveniente fazer controladores WiFi nos quais os parâmetros de conexão de rede são costurados. Imagine em que resultado a alteração do nome ou senha do ponto de acesso resultará se houver uma dúzia desses controladores em casa?

Portanto, este programa implementa as funções de armazenar parâmetros de conexão na memória EEPROM não volátil e configurá-los pela rede. A estrutura para salvar os parâmetros, além de lê-los e gravá-los, é implementada nos arquivos WC_EEPROM.he WC_EEPROM.cpp do meu projeto. A verificação da leitura e gravação é realizada calculando a soma de verificação da configuração e comparando-a com a escrita na EEPROM.

Além da configuração de rede, todos os tempos limites e outros parâmetros do algoritmo de controle do ventilador também são salvos na memória, o que permite otimizar e configurar este controlador diretamente "over the air".

A exibição dos modos operacionais, a configuração dos controladores e o controle direto do ventilador são implementados usando o servidor WEB interno (arquivos WC_HTTP.he WC_ WCTTP.cpp)

O algoritmo de configuração do ponto de acesso é o seguinte:

Se o gabinete ESP não conseguir se conectar ao ponto de acesso especificado na configuração da EEPROM , aumentará seu ponto de acesso e, no endereço 192.168.4.1, permitirá que você configure.
Bem, se conectado, funciona como de costume.
A página principal do servidor WEB mostra os parâmetros básicos do controlador e permite ligar / desligar manualmente o controlador (análogo ao pressionar o botão de controle manual).
imagem
Aqui também é possível acessar a
imagem
página de configurações de rede e a página de configurações do algoritmo de operação do controlador.
imagem
Nestas duas páginas, você pode reiniciar o controlador e redefinir todas as configurações "padrão".

Estou planejando trazer beleza para a interface no futuro, quando o conceito de uma casa inteligente em WiFi estiver mais ou menos estabelecido na minha cabeça.

Outra função implementada neste programa é um relógio em tempo real sincronizado através do protocolo NTP na Internet. (Arquivos WC_NTP.h e WC_NTP.cpp)

Não descreverei o algoritmo principal, a lógica do trabalho funcionou bem e permanece a mesma, você pode ler sobre isso no artigo anterior. Grandes mudanças afetaram a exibição. Quero chamar a atenção para um "recurso" - a função DisplaySpecialChar (), que permite exibir qualquer caractere que você possa imaginar para exibir em um indicador de sete segmentos usando uma máscara de bit. Eu vim com esse símbolo de "porcentagem" na exibição de umidade
imagem
e o símbolo de "grau" na exibição de temperatura.Os
imagem
bits na máscara de bits correspondem aos segmentos do indicador.

Bem, o último dos novos recursos é salvar parâmetros em um servidor na Internet para exibição e análise subseqüente. Os valores de umidade, temperatura, uma porta analógica com um fotorresistor para ajustar o limiar da iluminação, o tempo do ventilador, o tempo de queima da luz e o tempo ATUAL do controlador desde a última reinicialização são salvos.

A gravação no servidor ocorre em dois modos. Os parâmetros são registrados com maior frequência, quando “algo acontece” no banheiro, neste momento ou a luz está acesa ou o ventilador está funcionando. Todos os tempos limites são configurados através da interface WEB.

Os dados são armazenados no meu servidor na Internet. O endereço do servidor pode ser configurado, mas o formato de gravação ainda é costurado no programa. Mais uma vez, até melhores tempos ustanivaniya conceito))). Agora os parâmetros são salvos pelo script PHP mais simples em uma tabela com uma estrutura simples.
imagem
É muito simples reconfigurar as configurações de salvamento para o mesmo "monitoramento público". Pessoalmente, este servidor não me agrada com restrições na frequência do armazenamento de dados e na profundidade do arquivo morto.

Otimize as configurações do controlador


Após a "operação de teste", você pode determinar se os limites de iluminação e umidade estão definidos corretamente, bem como o tempo limite de vários eventos. Na implementação anterior, configurei o tempo de resposta para 20 minutos, sentado no banheiro com um cronômetro. Depois de observar o gráfico dos parâmetros durante vários banhos, vi o seguinte:
imagem
  • A umidade no inverno varia de 35 a 40%
  • Tempo de normalização da umidade com ventilação natural 20-25 minutos
  • Tempo de normalização da umidade com um ventilador em funcionamento 10-12 min
  • O ventilador dobra a eficiência da ventilação

Com base nisso, você pode reduzir com segurança o tempo de operação do ventilador para 12 minutos, prolongando sua vida útil e economizando um pouco de energia. Uma análise semelhante pode ser feita para outras estações, quando a umidade do apartamento é completamente diferente.

Agora, após a análise, você pode aumentar o período de gravação de parâmetros no servidor.

Conclusões



  • O controlador no ESP8266 é estável, executa suas funções.
  • Sua funcionalidade foi expandida, agora é fácil de gerenciar e se integra normalmente ao sistema Smart Home
  • É necessário melhorar algumas coisas, por exemplo, a interface WEB, a autorização de acesso, a parte do servidor e algumas imprecisões no cálculo do ventilador e do horário de funcionamento leve. Outros desejos de melhoria podem ser revelados.
  • O projeto piloto do Smart Home em WiFi pode ser considerado bem-sucedido;)

O esboço pode ser baixado aqui. Ficaria muito grato se você relatar algum erro.

Esboço do controlador do ventilador no WiFi O

tempo gasto no projeto é de dois dias de folga.

PS Eu respondo imediatamente à pergunta, por que é tão difícil? Posso sentar em paralelo com o interruptor ou no temporizador?
Sim você pode. Mas a inclusão de temporizador e luz não me agradou. Além disso, é um hobby, a implementação de algumas idéias que são usadas em outros projetos.

As instalações de armazenamento estavam com erros novamente, então as fotos do meu blog . Lá você pode ver meus desenvolvimentos em casa inteligente

Source: https://habr.com/ru/post/pt389751/


All Articles