ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

Principais pontos ou sobre o que é este artigo

Continuamos o ciclo de artigos sobre ShIoTiny — controlador programável visual baseado em chip ESP8266.

Neste artigo, é apresentado um exemplo de projeto de controle de ventilação em um banheiro ou em outro ambiente com alta umidade, mostrando como é construída a programação para ShIoTiny.

Artigos anteriores da série.

ShIoTiny: automação simples, Internet das Coisas ou 'seis meses antes das férias'
ShIoTiny: nós, conexões e eventos ou características do desenho de programas

Links

Firmware binário, diagrama do controlador e documentação
Instruções e descrição dos módulos
Configuração do broker MQTT cloudmqtt.com
Painel de controle MQTT dashboard para Android

Introdução

Não há entendimento sem experiência. Esta é uma verdade comprovada pelo tempo e pelas gerações. Portanto, não há nada melhor para aprender habilidades práticas do que tentar fazer algo por conta própria. Exemplos que mostram o que pode ser feito e o que deve ser evitado são extremamente úteis. Os erros dos outros, é claro, não podem prevenir os seus próprios erros, mas podem ajudar a reduzir o número destes últimos.

As perguntas e cartas dos leitores de artigos anteriores me motivaram a criar um pequeno projeto exemplo de controle de ventilação, a fim de mostrar como os módulos ShIoTiny funcionam.

A ideia original, na qual o controlador se baseou ShIoTiny — estação de bombeamento e irrigação — pode não ser interessante ou adequada para todos. Por isso, escolhi uma conhecida e útil para muitos, o sistema de controle de ventilação, como exemplo.

Posso dizer que a ideia do projeto não é minha, mas eu a tirei daqui e depois a adaptei para ShIoTiny.

Primeiro, entenda o que você quer

O processo de aperfeiçoamento é infinito. E é essa característica que arruinou muitas boas ideias e projetos. O desenvolvedor, em vez de lançar algo que, embora não ideal, fosse funcional, continuava a aperfeiçoá-lo. E o aperfeiçoou até que os concorrentes o superassem, lançando uma solução, mesmo que não ideal (e muitas vezes claramente grotesca), mas funcional.

Portanto, é muito importante saber onde colocar um ponto final no projeto. Ou, em outras palavras, precisamos definir o que queremos obter ao final do projeto com base no que temos no início. Em russo, existe uma palavra curta e concisa, "plano", que se refere ao documento que é elaborado para descrever o caminho para a criação de algo, a qual tradutores mentalmente deficientes e gerentes incompetentes, ultimamente, resolveram chamar de "roteiro". Enfim, que Deus os abençoe.

O nosso plano será o seguinte. Suponhamos que exista um espaço onde a umidade pode aumentar bastante em determinados momentos. Por exemplo, como um banheiro ou uma cozinha. A umidade é algo desagradável e a forma de combatê-la é tão antiga quanto o mundo: ventilar o ambiente. Existem muitas maneiras de ventilar. Mas vamos deixar de lado métodos exóticos e antiquados, como escravos com leques, e nos concentrar em um ventilador comum. Ventiladores são mais baratos e mais fáceis de encontrar por aqui.

Em resumo, queremos controlar o ventilador: ligá-lo e, consequentemente, desligá-lo. Na verdade, queremos que ele se ligue e desligue automaticamente quando necessário.

Falta definir: em quais condições o ventilador deve ser ligado e em quais ele deve ser desligado.

Aqui tudo é claro: se a umidade estiver acima de um certo limite definido, o ventilador liga e puxa o ar; se a umidade voltar ao normal, o ventilador desliga.

O leitor atento imediatamente notará a palavra 'definido'. Por quem definido? Como definido?

O limite de umidade pode ser estabelecido de várias maneiras. Vamos considerar duas delas: a primeira — usando um potenciômetro e a segunda — na rede através do protocolo MQTT. Cada um desses métodos tem suas vantagens e desvantagens, que serão discutidas mais adiante.

Para aqueles que não entenderam, explico que 'umidade limite' é o nível de umidade, ao ultrapassar o qual é necessária a ativação do ventilador.

A próxima pergunta é: devemos dar ao usuário a opção de ligar o ventilador diretamente? Ou seja, independentemente do nível de umidade, ao pressionar um botão? Esta possibilidade será prevista. Afinal, o ventilador pode ser necessário não apenas em caso de alta umidade, mas também para remover do ambiente, por exemplo, odores desagradáveis, popularmente conhecidos como 'fedor'.

Portanto, entendemos o que queremos e até um pouco sobre como isso funcionará. Vamos listar brevemente todas as funções do nosso sistema de controle de ventilação:

  • definição do nível de umidade limite (duas opções);
  • medição do nível de umidade;
  • ativação automática do ventilador;
  • desativação automática do ventilador;
  • ativação manual do ventilador (ao pressionar o botão).

Portanto, o plano está claro. Precisamos implementar todas as funções listadas acima em nosso programa. Com base neste "plano", procederemos. Para começar, vamos desenhar o esquema estrutural do dispositivo.

Esquema estrutural do dispositivo

De fato, teremos dois desses esquemas. O primeiro é para a variante em que o nível de umidade de limite é definido por um resistor variável. O segundo esquema é para a variante em que o nível de umidade de limite é definido pela rede através do protocolo MQTT.

Mas como esses esquemas diferem apenas por um elemento — o resistor variável "ajuste do nível de umidade de limite", vamos desenhar apenas um esquema estrutural. Claro, o esquema estrutural segundo a norma GOST é diferente. Mas nós não estamos nos orientando para engenheiros veteranos, e sim para a nova geração. Portanto, a clareza é mais importante.

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

Então, o que vemos na figura? O ventilador está conectado ao relé Relay1 do controlador. ShIoTinyEu ressalto que o ventilador é um dispositivo que opera em alta tensão. Portanto, se alguém estiver fazendo isso sozinho — tenha cuidado. Ou seja, pelo menos, antes de colocar suas mãos ou dispositivos de medição no circuito — desconecte, no mínimo, o ventilador. E uma segunda observação. Se seu ventilador tiver uma potência maior que 250W, não deve conectá-lo diretamente a ShIoTiny , apenas através de um contator.

A questão do ventilador está clara. Agora, o botão "ligar manualmente" o ventilador. Ele está conectado à entrada Input1. Aqui não há mais nada a explicar.

Sensor de temperatura e umidade DHT-11 (ou DHT-22 ou seus equivalentes). Para sua conexão, há uma entrada especial no controlador. ShIoTinyComo pode ser visto na figura — conectar esse tipo de sensor também não apresenta problemas.

E, finalmente, o resistor variável que define o nível de umidade de limite. Especificamente — um divisor, composto por resistores variável e fixo. Não há problemas com a sua conexão, mas eu explico que o ADC integrado no ESP8266 é projetado para um máximo de 1 volt. Portanto, um divisor de tensão de aproximadamente 5 vezes é necessário.

E mais uma vez, lembro que esse divisor não é necessário se o nível de umidade de limite é definido pela rede utilizando o protocolo MQTT.

Vamos começar a elaborar o algoritmo de funcionamento do dispositivo no editor ElDraw ShIoTiny. Como acessá-lo pode ser lido em artigos anteriores ou no guia, cujo link está no início do artigo.

Primeira opção, a mais simples

Começaremos pelo simples: ativação do relé Relay1 quando o nível de umidade atinge o limiar por um tempo determinado.

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

Como podemos ver, nada complicado: apenas quatro nós, sem contar os nós de comentários. DHT11 — este é, de fato, o sensor de temperatura e umidade (pode ser trocado por DHT22).

Constante CONST — o nível de umidade limiar, em porcentagem.

O comparador — é um nó que compara dois números e exibe 1 na saída se a condição for atendida e 0 se não for.

No nosso caso, essa condição será A>B, onde A — nível de umidade medido pelo sensor, e B — o nível de umidade limiar.

Assim que o nível de umidade medido (A) ultrapassar o nível de umidade limiar (B), um 1 aparecerá na saída do comparador e o relé será acionado. E, inversamente, assim que o nível de umidade retornar ao normal (ou seja, A>B A<=B ), um 0 surgirá e o relé será desligado.), um 1 aparecerá na saída do comparador e o relé será acionado. E, inversamente, assim que o nível de umidade retornar ao normal (ou seja, A>B Tudo claro? Para quem não entendeu muito bem — leia novamente ou consulte a descrição do funcionamento dos nós no guia.

Vale ressaltar que os dados do sensor

são atualizados aproximadamente uma vez a cada 10 segundos. Portanto, o relé não poderá ligar e desligar mais do que uma vez a cada 10 segundos. DHT11 Isso não seria um problema, mas gostaríamos de definir o nível de umidade limiar usando um potenciômetro. Não poderia ser mais simples!

Basta substituir o nó constante por um nó ADC. Afinal, foi ao ADC que conectamos o divisor de tensão com o potenciômetro.

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

A tensão na entrada do ADC varia de 0 a 1 Volt. Já a umidade na saída do sensor varia de 0 a 100%. Como os comparamos? É muito simples. O nó ADC não apenas mede a tensão na entrada, mas também é capaz de

escalonar e deslocar ShIoTiny Ou seja, na saída do nó ADC1 (ADC) haverá um valor , calculado pela fórmula.

— tensão na entrada do ADC (de 0 a 1V); X— faixa do ADC e

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

, onde ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto) -deslocamento do ADC. Assim, se definirmos k k=100 bb=0 , então ao variar e na faixa de 0 a 1, o valorna saída do nó ADC variará de 0 a 100. Ou seja, numericamente igual à faixa de variação da umidade de 0 a 100%. ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto) de 0 a 1, valor X na saída do nó ADC variará de 0 a 100. Ou seja, numericamente igual ao intervalo de variação da umidade de 0 a 100%.

Ou, de forma simples, girando o motor de resistência variável, você pode definir o nível de umidade de 0 a 100. A única desvantagem é que não há nenhum dispositivo de exibição. Mas, na prática, se você dividir o motor de resistência variável em 6 segmentos 0%, 20%, 40%, 60%, 80%, 100%) — isso é suficiente para ajustar o nível de umidade.

Como devemos definir os coeficientes k k=100 b-deslocamento (offset ADC)? É mais fácil do que parece! Clique com o mouse no nó ADC1 e imediatamente aparecerá uma janela de configuração. Nela, você pode ajustar tudo o que precisa. Para o nosso caso, será uma janela como a da imagem.

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

Então, temos uma solução de trabalho simples. Vamos aprimorá-la.
Por sinal, a solução mais simples tem uma vantagem — ela não precisa de internet. É completamente autônoma.

A segunda opção, conectamos um botão

Tudo funciona e todos estão felizes. Mas temos um problema, não podemos ligar a ventilação manualmente. Já havíamos combinado que à entrada Input1 teremos um botão que ligará e desligará o ventilador manualmente, sem se preocupar com o sensor de umidade.
Chegou a hora de processar este botão em nosso esquema-programa.

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

O bloco de processamento do botão pressionado está destacado com uma linha laranja. Ele funciona como um contador de pressionamentos do botão, que é reiniciado para zero quando o valor em sua saída excede um (linha verde, saída do nó CT).

Funciona aqui da mesma maneira simples que antes: o contador CT conta as pressões do botão conectado à entrada Input1. Ou seja, o valor na saída deste contador aumenta em 1 a cada pressão do botão.

Assim que esse valor se tornar igual a dois (ou seja, maior que 1), imediatamente haverá 1 na saída do comparador A>B . E esse 1 zerará o contador CT a zero. Refere-se ao comparador, o inferior no esquema!

Assim, nosso botão tem dois estados — 0 e 1. Se precisássemos de mais estados (3, 4 ou mais) — seria suficiente mudar a constante CONST de um para outro valor.

Portanto, temos duas condições para ligar o ventilador: o nível de umidade exceder o definido e um único pressionar do botão. Quando qualquer uma das condições é atendida, o ventilador ligará. E funcionará até que o botão seja pressionado novamente eu posso usar ou até que o nível de umidade normalize.

É claro que podemos complicar ainda mais o algoritmo, mas não faremos isso — deixaremos espaço para a criatividade dos interessados.

Opção três, conecte-se à internet.

Tudo o que descrevemos é perfeitamente funcional. E quanto aos 'pontos'? Qualquer hipster-hacker-cracker espinhento vai rir daquele que gira uma manivela e aperta um botão, em vez de controlar via smartphone! Girar uma manivela é 'fora de moda'. Mas deslizar o dedo pelo smartphone até sangrar — isso é o auge do desejo do hipster-hacker-cracker (nunca consegui distinguir todos eles — então, se errei, desculpe).

Mas vamos ser indulgentes com essas pessoas indicadas. A gestão através da internet tem suas vantagens reais. Em primeiro lugar, há a visualização. Há uma infinidade de aplicativos para todas as plataformas que permitem, com alguns toques, criar um painel de controle bastante utilizável para nosso controlador-carlson. Em segundo lugar, é a possibilidade de monitorar remotamente o estado da umidade no ambiente. E, em terceiro lugar, é possível ver não apenas se o ventilador está girando ou não, mas também qual é o nível de umidade limite definido. E se o ventilador ligou automaticamente ou manualmente. No geral, tudo o que você desejar.

Claro, para um ventilador é um exagero — tanto apreço. Mas isso é apenas um exemplo.

Portanto, para a conexão à internet, usaremos a tecnologia MQTT e o protocolo homônimo.
Para utilizar essa tecnologia, precisamos de um broker MQTT. Este é um servidor especial que atende os clientes MQTT, por exemplo ShIoTIny e seu smartphone.

O cerne da tecnologia MQTT é que qualquer um dos clientes publica no broker MQTT (servidor) dados arbitrários sob um nome específico (chamado de tópico na terminologia MQTT). Outros clientes podem se inscrever nesses dados arbitrários pelo seu nome (tópico) e receber os dados recém-publicados. Ou seja, toda a troca de dados ocorre no princípio cliente-broker-cliente.

Eu não irei me aprofundar nos detalhes. Há uma infinidade de artigos e tutoriais na internet sobre como funciona MQTT e quais programas existem para criar painéis de controle. Vou apenas mostrar como podemos receber e publicar dados através de ShIoTiny.

Usei como broker www.cloudmqtt.com, mas o princípio é o mesmo em todo lugar.

Portanto, vamos assumir que você se registrou no broker MQTT. De modo geral, o corretor irá fornecer (ou solicitar que você crie) um nome de usuário e uma senha (para autenticação), além da porta para conexão. Conectar-se ShIoTiny para ao broker MQTT pode ser feito de duas maneiras — conexão comum e através de TLS (SSL).

Todos esses parâmetros são ShIoTiny inseridos na aba Rede, seção Conexão MQTT ao servidor.

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

Se o seu um broker MQTT não requer autenticação — não insira login e senha (deixe esses campos vazios).

Parâmetro Prefixo do tópico MQTT merece uma explicação separada.

O prefixo dos parâmetros MQTT é uma string adicionada ao nome do tópico (tópico) ao publicar e assinar tópicos no broker MQTT. Para definir o prefixo MQTT para o seu controlador, você deve apenas inseri-lo no campo de entrada "Prefixo do tópico MQTT» («Prefixo do tópico MQTT". O prefixo sempre começa com uma barra («/»)! Se você não inserir a barra no campo de entrada — ela será adicionada automaticamente. No prefixo, não é permitido usar caracteres «#» e «+». Não há outras restrições.

Por exemplo, se você publica o parâmetro "status" (ou se inscreve nele), e seu prefixo é definido como "/shiotiny/", então no broker este parâmetro será publicado sob o nome "/shiotiny/status". Se você tem um prefixo vazio, todos os parâmetros no broker começarão com uma barra («/»): «status" será publicado como "/status».

Então, assumindo que você se registrou em broker MQTT e obteve login, senha e porta. Em seguida, você registrou esses parâmetros na aba Rede, seção Conexão MQTT ao servidor do controlador. ShIoTiny.

Assumindo que o prefixo foi definido como "/room/».

Vamos começar publicando o estado de todos os parâmetros principais: relé Relé1, estado de ativação manual, estado de ativação automática e, finalmente, níveis de umidade de limite e atuais. E como um bônus — a temperatura ambiente. Como fazer isso, veja na imagem.

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

Como podemos ver, a única diferença em relação à versão anterior são os nós "Publicar MQTT". Considerando o prefixo, os seguintes parâmetros são publicados:
ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

Como podemos ver, o estado de todo o sistema está completamente visível!

Mas queremos não apenas ver, mas também gerenciar. E agora, o que fazer? Muito simples. Vamos desistir de configurar o nível de umidade de limite usando ADC e um resistor variável e vamos definir esse mesmo nível de umidade de limite diretamente do MQTT smartphone!

ShIoTiny: ventilação de ambientes úmidos (exemplo de projeto)

Remova o nó ADC do esquema e adicione três novos nós: Armazenar FLASH, Restaurar FLASH e descrever MQTT.

A função do nó descrever MQTT é clara: ele recebe o parâmetro /room/trigHset (nível de umidade de limite) do broker MQTT.Mas o que ele faz com os dados depois? Simplesmente passa para o nó Armazenar FLASH, que, por sua vez, armazena esses dados na memória não volátil sob o nome trigH. Após isso, o nó Restaurar FLASH lê da memória não volátil os dados sob o nome trigH e o que acontece a seguir já sabemos.

Por que tanta complexidade? Por que não passar imediatamente os dados recebidos para o comparador?

Como dizia o camarada S. Holmes — é elementar! Ninguém garante que, após ligar seu dispositivo, ele se conectará a ao broker MQTT. E é necessário medir a umidade. E é preciso ligar o ventilador. Mas sem informações sobre o nível de umidade limite, isso é impossível! Portanto, nosso dispositivo, ao ser ligado, extrai da memória não volátil o nível de umidade limite previamente armazenado e o utiliza para tomar decisões. E quando a conexão com o broker MQTT e alguém publicar um novo valor /room/trigHset, então esse novo valor será utilizado.

A partir daí, você pode inventar o que quiser. Por exemplo, além da umidade, adicionar também o controle da temperatura. Ou incluir controle de iluminação "inteligente" (ainda temos dois relés e duas entradas não utilizados). Tudo está em suas mãos!

Conclusão

Assim, analisamos alguns exemplos da implementação de um controlador simples na base do ShIoTiny. Pode ser que isso seja útil para alguém.

Como sempre, sugestões, pedidos, perguntas, erros de impressão e outros — para o e-mail: shiotiny@yandex.ru

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster