Manual

do

Maker

.

com

Controle de temperatura de um kegerator

Controle de temperatura de um kegerator

Olha só que interessante. Após o projeto de refrigeração controlada da cerveja utilizando ESP8266, apareceram alguns projetos relacionados à cerveja e cervejaria. Dentre eles, agora estou configurando um kegerator. Não conhece?

Um kegerator é um dispositivo personalizado para servir cerveja com carbonatação forçada (usando um keg). No caso, estou utilizando a geladeira da foto. Não manjo de geladeira, mas essa aí de 1950 não estava funcionando e levei alguns dias pra entender que a única coisa dela que estava boa era o motor. Após aprender a medir e testar o compressor, consegui ligá-la, mas já não tinha nenhum outro periférico como o termostato e relé. Por isso, sugeri à Ye Vesta Home Brewing a automação da geladeira, que será transformada em um kegerator, onde serão instalados dois "bicos" para servir a cerveja com carbonatação forçada (entenda-se chopp a partir de então).

O programa é baseado no mesmo que utilizo no controle do meu frigobar, mas já está melhorado, como você poderá ver ao baixar os fontes diretamente no github. Nesse momento, sugiro que você já dê uma olhada no arquivo tempMonitor.py no link do github mais acima, e para o sensor que vai dentro do kegerator, veja o goToBed.py. Os detalhes da implementação serão mostrados sequencialmente. Para hoje, apenas disponibilizo o código supracitado, que utiliza MQTT para a comunicação.

Instanciando o objeto

Basicamente, você precisará enviar o arquivo para o ESP8266 através de WEPREPL (veja nesse artigo). Claro que para isso você precisa ter instalado o firmware MicroPython (veja nesse artigo na sessão "trocando o firmware nodemcu por micropython" - o tutorial serve para substituir qualquer firmware), também disponível no github. Por fim, você pode criar o arquivo main.py e colocar esse conteúdo:

freezer = tempMonitor.freezer(bb_mqtt_id="NomeQualquer",mqtt_broker="ipDoBroker",mqtt_port=1883,mqtt_user="seuUser",mqtt_passwd="suaSenha",topic="beer/temperature")
freezer.check()

O main.py roda depois do arquivo de boot (se existir o main.py). Ou então, você pode incluí-lo ao final do arquivo boot.py, mas se der algum erro na execução, você só conseguirá acessar o ESP8266 novamente pela serial. Eu não me incomodo muito, mas é mais prático utilizar WEBREPL. Outra opção é colocar um try/except apenas para não perder o controle do ESP.

Como funciona o sistema de controle

É bastante simples a lógica. A geladeira deverá resfriar até uma determinada temperatura. O sensor que vai dentro da geladeira envia por wifi a temperatura (utilizando o protocolo MQTT), enquanto no controle da energia, outro ESP8266 fica recebendo os valores da temperatura. Quando chegar no limite para baixo ou para cima, o ESP8266 reagirá chaveando o relé.

O exemplo de código acima é para a instância do controlador; o ESP8266 que acionará os relés. Para o ESP8266 que faz informes de temperatura, deve-se utilizar o goToBed.py, seguindo o mesmo padrão preparatório supracitado, apenas com a instância um pouco diferente:

import goToBed

go = goToBed.sleeper(bb_mqtt_id="qualquerNome",mqtt_broker="ipDoBroker",mqtt_port=1883,mqtt_user="seuUser",mqtt_passwd="suaSenha",step=1)
go.now()

Qual a diferença dos posts anteriores relacionados ao controle de temperatura?

Parece bastante similar, e é mesmo. Mas por incrível que pareça, não deixei de dar manutenção no código que outrora era exclusivo para escrever os artigos, mas consequentemente utilizei em meu frigobar e agora já estou implementando em outras situações que nem esperava existir. Daí, além dos controles básicos, para uso em casa mesmo já adicionei mais alguns recursos, como por exemplo, programas - Não programas de computador, programas como rotinas para diferentes situações. Explicando em pormenores.

Fermentação

Na fase de fermentação, normalmente os cervejeiros deixam a cerveja em temperatura ambiente, mas não é o ideal. O ideal é que a fermentação aconteça em uma temperatura constante de 20 graus, levando em consideração que a fermentação eleva a temperatura do mosto da cerveja em até 2 graus.

A temperatura inadequada do mosto gera ésteres e fenóis que às vezes podem ser indesejados. Quando se produz uma cerveja mais lupulada, essas características (ou defeitos) são mais facilmente ignoradas, mas quando se está produzindo (por exemplo) uma weiss, você pode não desejar características de cravo e canela - é o meu caso, prefiro destaque no sabor de "banana" ou "mel". Por isso criei um tópico para clicar e dizer ao ESP do relé a que temperatura ele deve interagir.

Maturação

Nesse ponto você deseja que a levedura durma, para parar de atuar. E nesse ponto o açucar da mosturação já deve ter sido devorado pela levedura, de forma que você acabaria a matando se a mantivesse acordada. Por isso nesse momento o ESP que controla o relé deve se reprogramar para manter a temperatura o mais próximo de 0 graus.

Priming

É a finalização da cerveja, o momento que você envasa a cerveja com açucar invertido dentro da proporção ideal para o estilo da cerveja. Nesse ponto há controvérsias, sendo que alguns dizem simplesmente para fazer a carbonatação em temperatura ambiente e outro dizem para fazê-lo em torno de 20 graus. Eu preferi criar uma range para esse momento também, para evitar alterações no sabor esperado para a cerveja.

Quanto à parte técnica

E aconteceu que bugs surgiram. É óbvio que isso é natural, ainda mais conforme o código cresce e também considerando que nasceu sem planejamento. Por acaso, os bugs causaram desde interrupção do programa até reset da CPU (porque ESP8266 é um processador RISC da arquitetura Tensilica). Bem, pra fazer debug já não seria tão simples, de modo que para auxiliar na resolução do problema, criei um método de log. Ficou tão legal que mantive. Você pode tanto ler o log localmente como baixá-lo a seu computador para leitura posterior. Se desejar ver direto no ESP, basta abrir o arquivo e ler:

f = open("tempMonitor.log","r")
f.read()
f.close()

MQTT Dashboard para Android

No Android utilizo o MQTT Dashboard, que permite criar widgets de forma rápida. Além de ser prático para interagir com os ESP8266, também me permite ter um bom feedback do comportamento das CPUs. Veja minhas telas de Publish e Subscribe.

Material

O material é básico e barato, considerando o retorno:

Screenshot_20170327-182946-169x300.webp

Agora vamos à parte de personalização, o "pimp my refrigerator" da eletrônica digital. A parte física está na mão de um engenheiro, o Marco Aurélio da Ye Vesta Home brewing e logo mais coloco os artigos da evolução, é só acompanhar!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.