Índice:

Sensor de porta alimentado por bateria com integração de automação residencial, WiFi e ESP-NOW: 5 etapas (com fotos)
Sensor de porta alimentado por bateria com integração de automação residencial, WiFi e ESP-NOW: 5 etapas (com fotos)

Vídeo: Sensor de porta alimentado por bateria com integração de automação residencial, WiFi e ESP-NOW: 5 etapas (com fotos)

Vídeo: Sensor de porta alimentado por bateria com integração de automação residencial, WiFi e ESP-NOW: 5 etapas (com fotos)
Vídeo: Sonoff Ihost - Центр управления умным домом без доступа к интернет с Zigbee и Matter 2024, Julho
Anonim
Image
Image

Neste instrutível, mostro como fiz um sensor de porta alimentado por bateria com integração de automação residencial. Eu vi alguns outros sensores e sistemas de alarme legais, mas eu queria fazer um para mim.

Os meus objetivos:

  • Um sensor que detecta e relata uma rápida abertura de porta (<5 segundos)
  • Um sensor que detecta o fechamento da porta
  • Um sensor que funciona com bateria e funciona por alguns meses com bateria

O hardware e software são inspirados em

  • O trigboard de Kevin Darrah (TPL5111 e TPS73733).
  • Esse vídeo

Fiz um sensor para a porta da frente e a porta dos fundos. A única diferença é a posição do led e a chave de alimentação externa (no sensor da porta traseira).

Fiz várias melhorias durante o desenvolvimento em hardware e software, podem ser vistas nas fotos.

Suprimentos

Comprei os componentes eletrônicos da Aliexpress, as peças principais:

  • Bateria LiPo
  • TPS73733 LDO
  • TPL5111
  • Interruptor Reed
  • Mosfet do canal P: IRLML6401TRPBF
  • Magnético
  • Placa adaptadora de PCB para componentes SMD e outros.

Etapa 1: Hardware - Circuito

Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito
Hardware - Circuito

Veja os esquemas anexados para o circuito. Eu soldei as peças SMD em uma placa de PCB adaptadora e soldou todos os componentes a uma placa de dupla face perf. Eu conectei o ESP-01 por meio de cabeçalhos fêmeas, para poder removê-lo para programá-lo por meio do adaptador mostrado na etapa 3 deste Instructable.

O circuito funciona da seguinte maneira:

  • Quando a porta é aberta, o TPL5111 recebe um disparo no pino DELAY / M_DRV e ativa o TPS73733 LDO que alimenta o ESP-01. Para esta operação, o EN / ONE_SHOT deve ser puxado para baixo, consulte o datasheet do TPL5111.
  • Após a execução do programa (consulte a etapa Software), o ESP-01 envia um sinal Concluído ao TPL5111 que desativa o TPS73733, resultando em um estado de energia muito baixa para o TPL5111 e o TPS73733.

Eu uso interruptores reed com conexões NO e NC. Eu conectei o cabo NF, já que a chave reed deve fechar o circuito quando o ímã for removido (porta aberta) e abrir quando o ímã estiver próximo (porta fechada).

Para o sensor backdoor adicionei alguns condensadores e resistores quando descobri algumas instabilidades, porém a instabilidade foi causada pelo software (esp_now_init) como descobri mais tarde.

Etapa 2: Hardware - Gabinete

Hardware - Gabinete
Hardware - Gabinete
Hardware - Gabinete
Hardware - Gabinete
Hardware - Gabinete
Hardware - Gabinete

Eu projetei o invólucro no Autodesk Fusion360, inspirado neste vídeo do 'cara com sotaque suíço'.

Os arquivos STL das três partes:

  • Caixa
  • Tampa
  • Porta-ímã

são publicados na minha página Thingiverse.

Etapa 3: Software

Programas
Programas

O programa está no meu Github.

O fluxo do programa é mostrado na imagem. Veja meu outro Instructable para a explicação de como eu uso ESP-NOW.

Quando o módulo é ligado, ele primeiro tenta enviar a mensagem 'OPEN' via ESP-NOW. Se isso não funcionar, ele muda para uma conexão WiFi e MQTT.

Descobri que, pelo menos na minha configuração, a mensagem 'FECHADO' não foi enviada com sucesso via ESP-NOW, então removi isso do programa e só uso WiFi e MQTT.

Durante o tempo em que a porta está aberta e o módulo está esperando a porta fechar, ele usa esse tempo para se conectar ao WiFi e MQTT, então quando a porta está fechada, ele só precisa enviar a tensão medida e uma mensagem FECHADA e então ele vai dormir diretamente.

O programa verifica se a mensagem fechada é recebida pelo receptor por meio da escuta de uma mensagem MQTT no tópico certo.

Etapa 4: automação residencial e telegrama

Domótica e Telegrama
Domótica e Telegrama
Domótica e Telegrama
Domótica e Telegrama
Automação residencial e telegrama
Automação residencial e telegrama

Meus sensores de porta se comunicam com meu Openhab Home Automation no meu Raspberry Pi Zero.

Principais aplicações:

  • Leia o estado da porta: ABERTA ou FECHADA.
  • Alarme-me via telegrama se uma porta for aberta (se o alarme estiver ativado ou a função Monitorar estiver ativada).
  • Leia a última vez que uma porta foi aberta ou fechada.
  • Conte o número de aberturas que um sensor de porta pode manipular antes que a bateria se esgote.

Por exemplo, se estamos de férias e o vizinho chega para regar as plantas, recebo uma mensagem. Veja o vídeo na introdução.

Meus itens, regras e arquivos de sitemap do Openhab estão no meu Github. Nesses arquivos você também pode ver o meu sensor de porta do galpão, que usa uma chave de palheta com fio comum e uma pequena chave de contato (final) de uma impressora 3D na abertura da fechadura (veja as fotos).

Como usar a ação Telegram no Openhab é descrito aqui.

Etapa 5: melhorias e outras melhorias

Melhorias e outras melhorias
Melhorias e outras melhorias
Melhorias e outras melhorias
Melhorias e outras melhorias

Nos últimos meses, fiz a seguinte melhoria.

Lidar com aberturas de portas longas por meio de um sinal de pulso de comutação automática

No verão, deixamos a porta dos fundos aberta por algumas horas quando estamos em casa. O ESP-01 em execução com uma conexão WiFi drenaria desnecessariamente a bateria. Por isso incluí um botão liga / desliga para poder desligar o módulo nessas situações.

No entanto, isso às vezes resultava em um módulo permanentemente desligado (quando esqueci de ligá-lo) e uma bateria descarregada após algumas tardes de uma porta aberta e um módulo funcionando (Quando esqueci de desligá-lo).

Portanto, eu queria ser capaz de desligar o módulo por meio do software depois que o módulo estivesse ligado por um tempo predefinido (1 minuto).

No entanto, onde o pulso 'FEITO' do ESP-01 desligou o TPL5111 quando a porta foi fechada, descobri que o TPL5111 não foi desligado por um pulso 'FEITO' enquanto o pino DELAY / M_DRV estava ALTO. Este sinal HIGH no pino DELAY / M_DRV foi causado pela porta aberta e o contato NF do reed switch conectado à tensão da bateria.

Portanto, o sinal para o pino DELAY / M_DRV não deve ser continuamente ALTO, mas deve ser pulsado. Na folha de dados TPL5111, você pode descobrir que deve ser um pulso de> 20 ms. Fiz este sinal de comutação automática por meio de um mosfet de canal P, um capacitor e um resistor de 10K e 300K, consulte o esquema incluído.

Funciona da seguinte maneira:

  • Se o contato NF do interruptor reed estiver fechado, o Gate está BAIXO e o Mosfet está LIGADO, resultando em um sinal HIGH no pino DELAY / M_DRV que ativa o módulo.
  • O capacitor é carregado rapidamente, resultando em uma tensão crescente no Gate.
  • Após aproximadamente 20 ms, a voltagem no Gate é 97% da voltagem da bateria (300K / (300K + 10K) que é ALTA e o Mosfet é desligado, resultando em um sinal BAIXO no pino DELAY / M_DRV.
  • Quando o pino DELAY / M_DRV está BAIXO, o sinal DONE do ESP-01 resulta no desligamento do módulo.

Isso é implementado no software; um loop while não só verifica se a porta ainda está aberta, mas também se o módulo não está ligado por muito tempo. Se ligado por muito tempo, publica um valor NULL (estado indefinido da porta). Neste caso não sei se a porta está aberta ou fechada e não alcanço todos os objetivos mencionados na introdução, mas a duração da bateria é mais importante e na maioria das vezes abrimos a porta novamente mais tarde naquele dia, resultando em um estado fechado confirmado da porta.

É importante usar um Mosfet de canal P que seja adequado para a faixa de voltagem usada aqui. O Mosfet deve estar completamente ligado a um VGS de cerca de - 3,8 V e completamente desligado a um VGS de cerca de -0,2 V. Eu tentei vários Mosfets e descobri que um IRLML6401TRPBF funciona bem para este objetivo em combinação com os resistores de 10K e 300K. Um capacitor de 1 uF funciona bem para obter um comprimento de pulso de cerca de 20 ms. Um capacitor maior resulta em um pulso mais longo, o que não é necessário, uma vez que o TPL5111 foi ativado. Usei meu osciloscópio DSO150 para verificar as tensões e o comprimento de pulso.

Melhoria planejada: atualização OTA

Pretendo incorporar uma atualização OTA por meio do seguinte procedimento, que já está parcialmente incluído no software atual

  • Via Openhab de NodeRed eu publico uma mensagem retida de 'atualização' um 'tópico de atualização'.
  • Se o módulo estiver ligado e conectado ao servidor MQTT e inscrito no 'tópico de atualização', ele receberá a mensagem de atualização.
  • A mensagem de atualização impedirá o módulo de desligar e iniciar o
  • Através do site do HTTPUpdateServer, você pode atualizar o software.
  • Via Openhab de NodeRed eu publico uma mensagem 'vazia' retida um 'tópico de atualização'.

Melhoria planejada: desligamento do hardware após um tempo predefinido

No esquema atual, eu uso um resistor de 200K entre DELAY / M_DRV e GND do TPL5111. Isso liga o módulo por mais de 2 horas (ver 7.5.3. Da folha de dados TPL5111). No entanto, não quero o módulo ligado por tanto tempo, porque a bateria acaba. Se a solução de software (veja acima) não desligar o módulo, ou a mensagem de atualização não intencional colocar o módulo no modo de atualização, o módulo permanecerá ligado por um longo tempo.

Portanto, é melhor usar um resistor menor entre DELAY / M_DRV e GND do TPL5111, para que o módulo seja desligado após um curto período de tempo, por exemplo, um resistor de 50K resultando em um tempo de ativação de 7 minutos.

Recomendado: