Índice:

Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 etapas (com imagens)
Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 etapas (com imagens)

Vídeo: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 etapas (com imagens)

Vídeo: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 etapas (com imagens)
Vídeo: She's flawed | Alternate Watch #analoghorror #mandelacatalog #shorts 2024, Novembro
Anonim
Crawl Space Monitor (também conhecido como: No More Frozen Pipes !!)
Crawl Space Monitor (também conhecido como: No More Frozen Pipes !!)

A água para minha casa vem do meu poço através de um espaço de rastreamento não aquecido. Todas as canalizações da cozinha e casa de banho também passam por este espaço. (O encanamento interno foi uma ideia secundária em meados dos anos 70 nesta casa!) Tenho usado lâmpadas de calor em plugues termostáticos de "tanque de estoque" para manter a temperatura acima de zero. Houve alguns problemas significativos com este arranjo: 1 - Sem visibilidade. A primeira indicação de lâmpadas queimadas são canos congelados! 2 - Às vezes, os plugues não fechavam. Isso trouxe surpresas desagradáveis para a conta de luz.3 - Sem granularidade. Eu mantive 3 lâmpadas "online" (750 watts no total) e foi uma solução tudo ou nada. (2 lâmpadas nem sempre agüentavam.) Depois de conhecer o Arduino e ver algumas das coisas que outras pessoas estavam fazendo com ele, decidi que daria uma chance. Eu vou admitir que eu descaradamente peguei e ajustei códigos de amostra de projetos de outras pessoas para fazer este trabalho, embora no final eu tenha reescrito quase tudo. Inicialmente, eu construí esta "Estação meteorológica WiFi" que encontrei em Adafruit.com e modificou-o. Em vez de atualizar um site, usei Amazon Web Services para me enviar atualizações de status por SMS. Também adicionei o controle de alguns relés 110V (https://www.adafruit.com/products/268). Eu então fiquei "esperto" e decidi "reforçá-lo" - bem - algo encurtou alguma coisa e eu obtive uma baforada da fumaça azul mágica. Tudo fritou… Não tendo outro breakout CC3000 WiFi, fiz diferente desta vez. Eu o construí para ser monitorado interativamente via interface serial e, em seguida, adicionei uma interface FTDI Bluetooth EZ-Link. (Chega de arrastar o laptop para debaixo da casa para atualizações de software !!!) Eu também construí uma interface Python que se conecta à unidade via Bluetooth, consulta regularmente e exibe informações de status no meu Mac. (Há também uma "interface humana" que pode ser acessada por qualquer software de emulação de terminal.) Como resultado da reescrita e remoção de todo o código WiFi e RTC, o projeto diminuiu de tamanho de mais de 29K para apenas 10K. Ele também melhorou a confiabilidade, a ponto de o watchdog de hardware não ter sido acionado nas duas semanas em que esteve em execução e tenho feito ajustes.

17/02/16 Atualização / nota: em uma tentativa de obter a formatação adequada em algum código (especialmente o recuo do código Python), as coisas foram de feias a inutilizáveis. Tenho certeza de que o problema está em meu fim em algum lugar e vou me esforçar para resolvê-lo. Até então, eu adicionei links para os arquivos de código por meio do DropBox. Eles devem ser acessíveis a qualquer pessoa. Se não, por favor me avise para que eu possa entregá-los de outra forma!

Etapa 1: Problemas para resolver

O sistema precisava fazer o seguinte para mim: 1 - monitorar a temperatura no espaço de rastreamento.2 - ligar as lâmpadas de calor conforme necessário para manter a temperatura acima de zero.3 - quando não estiver operando, teste as lâmpadas periodicamente e me dê visibilidade de seu status.4 - dê-me visibilidade da temperatura e do status do sistema, incluindo: - o sistema está funcionando? - qual é a temperatura AGORA? - qual é o mais frio que a temperatura tem? - quantas lâmpadas funcionaram? - quantas lâmpadas testam bem? - qual é o meu tempo total em "minutos leves" (também conhecido como "tempo de queima")? 5 - faça todas as opções acima sem precisar rastejar para baixo da casa !!! Decidi que a maneira mais fácil de testar o funcionamento da lâmpada era com um sensor de luz. Algumas outras questões que eu queria abordar eram o tempo de ciclo nas luzes. Muito lento e estou queimando eletricidade desnecessária. Muito rápido, e corro o risco de queimar todos eles ao ligar e desligar com o aquecimento e resfriamento relacionados.

Etapa 2: O Hardware

O Hardware
O Hardware

2 lâmpadas de calor de 250 watts1 lâmpada de trabalho de 500 watts (uma das minhas lâmpadas de calor desapareceu, então este é um substituto) Arduino UnoDHT22 Sensor de temperatura / umidade GA1A12S202 sensor de luz Relés PowerSwitch 110VBluefruit EZ-Link Serial Interface & Programmer Caixa de alta tecnologia) Prensa-cabos Placa de acrílico de 1/2 tamanho para placa de ensaio e fios de jumper Arduino. escreveu um instrutível separado sobre isso, então não vou repetir aqui. O pigtail Coleman foi um bom achado, pois me deu 4 tomadas para minhas lâmpadas de calor MAIS uma tomada para a fonte de alimentação do Arduino sem quaisquer divisores ou réguas de energia adicionais envolvidos. Avaliado em 15 amperes completos com um interruptor e um disjuntor interno, ele poderia lidar com tudo que eu poderia extrair em uma única tomada.

Etapa 3: a abordagem

Embora o sistema seja um aplicativo criado para ficar esperando e para fazer algumas coisas de forma relativamente lenta, o que eu não queria fazer era construir um sistema onde o controlador estava parado em ciclos de delay () sem responder. Eu também queria ser capaz de alterar os parâmetros de configuração o mais rápido possível - certamente não de uma maneira que exigisse reescrever o código ou fazer operações de busca e substituição em massa no código-fonte. encontrou os artigos mais excelentes de Bill Earl sobre "Multitarefa do Arduino" (comece aqui: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) e comecei a trabalhar. Ao criar as classes "timer" e "aquecedor", fui capaz de fazer todas as funções de temporização que queria sem usar delay () (com apenas algumas exceções) e configurar as lâmpadas ("aquecedores") com uma única linha de código para cada 1.

Etapa 4: conectando-o

Fiação
Fiação
Fiação
Fiação

O diagrama de Fritzing não inclui o Bluefruit EZ-LinkArduino 5V & Ground para o breadboard busDHT22 pino 1 a 5V busDHT22 pino 2 para Arduino pino 7DHT22 pino 4 para aterramento bus10K resistor entre DHT22 pinos 1 e 2GA1A12S202 pino VCC para pino 5V busGA1A12S202 GND para aterramento busGA1A12S202 OUT pino para Arduino A0Arduino 3V pino para Arduino AREF pinRelay aterramento leva ao aterramento busRelay 1 cabo de energia para Arduino A1Relay 2 cabo de energia para Arduino A2Relay 3 cabo de energia para Arduino A3Relay 4 cabo de energia para Arduino A4 A maioria dessas conexões pode ser reorganizada conforme desejar. O único que é crítico é o cabo OUT no sensor de luz precisa ir para um pino analógico. Esta pinagem funcionará com meu código conforme escrito. Se você estiver usando o watchdog de hardware, verá que meu código coloca a pulsação no pino 2 do Arduino.

Etapa 5: o código do Arduino, esboço principal

CrawlSpace_monitor.ino

Etapa 6: Notas sobre o Código

As seguintes linhas de código criam as instâncias do aquecedor e definem os parâmetros operacionais: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minutos), luxDelta) Heater heater1 = Heater (A1, 38, 43, 20, 1440, 5); Aquecedor do aquecedor 2 = Aquecedor (A2, 36, 41, 20, 1440, 5); Aquecedor do aquecedor 3 = Aquecedor (A3, 34, 39, 20, 1440, 5); Aquecedor do aquecedor 4 = Aquecedor (A4, 32, 37, 20, 1440, 5); (E sim, eu defini todos os 4 aquecedores, embora esteja apenas executando 3 no momento. Eu ainda precisaria obter outro relé, mas, em seguida, adicionar o 4º aquecedor seja tão simples quanto conectá-lo.) Eu escalono as temperaturas de disparo, começando em 38 graus para o primeiro e terminando em 32 para o 4º não existente. Uma das coisas que descobri quando comecei a remendar isso foi que eu precisava dar um intervalo de temperatura, bem como definir um "tempo de queima" mínimo, ou estava ligando e desligando as luzes como um louco. Aqui, dou a cada um deles uma propagação de 5 graus, bem como um tempo mínimo de queima de 20 minutos. Defino o intervalo de teste para 24 horas e configurei 5 lux como a leitura de luz mínima necessária para determinar se uma lâmpada ainda estava funcionando. Quase tudo o que precisa de configuração está aqui, nestas 4 linhas de código.

Etapa 7: O código do Arduino, classes

Criei 3 classes para este projeto. Eles eram "cronômetro", "aquecedor" e "acumulador". Com um pouco mais de reflexão, devo ser capaz de dobrar o acumulador no cronômetro, mas ainda não o fiz. Aqui estão eles: heater.h

timer.h

acumulador.h

Etapa 8: Monitorando o Sistema

Monitorando o Sistema
Monitorando o Sistema

