Índice:

Sensor de porta sem fio - Ultra Low Power: 5 etapas
Sensor de porta sem fio - Ultra Low Power: 5 etapas
Anonim
Sensor de porta sem fio - Ultra Low Power
Sensor de porta sem fio - Ultra Low Power
Sensor de porta sem fio - Ultra Low Power
Sensor de porta sem fio - Ultra Low Power
Sensor de porta sem fio - Ultra Low Power
Sensor de porta sem fio - Ultra Low Power
Sensor de porta sem fio - Ultra Low Power
Sensor de porta sem fio - Ultra Low Power

Mais um sensor de porta !! Bem, a motivação para eu criar esse sensor foi que muitos que vi na internet tinham uma limitação ou outra. Alguns dos objetivos do sensor para mim são:

1. O sensor deve ser muito rápido - de preferência menos de 5 segundos

2. O sensor deve funcionar com uma bateria de íon-lítio de 3,7 V, pois tenho dezenas deles espalhados por aí

3. O sensor deve funcionar por muitos meses com uma única carga da bateria. Deve consumir <10uA no modo de hibernação

4. O sensor deve ser capaz de acordar para transmitir dados críticos como o status da bateria, mesmo quando a porta não é operada por um longo tempo.

5. O sensor deve transmitir dados para um tópico MQTT quando a porta é aberta, bem como quando a porta é fechada

6. O sensor deve consumir a mesma quantidade de energia, independentemente do estado da porta

Funcionamento do sensor:

O sensor possui 2 controladores principais. O primeiro é o minúsculo micro controlador ATiny 13A. O segundo é o ESP, que geralmente está em modo de espera e só desperta quando o ATiny o habilita. Todo o circuito também pode ser feito apenas pelo ESP, usando-o no modo de espera, mas a corrente que ele consome é muito maior do que a necessária para uma bateria durar meses, então o ATTiny vem em seu socorro. Ele serve apenas para acordar a cada N segundos, procurar um evento de porta ou um evento de verificação de saúde, se houver, ele mantém o pino CH_PD do ESP em HIGH e envia o sinal apropriado do tipo de evento para o ESP. Seu papel termina aí.

O ESP então assume, lê o tipo de sinal, conecta-se ao WiFi / MQTT, publica as mensagens necessárias, incluindo o nível da bateria e, em seguida, desliga-se trazendo o pino EN de volta para BAIXO.

Ao usar esses chips dessa forma, aproveito a baixa corrente de repouso do ATtiny e a corrente ociosa zero do ESP quando o chip é desabilitado por meio do pino CH_PD.

Suprimentos

Pré-req:

- Conhecimento de programação de ATTiny & ESP 01

- Conhecimento de componentes de soldagem em um PCB

ESP-01 (ou qualquer ESP)

ATTiny 13A - AVR

LDO 7333-A - Regulador de baixa tensão de queda

Resistores - 1K, 10K, 3K3

Capacitores: 100uF, 0,1 uF

Interruptor de botão de pressão, micro interruptor ON / OFF - (ambos opcionais)

Diodo - IN4148 (ou qualquer equivalente)

Bateria de íon-lítio

Reed Switch

Um caso para abrigar tudo

Solda, PCB etc

Etapa 1: Esquemas e código-fonte

Esquemas e código-fonte
Esquemas e código-fonte

Os esquemas são mostrados no diagrama em anexo.

Incluí um MOSFET de canal P para proteção contra polaridade reversa. Se você não precisa disso, pode omiti-lo. Qualquer MOSFET de canal P com um Rds ON baixo servirá.

No momento, o ESP não tem a capacidade do OTA, mas isso é para melhorias futuras.

Sensor de porta inteligente com código fonte

Etapa 2: Funcionamento do circuito

Fluxo de trabalho ATTiny

A mágica aqui acontece na forma como o ATTiny monitora a posição do interruptor da porta.

A opção normal seria conectar um resistor pull up ao switch e continuar monitorando seu estado. Isso tem a desvantagem de a corrente constante ser consumida pelo resistor pull up. A maneira como isso foi evitado aqui é que usei dois pinos para monitorar o switch em vez de um. Eu usei PB3 e PB4 aqui. PB3 é definido como entrada e PB4 como saída com um INPUT_PULLUP interno em PB3. Normalmente PB4 é mantido ALTO quando ATtiny está no modo de hibernação. Isso garante que não haja fluxo de corrente através do resistor pull up de entrada, independentemente da posição do interruptor reed. ou seja, Se a chave estiver fechada, PB3 e PB4 estão HIGH e, portanto, nenhuma corrente flui entre eles. Se a chave estiver aberta, não há caminho entre eles e, portanto, a corrente é zero. Quando o ATtiny é ativado, ele grava um LOW no PB4 e, em seguida, verifica o estado do PB3. Se PB3 estiver ALTO, o interruptor reed está ABERTO, caso contrário, está FECHADO. Em seguida, ele grava de volta um HIGH no PB4.

A comunicação entre o ATtiny e o ESP acontece através de dois pinos PB1 / PB2 conectados ao Tx / RX do ESP. Eu defini o sinal como

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (Verificação de saúde)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== NÃO UTILIZADO

Além de enviar o sinal para o ESP, ele também envia um pulso HIGH no PB0, que é conectado ao pino CH_PD do ESP. Isso desperta o ESP. A primeira coisa que o ESP faz para manter GPIO0 HIGH, que está conectado ao CH_PD, garantindo assim sua alimentação mesmo se o ATTiny tirar o PB0 HIGH. O controle agora está com o ESP para determinar quando ele deseja desligar.

Em seguida, ele se conecta a WiFi, MQTT, posta a mensagem e se desliga gravando LOW no GPIO0.

ESP 01 Fluxo de trabalho:

O fluxo do ESP é direto. Ele acorda e lê os valores dos pinos Tx / Rx para determinar que tipo de mensagem deve ser postada. Conecta-se a WiFi e MQTT, posta a mensagem e desliga-se.

Antes de desligar, ele verifica novamente os valores dos pinos de entrada para ver se eles mudaram desde a última leitura. Isto é feito para evitar uma rápida abertura e fechamento da porta. Se você não tiver essa verificação, em alguns casos você poderá perder o fechamento da porta se ela for fechada em 5 a 6 segundos após a abertura. Um cenário prático da porta sendo aberta e fechada dentro de 2 segundos ou mais é bem capturado pelo loop while que continua postando as mensagens, desde que o estado atual da porta seja diferente do anterior. O único cenário que pode faltar para registrar todos os eventos de abrir / fechar é quando a porta é repetidamente aberta / fechada dentro de uma janela de 4-5 segundos, o que é um caso muito improvável - provavelmente o caso de alguma criança brincando com a porta.

Etapa 3: verificação de saúde

Eu também precisava de uma forma de ter uma mensagem de verificação de integridade do ESP, onde ele envia o nível da bateria do ESP para garantir que o sensor está funcionando bem sem inspeção manual. Para isso o ATTiny envia um sinal WAKE_UP a cada 12 horas. Ele pode ser configurado através da variável WAKEUP_COUNT no código ATtiny. Isso é muito útil para portas ou janelas que raramente são abertas e, portanto, você pode nunca saber se algo está errado com o sensor ou sua bateria.

Caso você não precise da funcionalidade de verificação de integridade, todo o conceito de uso do ATTiny não é necessário. Nesse caso, você pode encontrar outros projetos que as pessoas criaram, nos quais o fornecimento para o ESP é alimentado por meio de um MOSFET e, assim, você pode atingir o consumo de corrente zero quando a porta não está sendo operada. Há outras coisas a serem cuidadas, como o empate atual para ser o mesmo na posição de porta aberta e porta fechada - pois em algum lugar eu vi um design que fazia uso de uma chave de palheta de 3 estados em vez dos 2 estados usuais.

Etapa 4: medições de energia e vida útil da bateria

Eu medi o consumo de corrente do circuito e leva cerca de 30uA ao dormir e ao redor. Indo pelas planilhas de dados da ATTiny, deve ser em torno de 1-4 uA para todo o circuito, incluindo a corrente quiescente do LDO, mas minhas medições mostram 30. O MOSFET e o LDO consomem corrente insignificante.

Portanto, uma bateria de 800mAH deve durar muito tempo. Não tenho estatísticas exatas, mas tenho usado em 2 das minhas portas por mais de um ano e cada célula 18650 com cerca de 800mAH restante dura cerca de 5-6 meses na minha porta principal, que abre e fecha às pelo menos 30 vezes ao dia. O da porta do telhado, que abre poucas vezes por semana, dura de 7 a 8 meses.

Etapa 5: melhorias futuras

1. O ESP não reconhece a entrega da mensagem MQTT. O programa pode ser aprimorado assinando o tópico em que publica a mensagem para confirmar a entrega ou uma biblioteca MQTT assíncrona pode ser usada para postar uma mensagem com QoS 1.

2. Atualização OTA: O código ESP pode ser modificado para ler um tópico MQTT para uma atualização e, assim, entrar em um modo OTA para receber um arquivo.

3. ESP01 pode ser substituído por ESP-12 para obter acesso a mais PINs de entrada e, assim, pode anexar mais sensores ao mesmo. Nesse caso, a comunicação através do método de 2 bits não é possível. Isso pode então ser melhorado para implementar a comunicação I2C entre ATtiny e ESP. Isso é um pouco complicado, mas viável. Eu o tenho funcionando em outra configuração, onde um ATTiny envia valores de codificador rotativo para o ESP sobre a linha I2C.

4. O circuito de corrente monitora o Vcc interno do ESP. Se usarmos o ESP12, ele pode ser modificado para ler o nível real da bateria por meio do pino ADC.

5. No futuro, também postarei uma modificação para isso, que pode ser usado como um sensor autônomo, sem a necessidade de um MQTT ou qualquer sistema de automação residencial. O sensor funcionará de forma independente e pode fazer uma chamada telefônica quando acionado - é claro que é necessária uma conexão com a Internet para isso.

6. E a lista continua …

7. Proteção reversa da bateria - CONCLUÍDO (as imagens reais do dispositivo são antigas e, portanto, não refletem o MOSFET)

Recomendado: