Detector de janela aberta Arduino - para o inverno: 6 etapas
Detector de janela aberta Arduino - para o inverno: 6 etapas
Anonim
Detector de janela aberta Arduino - para o inverno
Detector de janela aberta Arduino - para o inverno

Está ficando frio lá fora, mas às vezes preciso de um pouco de ar fresco em meus quartos. Então, abro a janela, saio do quarto, fecho a porta e quero voltar em 5 a 10 minutos. E depois de algumas horas lembro que a janela está aberta … Talvez você saiba disso ou tenha filhos, que te dão essa experiência.

Minha solução é o Open Window Detector. A bateria vai durar mais de um ano, portanto, basta colocá-la no outono e removê-la na primavera.

Etapa 1: Lista de peças

Lista de Peças
Lista de Peças
Lista de Peças
Lista de Peças
Lista de Peças
Lista de Peças
Lista de Peças
Lista de Peças
  1. Placa Digispark do eBay.
  2. Fones de ouvido antigos.
  3. Botão minúsculo para redefinir.
  4. Conectores para alto-falante - caso contrário, não será possível reprogramar a placa.
  5. Arame.
  6. Para fonte de alimentação, você precisa:

Caixa de bateria AAA com botão liga / desliga. Você pode até usar baterias gastas, já que o módulo operará até 2,4 volts

OU

Bateria lipo velha (até 30% da capacidade é suficiente para esse fim) e, caso ainda não tenha, um carregador para baterias lipo do eBay.

OU

Um suporte para célula tipo moeda CR2032

E

Diodo 1A 1N4001 ou equivalente -ou o que quer que você tenha neste tamanho- para proteção contra polaridade reversa

Etapa 2: Programação do Digispark Board

Programando o Digispark Board
Programando o Digispark Board
Programando o Digispark Board
Programando o Digispark Board

Instalação do driver

Você deve instalar o driver Digispark antes de programar a placa. Baixe-o aqui, abra-o e execute "InstallDrivers.exe".

Instalação do Arduino IDE

Instale a placa Digispark para o Arduino IDE conforme descrito em

Eu recomendo usar como URL da placa Digispark em Arduino File / Preferences o novo https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json em vez de https://digistump.com/package_digistump_index.json e instalar o Placas Digistump AVR versão 1.6.8.

Como queremos economizar energia, o clock da placa é alterado para 1 MHz em nossa configuração () você pode escolher Digispark (1mhz - Sem USB) como placa no menu Ferramentas.

Compile e carregue o programa para a placa

No IDE do Arduino, crie um novo esboço com Arquivo / Novo e nomeie-o, por exemplo, "OpenWindowAlarm". Copie o código de OpenWindowAlarm.ino

OU

Baixe e extraia o repositório. Abra o esboço com Arquivo -> Abrir… e selecione a pasta "OpenWindowAlarm".

Compile e faça upload. Lembre-se de que o upload não funcionará se o alto-falante estiver conectado. Se tudo funcionar bem, o LED integrado do Digispark piscará 5 vezes (para o atraso do alarme de 5 minutos) e começará a piscar após 8 segundos com um intervalo de 24 segundos para sinalizar cada leitura de temperatura.

Etapa 3: redução de energia

Redução de potência
Redução de potência
Redução de potência
Redução de potência

Nossa placa Digispark usa 5mA a 3, 0 volt. Com 2 pilhas AAA (1000mAh), funcionará por 8 dias. Mas é possível reduzir o consumo de energia até 26 µA em 3 etapas.

  1. Desativar o LED de energia quebrando o fio de cobre que conecta o LED de energia ao diodo com uma faca ou removendo / desativando o resistor 102 economiza 1,3 mA.
  2. Remover o regulador de tensão VIN economiza 1,2 mA.
  3. Desconectar o resistor USB Pullup (marcado como 152) de 5 Volt (VCC) economiza os 2,5 mA restantes. Desconecte-o quebrando o fio de cobre do lado do resistor que aponta para o ATTiny. Isso desativa a interface USB e, por sua vez, a possibilidade de programar a placa Digispark via USB. Para habilitá-lo novamente, mas ainda economizar energia, conecte o resistor (marcado como 152) diretamente ao USB 5 volts que está facilmente disponível no lado externo do diodo.

    O lado correto do diodo pode ser encontrado usando um testador de continuidade. Um lado deste diodo é conectado ao pino 8 do ATtiny (VCC). O outro lado está conectado a USB 5 volts.

Agora, o resistor pullup USB só é ativado se a placa Digispark estiver conectada ao USB, por exemplo, durante a programação e a placa consome 26 µA durante o sono.

Se você reprogramar os fusíveis, pode obter um consumo de energia de 6 µA.

Para reprogramar os fusíveis, você precisa de um ISP (que pode ser construído com um Arduino) e um adaptador de conexão. Para a reprogramação, você pode usar este script.

Etapa 4: botão de reinicialização

Botão de reset
Botão de reset
Botão de reset
Botão de reset
Botão de reset
Botão de reset
Botão de reset
Botão de reset

Se você não quiser remover a energia para redefinir o alarme, conecte um botão de redefinição entre PB5 e o aterramento. Eu fiz isso conectando a superfície de cobre VIN não conectada ao PB5 e soldando o botão de reset diretamente ao orifício do pino VIN e à grande superfície de aterramento do regulador de tensão VIN removido.

Se você quiser se livrar dos 5 segundos de espera pela conexão USB após a reinicialização, você pode alterar o kernel do micronúcleo no ATtiny85. Execute o script "0_Burn_upgrade-t85_recommended.cmd" e recarregue o aplicativo OpenWindowAlarm novamente com o Arduino IDE.

Etapa 5: alto-falante

Alto falante
Alto falante
Alto falante
Alto falante
Alto falante
Alto falante

Desmontei um fone de ouvido antigo e conectei o conector macho ao cabo.

Etapa 6: operacional

Operativo
Operativo
Operativo
Operativo
Operativo
Operativo

Para usar a placa, coloque-a no parapeito de uma janela e conecte-a a uma bateria. Se a temperatura na soleira for inferior à temperatura onde a placa estava originalmente localizada, levará 5 minutos adicionais para adotar de forma inteligente o novo valor inicial.

Você ficará alarmado se deixar a janela aberta por mais de cinco minutos.

Operação Interna

  • Uma janela aberta é detectada após TEMPERATURE_COMPARE_AMOUNT * TEMPERATURE_SAMPLE_SECONDS (48) segundos de leitura de uma temperatura com um valor de TEMPERATURE_DELTA_THRESHOLD_DEGREE (2) abaixo da temperatura TEMPERATURE_COMPARE_DISTANCE * TEMPERATURE_SAMPLE_SECONDS antes de 12 segundos e 3 segundos.
  • O atraso é implementado dormindo 3 vezes em `SLEEP_MODE_PWR_DOWN` por um período de 8 segundos para reduzir o consumo de energia.
  • A detecção de uma janela aberta é indicada por uma piscada mais longa de 20 ms e um clique curto a cada 24 segundos. Portanto, o sensor interno tem um tempo de 3 minutos para se ajustar à temperatura externa a fim de capturar até mesmo pequenas mudanças de temperatura. Quanto maior a mudança de temperatura, mais cedo o valor do sensor mudará e detectará uma janela aberta.
  • `OPEN_WINDOW_ALARM_DELAY_MINUTES` (5) minutos após a detecção de janela aberta o alarme é ativado.

    O alarme não iniciará ou um alarme ativado irá parar se a temperatura atual for maior do que a temperatura mínima medida (+ 1), ou seja, a janela já foi fechada.

  • O alarme inicial dura 10 minutos. Depois disso, ele é ativado por um período de 10 segundos com um intervalo crescente de 24 segundos até 5 minutos.
  • A cada VCC_MONITORING_DELAY_MIN (60) minutos, a tensão da bateria é medida. Dependendo do tipo de bateria detectado na inicialização (consulte VCC_VOLTAGE_LIPO_DETECTION (3,6 volt)), uma tensão de bateria abaixo de VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_LIPO (3550) ou VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_STANDARD Milivolt é indicada por bipes e flashes de LED a cada 24 segundos. Apenas o bipe (não o flash) é significativamente mais longo do que o bipe para uma detecção de janela aberta.
  • Após a inicialização, o tempo de estabilização inativa é de 5 minutos. Se a placa estiver ficando mais fria durante o tempo de acomodação, 4:15 (ou 8:30) minutos são adicionados para evitar alarmes falsos após a inicialização.