• Please visit and share your knowledge at our sister communities:
  • If you have not, please join our official Homebrewing Facebook Group!

    Homebrewing Facebook Group

BrewmaniacEX

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Alguém está tendo ou já teve problemas para atualizar BM para 0.4.7 ?
Pois quando mando atualizar dá erro :

error:Erro open filed! ( SEGUE IMAGEM ANEXO )

Isso acontece logo apos ele "formatar", e quando vai processar o primeiro arquivo da lista o "bm.047.jgz"

Obrigado pessoal.

Tenta fazer o upload direto da IDE, desconecte a Wemos da placa de interface pra isso.
 
Eu tenho montado BrewManiacEx com a placa do @dumpa já tem bastante tempo, e foram mais de 10 peças e todas com excelente apresentação. Além da placa ser testada antes do envio ele tem vários componentes que pode te fornecer barateando os custos com frete de outros lugares, se procura por qualidade vai que é certo, @dumpa sempre tem placas disponíveis de alta qualidade e imbatíveis no custo/benefício. Ele também tem placas para outros projetos como o BrewPiLess e qualificação pra desenvolver placas personalizadas para o seu projeto se for esse o caso.

Dumpa's Fone/Whatsapp: (19)9 8272-7889

https://i.imgur.com/8TzXhU3l.jpg - Placas BMex do @dumpa
https://i.imgur.com/iwCqCBDl.jpg - Montagem que fiz com essa placa

Ola, onde encontro a placa @dumpa para comprar?
 
a ideia seria ter um controlador de temperatura bem compacto, mas com conexão WIFI hehe
Seria bem legal se alguem daqui conseguisse desenvolver algo tão compacto e com este preço hehe

Já faz mais de ano a pergunta, mas vou responder mesmo assim!
Sonoff TH é a melhor opção amigo!
 
Boa Noite! Estou montando meu controlador BrewmaniacEx com um NodeMcu V3 que tenho em casa, mas não estou obtendo sucesso na compilação do código do controlador utilizando o VSCode/Platformio. Em todas as configurações que tento compilar esta gerando algum erro e o compilador apenas grava parte dos arquivos oque não permite que o BrewmaniacEx carregue a pagina Web para configuração da conexão do Wifi após conectado na rede bm. Alguém já teve este problema ou poderia me orientar quanto a compilação dos arquivos do BrewmaniacEx no NodeMcu V3 ? Obrigado.
 

Attachments

  • Erro BrewmaniacEx.png
    Erro BrewmaniacEx.png
    255.8 KB
Boa Noite! Estou montando meu controlador BrewmaniacEx com um NodeMcu V3 que tenho em casa, mas não estou obtendo sucesso na compilação do código do controlador utilizando o VSCode/Platformio. Em todas as configurações que tento compilar esta gerando algum erro e o compilador apenas grava parte dos arquivos oque não permite que o BrewmaniacEx carregue a pagina Web para configuração da conexão do Wifi após conectado na rede bm. Alguém já teve este problema ou poderia me orientar quanto a compilação dos arquivos do BrewmaniacEx no NodeMcu V3 ? Obrigado.

No arquivo platformio você está gerando todos os bins/versões do BMEx possíveis, então primeiro corrija sua linha 11 e 12 deixando assim:

env_default = nodemcuv2
;env_default = nodemcuv2, nodemcuv2-multisensor, distilling, spargeheater, dualheater

na primeira é a versão que quer gerar, a segunda tem todas, então comente com um ; no início dela e na primeira coloque a versão que deseja gerar e fazer upload depois.

Nunca usei NodeMcu V3, mas no que olhei a pinagem aqui são iguais, não tem que alterar mais nada. Só faça a compilação novamente com a versão desejada e faça o upload.

O BMEx só o envia o o binário no upload, não envia os arquivos html.
No 1º acesso é para aparecer a página de configuração wifi, escolhida a rede e salvo ele irá se conectar a ela e irá recarregar com a página para update de arquivos, NÃO FAÇA UPDATE AINDA, pois você está em rede local (192.168.4.1) e sem acesso a internet, deve desconectar da rede bm e acessar o BMEx pelo IP que ele está conectado na sua rede, ele irá aparecer no LCD, caso não tenha usado LCD pode ver acessando o admin do roteador e também pode acessar usando o endereço bm.local no navegador, mas não é com todos que esse endereço funciona.
Feito isso, acessando pelo IP irá carregar novamente a página de update de arquivos, escolha a língua que deseja usar e clique em update e aguarde até ele terminar e reiniciar. Não precisa clicar na opção de spiffs já que é uma nova gravação.
 
No arquivo platformio você está gerando todos os bins/versões do BMEx possíveis, então primeiro corrija sua linha 11 e 12 deixando assim:

env_default = nodemcuv2
;env_default = nodemcuv2, nodemcuv2-multisensor, distilling, spargeheater, dualheater

na primeira é a versão que quer gerar, a segunda tem todas, então comente com um ; no início dela e na primeira coloque a versão que deseja gerar e fazer upload depois.

Nunca usei NodeMcu V3, mas no que olhei a pinagem aqui são iguais, não tem que alterar mais nada. Só faça a compilação novamente com a versão desejada e faça o upload.

O BMEx só o envia o o binário no upload, não envia os arquivos html.
No 1º acesso é para aparecer a página de configuração wifi, escolhida a rede e salvo ele irá se conectar a ela e irá recarregar com a página para update de arquivos, NÃO FAÇA UPDATE AINDA, pois você está em rede local (192.168.4.1) e sem acesso a internet, deve desconectar da rede bm e acessar o BMEx pelo IP que ele está conectado na sua rede, ele irá aparecer no LCD, caso não tenha usado LCD pode ver acessando o admin do roteador e também pode acessar usando o endereço bm.local no navegador, mas não é com todos que esse endereço funciona.
Feito isso, acessando pelo IP irá carregar novamente a página de update de arquivos, escolha a língua que deseja usar e clique em update e aguarde até ele terminar e reiniciar. Não precisa clicar na opção de spiffs já que é uma nova gravação.
Boa tarde!
Dumpa, primeiramente muito obrigado pela dedicação em nós ajudar na confecção do controlador BrewmaniacEx. Seguindo sua orientação conseguir a gravação de algumas das versão do controlador. Mas agora estou enfrentando um outro dilema. Quando logo na red bm criada pelo controlador somente é exibido a página de atualização da versão, não está sendo exibido a página para configuração da conexão wifi. Já compilei outro código Ex.blink no NodeMcu para testar e estrando que mesmo com outro código rodando ele ainda cria a red bm, fiz a atualização do NodeMcu mas o comportamento continua o mesmo. Você poderia me orientar ?
 
Boa tarde!
Dumpa, primeiramente muito obrigado pela dedicação em nós ajudar na confecção do controlador BrewmaniacEx. Seguindo sua orientação conseguir a gravação de algumas das versão do controlador. Mas agora estou enfrentando um outro dilema. Quando logo na red bm criada pelo controlador somente é exibido a página de atualização da versão, não está sendo exibido a página para configuração da conexão wifi. Já compilei outro código Ex.blink no NodeMcu para testar e estrando que mesmo com outro código rodando ele ainda cria a red bm, fiz a atualização do NodeMcu mas o comportamento continua o mesmo. Você poderia me orientar ?


como você gravou várias vezes, deve ter corrompido algo ou algum resto dos uploads atrapalhando, recomendo apagar o Wemos, para isso pode usar o NodeMCU PyFlasher https://github.com/marcelstoer/nodemcu-pyflasher/releases

Faça o download do arquivo zip, descompacte, faça o download de um dos executáveis e coloque dentro da pasta que descompactou.

n5MUN0e.png


Execute o arquivo. Em serial port selecione a porta COM do seu NodeMCU.
Selecione o arquivo nodemecu-pyflasher.py que está na pasta do programa.
Deixe igual as opções seguintes, 115200, Dual I/O (DIO) e Yes, wipes all data; feito isso clique em Flash NodeMCU e aguarde terminar.

NizHsJl.png


Terminado, refaça a gravação do firmware do BMEx escolhendo qual versão deseja, se tudo der certo depois que conectar na rede bm e acessar o 192.168.4.1 vai aparecer essa imagem

Q97mdQR.png
 
como você gravou várias vezes, deve ter corrompido algo ou algum resto dos uploads atrapalhando, recomendo apagar o Wemos, para isso pode usar o NodeMCU PyFlasher https://github.com/marcelstoer/nodemcu-pyflasher/releases

Faça o download do arquivo zip, descompacte, faça o download de um dos executáveis e coloque dentro da pasta que descompactou.

n5MUN0e.png


Execute o arquivo. Em serial port selecione a porta COM do seu NodeMCU.
Selecione o arquivo nodemecu-pyflasher.py que está na pasta do programa.
Deixe igual as opções seguintes, 115200, Dual I/O (DIO) e Yes, wipes all data; feito isso clique em Flash NodeMCU e aguarde terminar.

NizHsJl.png


Terminado, refaça a gravação do firmware do BMEx escolhendo qual versão deseja, se tudo der certo depois que conectar na rede bm e acessar o 192.168.4.1 vai aparecer essa imagem

Q97mdQR.png
Boa Tarde!
Dumpa, mais uma vez muito obrigado pela atenção! Deu tudo certo após a limpeza do NodeMcu, meu sistema esta funcionando conforme esperado. Assisti um video seu testando o BrewmaniacEx para spargeheater, é necessário fazer alguma alteração no codigo para conpilar o spargeheater ? Tentei por N vezes mas somente consegui compilar o nodemcuv2, nodemcuv2-multisensor os demais geram os seguintes erros:
{
"resource": "/c:/Users/dgodi/Desktop/Cerveja Artesanal/Controlador BrewManiacEsp8266/BrewManiacEsp8266-master/src/HttpUpdateHandler.cpp", "owner": "C/C++",
"severity": 8, "message": "nenhum instância de função sobrecarregada \"ESP8266HTTPUpdate::update\" corresponde à lista de argumentos -- os tipos de argumentos são: (WiFiClient, String, String) -- o tipo de objeto é: ESP8266HTTPUpdate","startLineNumber": 674,"startColumn": 32, "endLineNumber": 674,"endColumn": 32
}

Você sabe dizer oque pode estar gerando estes erros?

Desde jámuito obrigado!
 

Attachments

  • Erro BrewmaniacEx spargeheater.png
    Erro BrewmaniacEx spargeheater.png
    277.4 KB
Boa Tarde!
Dumpa, mais uma vez muito obrigado pela atenção! Deu tudo certo após a limpeza do NodeMcu, meu sistema esta funcionando conforme esperado. Assisti um video seu testando o BrewmaniacEx para spargeheater, é necessário fazer alguma alteração no codigo para conpilar o spargeheater ? Tentei por N vezes mas somente consegui compilar o nodemcuv2, nodemcuv2-multisensor os demais geram os seguintes erros:
{
"resource": "/c:/Users/dgodi/Desktop/Cerveja Artesanal/Controlador BrewManiacEsp8266/BrewManiacEsp8266-master/src/HttpUpdateHandler.cpp", "owner": "C/C++",
"severity": 8, "message": "nenhum instância de função sobrecarregada \"ESP8266HTTPUpdate::update\" corresponde à lista de argumentos -- os tipos de argumentos são: (WiFiClient, String, String) -- o tipo de objeto é: ESP8266HTTPUpdate","startLineNumber": 674,"startColumn": 32, "endLineNumber": 674,"endColumn": 32
}

Você sabe dizer oque pode estar gerando estes erros?

Desde jámuito obrigado!

Não sei. Mas o que você pode fazer é pegar o .bin do spargeheater e flashear ele com o nodemcu/nodemcu-flasher

https://github.com/vitotai/BrewManiacEsp8266/blob/master/bin/BrewManiacEx.047.spargeheater.bin
 
Opa Dumpa.
Gostaria de saber qual a melhor forma de utilizar.
A quantidade que uso para infusão é de uns 25 litros.
Coloco essa quantidade e configuro o autotune para a temperatura de infusão?
Quanto Tempo demora?
Funciona mesmo? Vale o tempo gasto?

Obrigado.

sim, qual a dúvida?
 
Last edited:
Opa Dumpa.
Gostaria de saber qual a melhor forma de utilizar.
A quantidade que uso para infusão é de uns 25 litros.
Coloco essa quantidade e configuro o autotune para a temperatura de infusão?
Quanto Tempo demora?
Funciona mesmo? Vale o tempo gasto?

Obrigado.

Normalmente é recomendado a água de mostura que normalmente vc usa e o setpoint dela. O tempo gasto é relativo, depende do material do equipamento, volume, temperatura ambiente... Em teoria é para funcionar. Mas basicamente ele vai ficar esquentando e deixando esfriar e sucessivamente e tentando manter o SP.

AUTO-TUNE
• Adicione água
• Entre no modo manual
• Configure a temperatura desejada, por ex. 50 ºC
• Ligue a resistência (HEAT) e a bomba se desejar ter a recirculação (recomendado)
• Quando atingir o SP segure o botão da resistência por uns 2s e solte, vai aparecer a pergunta TUNE PID? coloque SIM
• O TUNE PID irá começar e fará os ajustes necessários nos parâmetros
• Quando terminar os parâmetros estarão armazenados automaticamente
 
O autotune funciona bem sim, no meu equipamento leva cerca de 10 minutos.

Se fizer só com água o resultado já fica muito bom, mas para melhores resultados recomendo que faça exatamente da forma que costuma ser sua brassagem, com a mesma quantidade de água e malte.

Por exemplo, no dia que for brassar põe a água e o malte na panela, segue as instruções do dumpa programando o autotune para 50ºC, depois segue normalmente para suas rampas de sacarificação. Vai acrescentar muito pouco ao seu tempo de brassagem e seu aparelho vai ficar bem ajustado.
 
Opa,
Você diz para colocar o malte com a agua fria e setar para 50 graus?
Ou esquento até 50 graus, coloco o malte e seto o autotune?
Isso não irá afetar a densidade pré fervura, etc?

Obrigado!
O autotune funciona bem sim, no meu equipamento leva cerca de 10 minutos.

Se fizer só com água o resultado já fica muito bom, mas para melhores resultados recomendo que faça exatamente da forma que costuma ser sua brassagem, com a mesma quantidade de água e malte.

Por exemplo, no dia que for brassar põe a água e o malte na panela, segue as instruções do dumpa programando o autotune para 50ºC, depois segue normalmente para suas rampas de sacarificação. Vai acrescentar muito pouco ao seu tempo de brassagem e seu aparelho vai ficar bem ajustado.
 
Alguém pode ajudar?
Seto para 50 graus e coloco o malte. Ligo o autotune e depois avanço para a temp de infusão. Isso eu entendi.
A minha dúvida é se isso vai alterar alguma coisa na receita do beersmith.

Obrigado.

Opa,
Você diz para colocar o malte com a agua fria e setar para 50 graus?
Ou esquento até 50 graus, coloco o malte e seto o autotune?
Isso não irá afetar a densidade pré fervura, etc?

Obrigado!
 
Alguém pode ajudar?
Seto para 50 graus e coloco o malte. Ligo o autotune e depois avanço para a temp de infusão. Isso eu entendi.
A minha dúvida é se isso vai alterar alguma coisa na receita do beersmith.

Obrigado.

Nunca fiz assim, mas entendi isso também, então coloca a água, seta para sua temp. desejada, um pouco antes adicione o malte, vai ocorrer queda de temperatura e o PID vai tentar compensar e passará do setpoint se colocar quando atingir, por isso acho que antes é o ideal. Quando atingir acione o autune e depois que ele finalizar siga com a brassagem. Mas tem vez que leva 1h o auto tune, um colega fez essa semana só com água e está brassando neste momento, o máximo que passou foi 0.5 ºC, na rampa de 66 ºC está se mantendo em 66.11 ºC.
 
Bom dia, pessoal.
Alguém sabe o que significam os números 2, 1, 8 e 4 abaixo?
Consegui alterar os mapeamentos para a bomba, sensor e heater para a placa do Mazza mas somente os botões não estão funcionando.
Na placa dele, os botões foram associados aos pinos P1, P2, P3 e P4. Originalmente seriam nos P0, P1, P2 e P3.
Achei que esses números eram os pinos do PCF8574 mas aparentemente não é isso.
Refiz o código pois troquei o D1 por um D1 pro.

#define ButtonUpPin 2 // P1
#define ButtonDownPin 1 // p0 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 4 //P2 NODEMCU_PIN_D6

Abs,
 
Last edited:
Já consegui!

Abs,

Bom dia, pessoal.
Alguém sabe o que significam os números 2, 1, 8 e 4 abaixo?
Consegui alterar os mapeamentos para a bomba, sensor e heater para a placa do Mazza mas somente os botões não estão funcionando.
Na placa dele, os botões foram associados aos pinos P1, P2, P3 e P4. Originalmente seriam nos P0, P1, P2 e P3.
Achei que esses números eram os pinos do PCF8574 mas aparentemente não é isso.
Refiz o código pois troquei o D1 por um D1 pro.

#define ButtonUpPin 2 // P1
#define ButtonDownPin 1 // p0 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 4 //P2 NODEMCU_PIN_D6

Abs,
 
Opa,

Eu ia coloca meu pins.h aqui, mas verifiquei umas inconsistências (número dos BUS com relação aos D0, D5, etc).

Vou revisar aqui.

Poderia me passar as alterações que você fez no código para funcionar com a placa do mazza?

Eu até identifiquei algumas, mas queria confirmar antes de alterar e por na placa 😅
 
Last edited:
Segue o conteúdo do pins.h
Peço por favor que revise e teste o funcionamento. Não me responsabilizo por possíveis problemas ocasionados. Abs!

#ifndef PINS_H
#define PINS_H
#include <pcf8574_esp.h>
/*
#define NODEMCU_PIN_A0 17
#define NODEMCU_PIN_D8 15 Buzzer
#define NODEMCU_PIN_D1 5 [I/O]SCL // I2C
#define NODEMCU_PIN_D2 4 [I/O]SDA // I2C
#define NODEMCU_PIN_D3 0
#define NODEMCU_PIN_D4 2
#define NODEMCU_PIN_D5 14 Pump
#define NODEMCU_PIN_D6 12 Sensor
#define NODEMCU_PIN_D0 16 Heater
#define NODEMCU_PIN_D7 13 AuxHeater
*/
#define BUTTON_USE_EXT true
#define HEATER_USE_EXT false
#define PUMP_USE_EXT false
#define BUZZER_USE_EXT false
//#define PUMP_INVERTED_LOGIC true
// with all address pins grounded, PCF8574 is 0x20 while pCF8574A is 0x38
#define PCF8574_ADDRESS 0x20
//#define PCF8574_ADDRESS 0x38
//Using ESP8266 PINs as input seems to be a good idea
#define I2C_SCL NODEMCU_PIN_D1
#define I2C_SDA NODEMCU_PIN_D2
#define SensorPin NODEMCU_PIN_D6

#define AuxHeatControlPin NODEMCU_PIN_D7
// the following pin are group into Output & Input
// Input is for button, while output is for heater,pump, and buzzer.
#if BUTTON_USE_EXT !=true
#define ButtonUpPin NODEMCU_PIN_D3
#define ButtonDownPin NODEMCU_PIN_D4
#define ButtonStartPin NODEMCU_PIN_D5
#define ButtonEnterPin NODEMCU_PIN_D7
#else
#define ButtonUpPin 2 // P1
#define ButtonDownPin 4 // p2 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 16 //P4 NODEMCU_PIN_D6
#endif
#if EnableLevelSensor
#define LevelSensorOnIoExpander false
#if LevelSensorOnIoExpander
#define LevelSensorIOExpPin 32 //P5
#else
#define LevelSensorPin NODEMCU_PIN_D7
#endif
#define SensorNormalCloseOnNotFull true
#endif
#if PUMP_USE_EXT != true
#define PumpControlPin NODEMCU_PIN_D5
#else
#define ExPumpControlPin 5
#endif
#if HEATER_USE_EXT != true
#define HeatControlPin NODEMCU_PIN_D0
#define ExHeatControlPin 3
#endif
#if BUZZER_USE_EXT != true
#define BuzzControlPin NODEMCU_PIN_D7
#else
#define ExBuzzControlPin 6
#endif

#if (BUTTON_USE_EXT == true) || (HEATER_USE_EXT == true) || (PUMP_USE_EXT == true) ||( BUZZER_USE_EXT == true)
PCF8574 pcf8574(PCF8574_ADDRESS,I2C_SDA, I2C_SCL);
#endif
// Buttons are INPUT
// byte btnReadPin(byte p){ return digitalRead(p);}
#if BUTTON_USE_EXT !=true
void btnPrepareRead(void){}
#define btnReadPin digitalRead
#else
byte _portvalue;
void btnPrepareRead(void)
{
_portvalue=pcf8574.read8();
}
byte btnReadPin(byte pin)
{
return (_portvalue & pin);
}
#endif
// Heater, Pump, Buzz are OUTPUTs
inline void setHeaterOut(byte v)
{
#if HEATER_USE_EXT != true
digitalWrite (HeatControlPin, v);
#else
pcf8574.write(ExHeatControlPin,v);
#endif
}
inline void setPumpOut(byte v)
{
#if PUMP_USE_EXT != true
#if PUMP_INVERTED_LOGIC
digitalWrite (PumpControlPin, (v==LOW)? HIGH:LOW);
#else
digitalWrite (PumpControlPin, v);
#endif
#else
pcf8574.write(ExPumpControlPin,v);
#endif
}
inline void setBuzzOut(byte v)
{
#if BUZZER_USE_EXT != true
digitalWrite (BuzzControlPin, v);
#else
pcf8574.write(ExBuzzControlPin,v);
#endif
}
#if SpargeHeaterSupport == true
inline void setAuxHeaterOut(byte v)
{
digitalWrite (AuxHeatControlPin, v);
}
#endif
#if SecondaryHeaterSupport == true
inline void setSecondaryHeaterOut(byte v)
{
digitalWrite (AuxHeatControlPin, v);
}
#endif
void initIOPins(void)
{
#if (BUTTON_USE_EXT == true) || (HEATER_USE_EXT == true) || (PUMP_USE_EXT == true) ||( BUZZER_USE_EXT == true)
// pcf8574.begin();
#endif
#if BUTTON_USE_EXT !=true
pinMode (ButtonUpPin, INPUT_PULLUP);
pinMode (ButtonDownPin, INPUT_PULLUP);
pinMode (ButtonStartPin, INPUT_PULLUP);
pinMode (ButtonEnterPin, INPUT_PULLUP);
#else
_portvalue=0;
#endif
#if HEATER_USE_EXT != true
pinMode (HeatControlPin, OUTPUT);
#endif
setHeaterOut(LOW);
#if PUMP_USE_EXT != true
pinMode (PumpControlPin, OUTPUT);
#endif
setPumpOut(LOW);
#if BUZZER_USE_EXT != true
pinMode (BuzzControlPin, OUTPUT);
#endif
setBuzzOut(LOW);
#if SpargeHeaterSupport == true
pinMode (AuxHeatControlPin, OUTPUT);
setAuxHeaterOut(LOW);
#endif
#if EnableLevelSensor
#if LevelSensorOnIoExpander != true
pinMode (LevelSensorPin, INPUT_PULLUP);
#endif
#endif
}
#if EnableLevelSensor
// close/connected/ground: not full
// open/disconnected/V+: full
#if SensorNormalCloseOnNotFull
#if LevelSensorOnIoExpander
bool isWaterLevelFull(void){
// _portvalue is read for button every loop cycle
return (_portvalue & LevelSensorIOExpPin) !=0;
}
#else
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) != 0;
}
#endif
#else
#if LevelSensorOnIoExpander
bool isWaterLevelFull(void){
// _portvalue is read for button every loop cycle
return (_portvalue & LevelSensorIOExpPin) ==0;
}
#else
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) == 0;
}
#endif
#endif //#if SensorNormalCloseOnNotFull
#endif // EnableLevelSensor

#endif
 
Segue o conteúdo do pins.h
Peço por favor que revise e teste o funcionamento. Não me responsabilizo por possíveis problemas ocasionados. Abs!

#ifndef PINS_H
#define PINS_H
#include <pcf8574_esp.h>
/*
#define NODEMCU_PIN_A0 17
#define NODEMCU_PIN_D8 15 Buzzer
#define NODEMCU_PIN_D1 5 [I/O]SCL // I2C
#define NODEMCU_PIN_D2 4 [I/O]SDA // I2C
#define NODEMCU_PIN_D3 0
#define NODEMCU_PIN_D4 2
#define NODEMCU_PIN_D5 14 Pump
#define NODEMCU_PIN_D6 12 Sensor
#define NODEMCU_PIN_D0 16 Heater
#define NODEMCU_PIN_D7 13 AuxHeater
*/
#define BUTTON_USE_EXT true
#define HEATER_USE_EXT false
#define PUMP_USE_EXT false
#define BUZZER_USE_EXT false
//#define PUMP_INVERTED_LOGIC true
// with all address pins grounded, PCF8574 is 0x20 while pCF8574A is 0x38
#define PCF8574_ADDRESS 0x20
//#define PCF8574_ADDRESS 0x38
//Using ESP8266 PINs as input seems to be a good idea
#define I2C_SCL NODEMCU_PIN_D1
#define I2C_SDA NODEMCU_PIN_D2
#define SensorPin NODEMCU_PIN_D6

#define AuxHeatControlPin NODEMCU_PIN_D7
// the following pin are group into Output & Input
// Input is for button, while output is for heater,pump, and buzzer.
#if BUTTON_USE_EXT !=true
#define ButtonUpPin NODEMCU_PIN_D3
#define ButtonDownPin NODEMCU_PIN_D4
#define ButtonStartPin NODEMCU_PIN_D5
#define ButtonEnterPin NODEMCU_PIN_D7
#else
#define ButtonUpPin 2 // P1
#define ButtonDownPin 4 // p2 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 16 //P4 NODEMCU_PIN_D6
#endif
#if EnableLevelSensor
#define LevelSensorOnIoExpander false
#if LevelSensorOnIoExpander
#define LevelSensorIOExpPin 32 //P5
#else
#define LevelSensorPin NODEMCU_PIN_D7
#endif
#define SensorNormalCloseOnNotFull true
#endif
#if PUMP_USE_EXT != true
#define PumpControlPin NODEMCU_PIN_D5
#else
#define ExPumpControlPin 5
#endif
#if HEATER_USE_EXT != true
#define HeatControlPin NODEMCU_PIN_D0
#define ExHeatControlPin 3
#endif
#if BUZZER_USE_EXT != true
#define BuzzControlPin NODEMCU_PIN_D7
#else
#define ExBuzzControlPin 6
#endif

#if (BUTTON_USE_EXT == true) || (HEATER_USE_EXT == true) || (PUMP_USE_EXT == true) ||( BUZZER_USE_EXT == true)
PCF8574 pcf8574(PCF8574_ADDRESS,I2C_SDA, I2C_SCL);
#endif
// Buttons are INPUT
// byte btnReadPin(byte p){ return digitalRead(p);}
#if BUTTON_USE_EXT !=true
void btnPrepareRead(void){}
#define btnReadPin digitalRead
#else
byte _portvalue;
void btnPrepareRead(void)
{
_portvalue=pcf8574.read8();
}
byte btnReadPin(byte pin)
{
return (_portvalue & pin);
}
#endif
// Heater, Pump, Buzz are OUTPUTs
inline void setHeaterOut(byte v)
{
#if HEATER_USE_EXT != true
digitalWrite (HeatControlPin, v);
#else
pcf8574.write(ExHeatControlPin,v);
#endif
}
inline void setPumpOut(byte v)
{
#if PUMP_USE_EXT != true
#if PUMP_INVERTED_LOGIC
digitalWrite (PumpControlPin, (v==LOW)? HIGH:LOW);
#else
digitalWrite (PumpControlPin, v);
#endif
#else
pcf8574.write(ExPumpControlPin,v);
#endif
}
inline void setBuzzOut(byte v)
{
#if BUZZER_USE_EXT != true
digitalWrite (BuzzControlPin, v);
#else
pcf8574.write(ExBuzzControlPin,v);
#endif
}
#if SpargeHeaterSupport == true
inline void setAuxHeaterOut(byte v)
{
digitalWrite (AuxHeatControlPin, v);
}
#endif
#if SecondaryHeaterSupport == true
inline void setSecondaryHeaterOut(byte v)
{
digitalWrite (AuxHeatControlPin, v);
}
#endif
void initIOPins(void)
{
#if (BUTTON_USE_EXT == true) || (HEATER_USE_EXT == true) || (PUMP_USE_EXT == true) ||( BUZZER_USE_EXT == true)
// pcf8574.begin();
#endif
#if BUTTON_USE_EXT !=true
pinMode (ButtonUpPin, INPUT_PULLUP);
pinMode (ButtonDownPin, INPUT_PULLUP);
pinMode (ButtonStartPin, INPUT_PULLUP);
pinMode (ButtonEnterPin, INPUT_PULLUP);
#else
_portvalue=0;
#endif
#if HEATER_USE_EXT != true
pinMode (HeatControlPin, OUTPUT);
#endif
setHeaterOut(LOW);
#if PUMP_USE_EXT != true
pinMode (PumpControlPin, OUTPUT);
#endif
setPumpOut(LOW);
#if BUZZER_USE_EXT != true
pinMode (BuzzControlPin, OUTPUT);
#endif
setBuzzOut(LOW);
#if SpargeHeaterSupport == true
pinMode (AuxHeatControlPin, OUTPUT);
setAuxHeaterOut(LOW);
#endif
#if EnableLevelSensor
#if LevelSensorOnIoExpander != true
pinMode (LevelSensorPin, INPUT_PULLUP);
#endif
#endif
}
#if EnableLevelSensor
// close/connected/ground: not full
// open/disconnected/V+: full
#if SensorNormalCloseOnNotFull
#if LevelSensorOnIoExpander
bool isWaterLevelFull(void){
// _portvalue is read for button every loop cycle
return (_portvalue & LevelSensorIOExpPin) !=0;
}
#else
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) != 0;
}
#endif
#else
#if LevelSensorOnIoExpander
bool isWaterLevelFull(void){
// _portvalue is read for button every loop cycle
return (_portvalue & LevelSensorIOExpPin) ==0;
}
#else
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) == 0;
}
#endif
#endif //#if SensorNormalCloseOnNotFull
#endif // EnableLevelSensor

#endif

Tudo correto.
Como vc falou que já tinha achado a solução, então nem respondi.
 
Bom dia pessoal. Ontem terminei a montagem de um controlador brewmaniac. Estou usando a versão 49 com sparge e antes de conectar a bomba e as resistências, me surgiu algumas dúvidas!

Primeira: Usando o BM no modo auto, percebi que ele liga a pump e heat e não liga o sparge, mas quando dou pause, ele desliga o heat e pump e liga o sparge. Não minha concepção, ele deveria ligar os 3, para que ao fim da mostura a agua do sparge já esteja na temperatura. Como não deixei muito tempo ligado, depois de um tempo ele liga a sparge?

Segunda: Usando o BM no manual, não vi um botão para ligar/desligar o sparge

Obrigado a todos!
 
Bom dia pessoal. Ontem terminei a montagem de um controlador brewmaniac. Estou usando a versão 49 com sparge e antes de conectar a bomba e as resistências, me surgiu algumas dúvidas!

Primeira: Usando o BM no modo auto, percebi que ele liga a pump e heat e não liga o sparge, mas quando dou pause, ele desliga o heat e pump e liga o sparge. Não minha concepção, ele deveria ligar os 3, para que ao fim da mostura a agua do sparge já esteja na temperatura. Como não deixei muito tempo ligado, depois de um tempo ele liga a sparge?

Segunda: Usando o BM no manual, não vi um botão para ligar/desligar o sparge

Obrigado a todos!

Resistência principal e resistência de sparge nunca atuam juntas, faz parte do projeto ser assim, sempre na pausa da principal a de sparge é acionada. No modo auto até o final da mostura a temperatura de sparge será atingida, não se preocupe. Modo manual não tem sparge.
 
Resistência principal e resistência de sparge nunca atuam juntas, faz parte do projeto ser assim, sempre na pausa da principal a de sparge é acionada. No modo auto até o final da mostura a temperatura de sparge será atingida, não se preocupe. Modo manual não tem sparge.
Dumpa, então enquanto a temperatura sobe a sparge fica desligada, chegou no setpoint, a sparge liga. Depois ficam alternando para manter ambas na temperatura correta?
Obrigado!
 
Dumpa, então enquanto a temperatura sobe a sparge fica desligada, chegou no setpoint, a sparge liga. Depois ficam alternando para manter ambas na temperatura correta?
Obrigado!

Isso, enquanto não atingir o SP da principal a de sparge não é acionada, quando está para atingir e o PID entra em ação a de sparge já começa a ser acionada, e faz isso durante toda a mostura nas pausas da principal.
 
Pessoal, bom dia!

Tenho em casa alguns ESP e resolvi montar um Brewmaniac com um deles.

Estou usando um ESP-07, que aparentemente tem 8Mbit de memória (1Mbyte)

Eu consegui gravar o firmware da versão 0.4.9, montei o display LCD via i2c está funcionando (mostrando o IP e a tela inicial), consegui acessar pela rede que ele cria "bm" e configurar o acesso a minha rede de casa.


Acontece que no momento que acesso ele, por meio do PC conectado a internet, é necessário atualizar o javascript/HTML

Neste momento, ocorre um erro que não foi possível descompactar o arquivo e não consigo prosseguir.

Perguntas
1- Consigo utilizar o ESP-07 com ele? Qual a memória mínima para rodar?

2- Qual a posição de memória que devo gravar o binário? É a partir do endereço 0x0000000?

3- Preciso gravar apenas o binário do brewmaniac direto, ou precisa fazer um conjunto de mais um outro binário? (Por exemplo, o do nodemcu)

4- Eu já fiz um procedimento de resetar a flash pela IDE do arduino. Tem algum outro procedimento antes de gravar o binário?

Alguém consegue me ajudar?

Fico muito agradecido pessoal!!
 
Back
Top