Criei uma única interface para dois monitores separados. É uma sessão interativa no console serial. No meu caso, estou usando o Bluefruit EZ-Link para poder acessar o sistema sem rastejar sob a casa ou tentar passar um cabo USB entre as vigas do piso! Um benefício adicional do EZ-Link é que eu também posso fazer upload de um novo código de programa para o Arduino via Bluetooth. A interface "humana" pode ser acessada (Bluetooth ou cabo físico) com qualquer software de emulação de terminal, incluindo o IDE do Arduino serial monitor. Quando você se conecta inicialmente, não há resposta, mas as teclas "u" (para "atualizar") e "t" (para "teste") fornecem a saída mostrada na captura de tela. "m" ("monitor") e "s" ("verificação do sistema") fornecem os mesmos dados, mas em um formato muito menos legível. Eles devem ser "apagados" por outro programa para exibição automática. Eu criei um script Python que faz exatamente isso. Qualquer outra chave receberá a mensagem de erro exibida. Você verá um valor para "tempo de queima" - pense nisso como "minutos da lâmpada" - 1 lâmpada por 10 minutos = 10 minutos, 3 lâmpadas por 10 minutos = 30 minutos.

Etapa 9: o script Python

O script Python
O script Python

crawlspace_gui.py

Etapa 10: Ainda por fazer …

Pode não ser bonito ou perfeito, mas é eficaz e está provando ser confiável. E, eu não tive nenhum problema de tubo congelado ainda neste inverno !!! Eu tenho uma lista de ocorrências de coisas para fazer. Claro, agora que funciona, posso ou não conseguir realizar a maioria destes itens: Faça o Bluetooth rodar em um dos meus Raspberry Pi para que eu possa criar um monitor dedicado. Aprenda mais sobre Python - depois limpe o Python interface. Essa separação de elementos não é proposital e não entendo por que está lá. Adicione uma interface a algo como o serviço IO da Adafruit para que eu possa monitorá-lo de qualquer lugar. Adicione um alerta de mensagem de texto. Mova para um controlador menor (possivelmente um Metro Mini ou um Trinket Pro?), Relés menos caros e melhor embalagem. Tire-o de uma placa de ensaio e coloque-o em uma placa "Proto Perma". Parâmetros de configuração em EEPROM. Uma interface mais granular que indicará quais lâmpadas são boas e possivelmente até mesmo queimar tempo para as lâmpadas individuais. À medida que as terminar, voltarei e atualizarei este Instructable.

Etapa 11: atualização 3/16, versão "permanente"

Atualização 3/16,
Atualização 3/16,
Atualização 3/16,
Atualização 3/16,
Atualização 3/16,
Atualização 3/16,

Obtendo uma boa pausa no tempo frio, recuperei a unidade e mudei-a para um controlador menor (eu pretendia usar um Trinket Pro, mas tinha um Adafruit Metro Mini não reclamado por nenhum outro projeto), soldou-o em uma placa Perma-Proto, e coloque tudo em uma caixa melhor. Com base em quão confiável ele tem sido, não coloquei o watchdog de hardware de volta nele. Ainda estou usando apenas 3 lâmpadas / relés onde o sistema irá lidar com 4. O módulo Bluetooth está em um conector soldado, então pode ser removido se eu precisar dele em outro lugar. Não houve mudanças de código necessárias para mover para o novo controlador - uma simples recompilação e carregamento me colocou em funcionamento em questão de minutos. (O Metro Mini tem uma pinagem idêntica à do Arduino Uno e também é um processador ATMega328.)

Etapa 12: Atualização 2018-12-01 - Bem-vindo ao IoT

O sistema funcionou perfeitamente para nós. Depois de dois invernos bastante severos, SEM canos congelados. Na verdade, o sistema era capaz de manter os canos sem nunca queimar mais de 2 lâmpadas. Ter a terceira lâmpada online foi um bom seguro, mas nunca precisamos dela até o momento.

Entrando no ano 3 para o sistema, o módulo Bluetooth falhou. Também construímos uma nova casa, então o sistema de monitoramento está bem fora do alcance do Bluetooth. (A velha casa vai ficar de pé por um tempo, mas não para sempre.) Nesse ínterim, tenho feito muito com o processador habilitado para WiFi ESP8266; ambos no formato Adafruit Feather e no formato de código aberto "NodeMCU". O NodeMCU geralmente pode ser encontrado na Amazon por cerca de US $ 5 - muito menos se você comprar a granel e / ou de alguém como o AliExpress.

Esta nova versão mantém a interface serial, de modo que ainda pode ser usada com um módulo Bluetooth ou conexão serial USB direta e o script python anterior, no entanto, a nova versão tem uma interface de página web. Conforme escrito, inclui o seguinte recurso:

Um gerenciador de rede WiFi para eliminar credenciais WiFi embutidas em código.

A capacidade de atualizar o firmware over-the-air usando o Arduino IDE (contanto que você esteja na mesma rede WiFi - observe que depois de fazer um upload de USB para o dispositivo, é necessário reiniciar antes que as atualizações OTA funcionem). POR FAVOR, altere a senha OTA na linha 6 para que seja exclusiva para você !!

Uma página da web que exibe os mesmos dados que o script Python exibe, com uma atualização automática a cada minuto. Não coloquei nenhum tipo de segurança na página, pois ela é somente para exibição.

Você pode encontrar o novo código aqui. Observe que os nomes dos pinos mudam ao mover para o NodeMCU.

Recomendado: