Estou tendo problemas para garantir que meu projeto seja realmente viável.
O que eu quero arquivar: Controle minha máquina de café Senseo via internet. Tudo se resume a simplesmente controlar 2 botões.
Primeira solução fácil:
- Configure um servidor NodeJS no meu Raspberry Pi.
- Conecto meus GPIOs de framboesa a 2 transistores, para controlar os botões da máquina de café
- Eu posso controlar o Raspberry GPIO diretamente em Javascript. Por exemplo, ligar para http://myraspberrypi.com/makemeacoffee ativa o GPIO, ativa os botões e o café flui
Mas: não quero conectar minha framboesa à máquina de café (preciso do Pi para outros fins) e acho que desacoplar o servidor da Web e o próprio controlador é uma boa idéia. Se amanhã quiser monitorar a temperatura do meu banheiro ou controlar uma segunda máquina de café (usando outro ESP8266), quero poder fazê-lo sem repensar a coisa toda.
O que eu preciso para arquivar um ESP8266 com NodeMCU para usá-lo como um controlador sem fio Wi-Fi (consulte este link ). O GPIO de framboesa não é mais usado (esse é o ponto). Existe apenas um servidor da web NodeJS no Pi.
Aqui está um rápido esboço da arquitetura:
Deixe-me esclarecer o papel dos principais componentes:
- Raspberry Pi: hospeda o servidor da web NodeJS
- Servidor da web NodeJS: serve as páginas da web para o usuário final. Basicamente, uma página com um botão "Faça-me um café". Nos bastidores, precisamos "apertar" o botão para aquecer a água, esperar 30 segundos e depois "apertar" o botão do café. O servidor da Web faz isso enviando solicitações HTTP para o ESP8266 (por Wi-Fi). O servidor NodeJS também faz registro e análise de dados (quantos cafés você tomou este ano?)
- ESP8266: Usa NodeMCU. Seus GPIOs estão conectados a um transistor que controla os botões da máquina de café. Eu não ligo para como alimentar o ESP8266. Ele executa um servidor da Web para ouvir as solicitações do Raspberry Pi e executar ações nos GPIOs de acordo.
Essa arquitetura é viável? Essa arquitetura é flexível?
EDIT, para responder Sean Houlihane (spoiler para manter o post relativamente curto):
Não tenho 100% de certeza disso, mas um transistor parece ser suficiente. O interruptor da máquina de café está funcionando em baixa tensão (3,3V) e o ESP8266 não compartilha o chão com a máquina de café.
Sobre o sensor de temperatura e o controle do nível da água, a máquina de café Senseo possui esse recurso. Uso típico: Pressione o botão central para iniciar o processo de aquecimento, escolha o tamanho do café pressionando o botão "único" ou "duplo". Quando o processo de aquecimento termina, o café começa a fluir. Se não houver água suficiente, ele termina e um LED pisca.
O progresso que eu espero:
- A versão 1.0 será "Basta executar a máquina de café, tenho certeza de que está pronta". Eu controlo o botão de copo único e o botão de aquecimento.
A versão 2.0 será "Opere a máquina e me dê feedback". Eu tinha outro ESP8266, conectado ao LED de feedback (para que eu possa saber quando está esquentando e quando está sem água) e outro em uma escala para garantir que o existe um copo antes de executar a máquina de café. Também posso adicionar um alerta quando a máquina de café estiver funcionando para dizer ao usuário para alterar o conjunto.
A versão 3.0 será encontrar uma maneira de saber se o pod foi alterado, acompanhando a abertura do mecanismo com algum tipo de opção. Mas isso está fora do escopo do meu projeto no momento.