Índice:

Alarme de água IoT: 5 etapas (com imagens)
Alarme de água IoT: 5 etapas (com imagens)

Vídeo: Alarme de água IoT: 5 etapas (com imagens)

Vídeo: Alarme de água IoT: 5 etapas (com imagens)
Vídeo: Acidente de trabalho em máquina 2024, Julho
Anonim
Alarme de água IoT
Alarme de água IoT

Recentemente, experimentei um backup de ralos de cozinha. Se eu não estivesse em casa na hora, isso teria causado danos ao piso e à parede de gesso do meu apartamento. Felizmente, eu estava ciente do problema e pronto para tirar a água com um balde. Isso me fez pensar em comprar um alarme de inundação. Descobri muitos produtos acessíveis na Amazon, mas aqueles com conectividade com a Internet tiveram uma porcentagem significativa de avaliações negativas, principalmente por causa de problemas com serviços de notificação proprietários. É por isso que decidi fazer meu próprio alarme de água IoT que usaria meios de notificação confiáveis de minha escolha.

Etapa 1: Princípio de Operação

Princípio da Operação
Princípio da Operação

O alarme tem um microcontrolador AVR ATtiny85 como cérebro. Ele faz leituras de tensão da bateria e do sensor de água e os compara com um valor predefinido para detectar a presença de água ou uma condição de bateria fraca.

O sensor de água consiste simplesmente de dois fios colocados aproximadamente 1 mm de distância. Um dos fios é conectado a 3,3 V e o outro está conectado a um pino sensor no microcontrolador, que também é conectado ao aterramento por meio de um resistor de 0,5 MOhm. Normalmente, a resistência entre os fios do sensor é muito alta (bem acima de 10 MOhm), então o pino de detecção é puxado totalmente para 0 V. No entanto, quando há água presente entre os fios, a resistência cai para menos de 1 MOhm, e o pino sensor vê alguma voltagem (no meu caso cerca de 1,5 V). Quando o ATtiny85 detecta essa tensão no pino sensor, ele ativa um MOSFET para ligar uma campainha e envia o sinal de despertar para o módulo ESP8266 que é responsável por enviar alertas (e-mail e notificações push). Depois de um zumbido minuto, o alarme é desarmado e pode ser reiniciado apenas desligando e ligando.

Esta unidade funciona com duas células alcalinas ou NiMH. O microcontrolador fica hibernando na maior parte do tempo para conservar as baterias, acordando intermitentemente para verificar o sensor de água e também a tensão das baterias. Se as baterias estiverem fracas, o microcontrolador ativa o módulo ESP8266 para enviar um aviso de bateria fraca. Após o aviso, o alarme é desarmado para evitar descarga excessiva da bateria.

Como o módulo ESP8266 é responsável por enviar avisos de bateria fraca e também alertas de inundação, ele requer um sinal de controle de ATiny85. Devido ao número limitado de pinos disponíveis, este sinal de controle é gerado pelo mesmo pino responsável pela indicação do LED da bateria. Durante a operação normal (o alarme está armado e as baterias estão carregadas), o LED pisca de forma intermitente. Quando a condição de bateria fraca é detectada, o LED acende para fornecer um sinal alto ao pino RX do módulo ESP. Se for detectada água, o LED da bateria ficará apagado enquanto o ESP8266 estiver ativado.

Etapa 2: Projeto e Montagem

Projeto e Montagem
Projeto e Montagem
Projeto e Montagem
Projeto e Montagem
Projeto e Montagem
Projeto e Montagem

Eu projetei o circuito para ser construído em um protoboard de dupla face 4x6 cm usando principalmente peças 0805 SMD. Os esquemas apresentados são baseados nesta construção, mas podem ser facilmente adaptados para componentes do orifício de passagem (dica: para minimizar o espaço, soldar resistores através do orifício verticalmente).

As seguintes partes são necessárias:

- Resistores: 330 Ω x 1; 470 Ω x 1; 680 Ω x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - Um capacitor de cerâmica de 10 µF - Um MOSFET de canal N de nível lógico (por exemplo, RFP30N06LE ou AO3400) - Um LED vermelho e um amarelo (ou outras cores, se desejar).- Conectores de terminal de parafuso de dois fios x 3 (eles não são absolutamente necessário, mas tornam mais fácil conectar e desconectar periféricos durante o teste) - Uma campainha piezoelétrica alta que é boa para 3,3 V- Um microcontrolador ATtiny85 (versão PDIP) - Um soquete PDIP de 8 pinos para o microcontrolador- Um módulo ESP-01 (pode ser substituído por outro módulo baseado em ESP8266, mas haverá muitas mudanças no layout nesse caso) - Um conversor boost de 3,3 V DC-DC capaz de fornecer correntes de 200 mA (500 mA burst) a 2,2 V entrada. (Eu recomendo https://www.canton-electronics.com/power-converter … por causa de sua corrente quiescente ultrabaixa) - Um conector fêmea de 3 pinos- Dois conectores fêmea de 4 pinos ou um conector 2x4- fios sólidos 22 AWG para o sensor de água - fio trançado 22 AWG (ou outro tipo de fio fino exposto para criar traços)

Eu recomendo os valores de resistor listados acima, mas você pode substituir a maioria deles por valores semelhantes. Dependendo do tipo de LEDs que você deseja usar, pode ser necessário ajustar os valores do resistor limitador de corrente para obter o brilho desejado. O MOSFET pode ser através do orifício ou SMT (SOT23). Apenas a orientação do resistor de 330 Ohms é afetada pelo tipo de MOSFET. Um fusível PTC (por exemplo, classificado para 1 A) é recomendado se você estiver planejando usar este circuito com baterias NiMH. No entanto, não é necessário com baterias alcalinas. Dica: as peças necessárias para este alarme podem ser adquiridas mais barato no ebay ou aliexpress.

Além disso, você precisará de uma placa de ensaio, vários resistores de 10k através do orifício, vários fios de jumper macho-macho e fêmea-macho ("dupont") e um adaptador USB-UART para programar o módulo ESP-01.

O sensor de água pode ser feito de várias maneiras, mas a mais simples são dois fios 22 AWG com extremidades expostas (1 cm de comprimento) espaçados aproximadamente 1 mm. O objetivo é ter uma resistência inferior a 5 MΩ entre os contatos do sensor quando houver água.

O circuito é projetado para economia máxima da bateria. Ele consome apenas 40-60 µA no regime de monitoramento (com o LED de energia removido no módulo ESP-01). Assim que o alarme for disparado, o circuito consumirá 300-500 mA (na entrada de 2,4 V) por um segundo ou menos, e depois disso a corrente cairá abaixo de 180 mA. Assim que o módulo ESP terminar de enviar notificações, o consumo de corrente cairá para menos de 70 mA até que a campainha seja desligada. Então o alarme se desarmará e o consumo de corrente ficará abaixo de 30 µA. Assim, um conjunto de pilhas AA será capaz de alimentar o circuito por muitos meses (provavelmente mais de um ano). Se você usar um conversor boost diferente, digamos com uma corrente quiescente de 500 µA, as baterias precisarão ser trocadas com muito mais frequência.

Dicas de montagem:

Use um marcador permanente para rotular todos os vestígios e componentes no protoboard para facilitar a soldagem. Recomendo proceder na seguinte ordem:

- LEDs SMT do lado superior e pontes de fio isoladas

- MOSFET do lado superior (nota: se você tiver um MOSFET SOT-23, coloque-o na diagonal como na foto. Se você estiver usando um MOSFET com orifício de passagem, coloque-o horizontalmente com o pino da porta na posição I3).

- lado superior através das peças do orifício (nota: a campainha não é soldada e nem mesmo precisa ser montada no PCB)

- peças SMT do lado reverso e traços (por exemplo, fios individuais de fio AWG22)

Etapa 3: Firmware

Código C para ATtiny85

Main.c contém o código que precisa ser compilado e enviado ao microcontrolador. Se for usar uma placa Arduino como programador, você pode encontrar o diagrama de fiação neste tutorial. Você precisa seguir apenas as seguintes seções (ignore o resto):

- Configurando o Arduino Uno como um ISP (Programação no sistema)

- Conectando ATtiny85 com Arduino Uno.

Para compilar e fazer upload do firmware, você precisará do CrossPack (para Mac OS) ou do conjunto de ferramentas AVR (para Windows). O seguinte comando deve ser executado para compilar o código:

avr-gcc -Os -mmcu = attiny85 -c main.c; avr-gcc -mmcu = attiny85 -o main.elf main.o; avr-objcopy -j.text -j.data -O ihex main.elf main.hex

Para fazer upload do firmware, execute o seguinte:

avrdude -c arduino -p attiny85 -P /dev/cu.usbmodem1411 -b 19200 -e -U flash: w: main.hex

Em vez de "/dev/cu.usbmodem1411", você provavelmente precisará inserir a porta serial à qual seu Arduino está conectado (você pode encontrá-la no IDE do Arduino: Porta de ferramentas).

O código contém várias funções. deep_sleep () faz com que o microcontrolador entre em um estado de energia muito baixa por aproximadamente 8 segundos. read_volt () é usado para medir as tensões da bateria e do sensor. A tensão da bateria é medida contra a referência de tensão interna (2,56 V mais ou menos alguns por cento), enquanto a tensão do sensor é medida contra Vcc = 3,3 V. As leituras são comparadas com BATT_THRESHOLD e SENSOR_THRESHOLD definidos como 932 e 102 respectivamente, que correspondem a ~ 2,3 e 0,3 V. Você pode reduzir o valor limite da bateria para aumentar a vida útil da bateria, mas isso não é recomendado (consulte Considerações sobre bateria para obter informações detalhadas).

activate_alarm () notifica o módulo ESP sobre a detecção de água e soa a campainha. low_batt_notification () notifica o módulo ESP que a bateria está fraca e também aciona a campainha. Se você não deseja ser acordado no meio da noite para trocar a bateria, remova "| 1 <" em low_batt_notification ().

Esboço do Arduino para ESP-01

Escolhi programar o módulo ESP usando Arduino HAL (siga o link para instruções de configuração). Além disso, usei as duas bibliotecas a seguir:

ESP8266 Enviar Email por Górász Péter

ESP8266 Pushover pela equipe do Arduino Hannover

A primeira biblioteca se conecta a um servidor SMTP e envia um alerta para o seu endereço de e-mail. Basta criar uma conta do gmail para o seu ESP e adicionar as credenciais ao código. A segunda biblioteca envia notificações push através do serviço Pushover (as notificações são gratuitas, mas você tem que pagar uma vez para instalar o aplicativo em seu telefone / tablet). Baixe as duas bibliotecas. Coloque o conteúdo da biblioteca Send Email em sua pasta de esboço (o arduino irá criá-lo quando você abrir o esboço do arduino pela primeira vez). Instale a biblioteca Pushover por meio do IDE (Sketch -> Incluir Biblioteca -> Adicionar biblioteca. ZIP).

Para programar o módulo ESP-01, você pode seguir o seguinte tutorial: https://www.allaboutcircuits.com/projects/breadbo… Não há necessidade de se preocupar em resoldar uma fileira de pinos conforme mostrado no guia - basta usar duende macho-fêmea fios para conectar os pinos do módulo à placa de ensaio. Não se esqueça de que o conversor boost e o adaptador USB-UART devem compartilhar o solo (nota: você pode ser capaz de usar a saída de 3,3 V do adaptador USB-UART em vez do conversor boost, mas provavelmente não o fará ser capaz de produzir corrente suficiente).

Etapa 4: Considerações sobre a bateria

O código de firmware fornecido é pré-configurado para enviar um aviso de bateria fraca e desligar em ~ 2,3 V. Este limite é baseado na suposição de que duas baterias NiMH são usadas em série. Não é recomendado descarregar qualquer célula de NiMH individual abaixo de 1 V. Supondo que ambas as células tenham capacidade e características de descarga iguais, ambas serão cortadas em ~ 1,15 V - bem dentro da faixa segura. No entanto, as células NiMH que têm sido usadas por muitos ciclos de descarga tendem a diferir em capacidade. Até 30% de diferença na capacidade pode ser tolerada, pois ainda resultaria no ponto de corte da célula de tensão mais baixa em torno de 1 V.

Embora seja possível reduzir o limite de bateria fraca no firmware, isso removeria a margem de segurança e poderia resultar em descarga excessiva da bateria e danos, enquanto apenas um aumento marginal na vida útil da bateria é esperado (uma célula NiMH é> 85% descarregado em 1,15 V).

Outro fator que precisa ser levado em consideração é a capacidade do conversor de reforço de fornecer pelo menos 3,0 V (2,5 V de acordo com evidências anedóticas) em corrente de pico de 300-500 mA com baterias fracas. A baixa resistência interna das baterias NiMH causa apenas uma queda desprezível de 0,1 V nas correntes de pico, então um par de células NiMH descarregadas para 2,3 V (circuito aberto) será capaz de fornecer pelo menos 2,2 V para o conversor de reforço. No entanto, é mais complicado com baterias alcalinas. Com um par de baterias AA instaladas em 2,2-2,3 V (circuito aberto), uma queda de tensão de 0,2-0,4 V é esperada em correntes de pico. Embora eu tenha verificado que o circuito funciona com o conversor boost recomendado com apenas 1,8 V fornecido em correntes de pico, isso provavelmente faz com que a tensão de saída afunde momentaneamente abaixo do valor sugerido pelo Espressiff. Assim, o limite de corte de 2,3 V deixa pouca margem de segurança com baterias alcalinas (tenha em mente que uma medição de tensão realizada pelo microcontrolador é precisa apenas em mais ou menos alguns por cento). Para garantir que o módulo ESP não sofra falhas quando as baterias alcalinas estiverem fracas, recomendo aumentar a tensão de corte para 2,4 V (#define BATT_THRESHOLD 973). A 1,2 V (circuito aberto), uma pilha alcalina é cerca de 70% descarregada, o que é apenas 5-10 pontos percentuais menor do que o grau de descarga a 1,15 V por pilha.

Tanto as células NiMH quanto as alcalinas apresentam vantagens e desvantagens para esta aplicação. As baterias alcalinas são mais seguras (não pegam fogo se estiverem em curto) e têm uma taxa de autodescarga muito mais baixa. No entanto, as baterias NiMH garantem uma operação confiável do ESP8266 em um ponto de corte inferior, graças à sua baixa resistência interna. Mas, em última análise, qualquer tipo pode ser usado com algumas precauções, então é apenas uma questão de preferência pessoal.

Etapa 5: Isenção de responsabilidade legal

Este circuito foi projetado por um amador não profissional apenas para aplicações de hobbies. Este design é compartilhado de boa fé, mas sem qualquer garantia. Use-o e compartilhe com outras pessoas por sua própria conta e risco. Ao recriar o circuito, você concorda que o inventor não será responsabilizado por quaisquer danos (incluindo, mas não se limitando a, danos físicos e pessoais) que possam ocorrer direta ou indiretamente por mau funcionamento ou uso normal deste circuito. Se as leis de seu país anulam ou proíbem esta renúncia de responsabilidade, você não pode usar este design. Se você compartilha este projeto ou um circuito modificado baseado neste projeto, você deve creditar o inventor original, indicando o url deste instrutível.

Recomendado: