Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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
- Placa Digispark do eBay.
- Fones de ouvido antigos.
- Botão minúsculo para redefinir.
- Conectores para alto-falante - caso contrário, não será possível reprogramar a placa.
- Arame.
- 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
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
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.
- 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.
- Remover o regulador de tensão VIN economiza 1,2 mA.
-
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
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
Desmontei um fone de ouvido antigo e conectei o conector macho ao cabo.
Etapa 6: operacional
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.