Índice:

Controle de cabeceira de cama MQTT sem fio: 5 etapas (com imagens)
Controle de cabeceira de cama MQTT sem fio: 5 etapas (com imagens)

Vídeo: Controle de cabeceira de cama MQTT sem fio: 5 etapas (com imagens)

Vídeo: Controle de cabeceira de cama MQTT sem fio: 5 etapas (com imagens)
Vídeo: COMO INSTALAR FITA DE LED NA CABECEIRA DA CAMA? 2024, Novembro
Anonim
Controle de cabeceira de cama MQTT sem fio
Controle de cabeceira de cama MQTT sem fio
Controle de cabeceira de cama MQTT sem fio
Controle de cabeceira de cama MQTT sem fio

Há alguns anos, compramos uma nova cama de espuma com memória e, como acontece com a maioria das camas, era necessário comprar também uma de suas "bases aprovadas" para manter a garantia. Portanto, optamos pela base menos cara que também incluía a capacidade de levantar e abaixar a cabeceira da cama. Poucos dias depois, nosso colchão e nossa base barata American Adjustables com controles com fio (um para cada lado da cama) foram entregues e montados.

A primeira coisa que notamos foi que os cabos do showroom que eram bons e longos não eram o que tínhamos em nossa cama! Os do showroom tinham extensões. Essas extensões NÃO foram incluídas com nossa cama e, interessante o suficiente, ninguém estava interessado em nos vender um par de cabos de extensão. Isso nos deixou com controles que mal alcançavam o topo da cama e que tínhamos que virar para usar.

Você recebe o que você paga

Após cerca de 6 meses, notamos que os colares de alívio de tensão em um dos controles estavam começando a rasgar. Poucos meses depois - fio desencapado. Avançando cerca de um ano, um dos controles não funciona mais e o outro está ficando um pouco inquieto.

Novamente, ninguém estava interessado em nos vender peças de reposição. Então me dei conta!

Espere um minuto! Não estou construindo um sistema de automação residencial e controle?!?

Etapa 1: descoberta

Descoberta
Descoberta
Descoberta
Descoberta

Eu queria ver o que eu poderia fazer com o que tinha, então peguei o appart do controlador com defeito e uau! havia muita porcaria lá! Para que servia tudo isso? Eu dei um passo para trás e apenas olhei para as linhas que entravam e saíam. Pude ver que havia uma linha de alimentação de 12 volts e uma linha de aterramento. As outras duas linhas pareciam linhas de sinal para os dois botões para cima e para baixo. Então, arrisquei e simplesmente conectei a fonte de 12v à linha de sinal "para cima". A cama começou a se mover! Em seguida, movi meu fio de jumper para a linha de sinal "para baixo" e a cama caiu!

Na caixa existem contatos para mais 4 linhas de sinal e mais 4 botões. Meu melhor palpite é que esta placa controladora é usada em todos os seus modelos de base com fio e eles apenas colocam placas frontais diferentes sobre a placa, conforme necessário. Então, eu tinha uma teoria de trabalho. Testei a linha de suprimento para ver se ela afundava durante o uso ou apresentava picos a qualquer momento - não. Havia muito pouco consumo de corrente nas linhas de sinal, mas elas exigiam 12 volts para ativar o motor.

Etapa 2: Design

Projeto
Projeto
Projeto
Projeto
Projeto
Projeto
Projeto
Projeto

Portanto, uma simples conexão de contato entre o VCC e o pino de sinal é tudo o que é necessário, mas como isso é feito no meu sistema. Dois relés seriam necessários para os contatos e um ESP8266 funcionaria para o controlador sem fio. Como os relés podem exigir mais corrente do que os pinos digitais podem fornecer, é melhor usar um optoisolador entre o controlador e o relé. Isso permitirá que um pequeno sinal ligue uma chave de corrente mais alta (neste caso, um transistor acionado por luz) e ative com segurança a bobina do relé. Além disso, um optoisolador isola o controlador de quaisquer picos que possam se formar quando a bobina do relé é liberada e o campo magnético entra em colapso. Felizmente, existem módulos de relé que já contêm todos esses circuitos e por um preço muito baixo.

A cama será a fonte de alimentação do controlador e para lidar com os 12 volts fornecidos, precisaremos de um conversor de dólar variável. Um muito barato foi relacionado abaixo e funciona lindamente. A linha de 12 V e as linhas GND se conectam ao lado de entrada do conversor e o lado regulado de 5 volts se conecta ao VCC do NodeMCU e ao pino VCC no módulo de relé. O aterramento (-) no conversor se conecta aos pinos GND em o módulo de relé e o NodeMCU.

O NodeMCU se conecta a IN1 usando D1 (GPIO5) e IN2 usando D2 (GPIO4). A linha de sinal para cima na cama se conecta ao terminal de parafuso normalmente aberto para o relé 1 e a linha de sinal para baixo se conecta ao conector do bloco de terminal normalmente aberto do relé 2. Você precisará conectar o fio de 12 V que está conectado ao lado da entrada do conversor Buck também à outra conexão do bloco de terminais para AMBOS os relés 1 e 2.

Peças

  • 1 - NodeMCU
  • 1 - Módulo de relé duplo com isolamento de corrente
  • 1 - Conversor de buck de entrada / saída variável
  • 1 - Placa de ensaio PCB
  • Fio de núcleo de cobre trançado calibre 22
  • 2 - parafusos M3x 8

Etapa 3: Gabinete

Gabinete
Gabinete

O gabinete pode ser encontrado aqui:

Projetei um invólucro simples com Tinkercad que permite que o cabo de controle da cama entre na caixa entre os suportes de alívio de tensão dentro da caixa. Existem slots para um zip tie aqui que ajudariam a evitar que o cabo deslizasse, mas no meu caso o ajuste era muito confortável e não precisava dele. A tampa é aparafusada com 2 parafusos M3x 8. Eu recomendaria fazer o upload do código e testar o sistema antes de montá-lo na caixa.

Usei cola quente para segurar as placas no lugar, mas isso pode não ser necessário.

Etapa 4: Código

O código pode ser encontrado aqui:

NOTA: Este projeto usa a biblioteca pubsubclient que pode ser adicionada no Library Manager no Arduino IDE

O código aqui é bastante básico e foi projetado com base no tipo Cover MQTT no Home Assistant. A ideia aqui é simples: quando você pressiona o botão para cima ou para baixo no assistente de casa, o relé apropriado fecha até que o comando de parada seja recebido OU o sistema atinge um tempo máximo de ativação e para.

O tempo máximo é uma medida de segurança caso o usuário esqueça de interrompê-lo ou se o comando foi enviado acidentalmente e é improvável que alguém o interrompa. Não queremos o relé ligado indefinidamente ou quaisquer problemas inesperados com a cama devido ao fechamento prolongado do contato.

No meu código, esse tempo limite é de 20 segundos e pode ser ajustado no bloco de variável global na parte superior do código.

Uma segunda precaução de segurança foi sempre certificar-se de que se eu estiver ativando um relé, uma desativação intencional do outro é sempre chamada, mesmo se o último estado já estiver desligado. Não quero enviar 12v para ambas as linhas de sinal, pois não sei o que isso fará com a cama.

Fora isso, a cama divulga que está disponível a cada 60 segundos e pronto. Sem sinos ou assobios aqui. Como a cama não tem feedback de posição, não pude enviar de volta para o Assistente Doméstico.

Etapa 5: Exemplo de integração

Exemplo de integração
Exemplo de integração
Exemplo de integração
Exemplo de integração

O código que escrevi usa MQTT para se comunicar por WiFi e, portanto, pode se comunicar com qualquer hub de automação ou dispositivo que usa MQTT. Eu uso o Home Assistant que possui um corretor MQTT integrado. Abaixo está um exemplo da minha configuração HA.

Em HA, tenho um arquivo covers.yaml com a seguinte definição:

- plataforma: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control / cmd" disponibilidade_topic: "master_bed_control / disponibilidade" qos: 0 retém: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " offline "otimista: verdadeiro

Isso me dá uma entrada em minha interface HA com um botão para cima / parar / para baixo definido com a ação conforme descrito acima.

Além disso, defini dois botões em meu Painel de controle de cabeceira (Instrutível / Postagem no blog) para levantar e abaixar a cabeceira. Os botões no painel de controle são definidos como sensores MQTT:

- plataforma: mqtt

state_topic: "bedside_cp1 / button5" name: ícone "Bedside CP1 Button 5": mdi: circle

- plataforma: mqtt

state_topic: "bedside_cp1 / button6" name: ícone "Bedside CP1 Button 6": mdi: circle

… E 4 regras de automação para quando cada botão é pressionado e solto. Quando pressionado, o comando de subir ou descer é enviado para a cama dependendo de qual botão foi ativado, quando o botão é liberado, o comando de parada é enviado:

- id: '1548308650383'

alias: MBR Bedside CP Button 5a trigger: - entity_id: sensor.bedside_cp1_button_5 de: 'Off' platform: state to: 'On' condition: action: - data: entity_id: 'cover.master_bed_headboard' serviço: cover.open_cover - id: '1548308758911' alias: MBR Botão CP 5b de cabeceira acionador: - entity_id: sensor.bedside_cp1_button_5 de: 'On' platform: state to: 'Off' condição: action: - data: entity_id: serviço 'cover.master_bed_headboard': cover.stop_cover - id: '1548308863495' alias: Botão CP de cabeceira do MBR 6a gatilho: - entity_id: sensor.bedside_cp1_button_6 de: 'Off' platform: state to: 'On' condição: action: - data: entity_id: ' cover.master_bed_headboard 'service: cover.close_cover - id:' 1548308911467 'alias: MBR Bedside CP Botão 6b acionador: - entity_id: sensor.bedside_cp1_button_6 de:' On 'plataforma: estado para:' Off 'condição: ação: - data: entity_id: 'cover.master_bed_headboard' serviço: cover.stop_cover

Recomendado: