Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Het wordt koud buiten, maar soms heb ik wat frisse lucht nodig in mijn kamers. Dus ik open het raam, verlaat de kamer, sluit de deur en wil over 5 tot 10 minuten terugkomen. En na een paar uur herinner ik me dat het raam open staat… Misschien weet je dit of heb je kinderen, die je deze ervaring geven.
Mijn oplossing is de Open Window Detector. De batterij gaat meer dan een jaar mee, dus plaats hem in de herfst en verwijder hem in de lente.
Stap 1: Onderdelenlijst
- Digispark-bord van eBay.
- Oude koptelefoon.
- Kleine knop voor reset.
- Aansluitingen voor luidspreker - anders is het niet mogelijk om het bord te herprogrammeren.
- Draad.
- Voor stroomvoorziening heb je nodig:
AAA batterijhouder met aan/uit schakelaar. U kunt zelfs lege batterijen gebruiken, aangezien de module tot 2,4 Volt werkt
OF
Oude lipo-accu (zelfs 30% capaciteit is hiervoor voldoende) en als je die nog niet hebt, een oplader voor lipo-accu's van eBay.
OF
Een houder voor CR2032 knoopcel
EN
1A diode 1N4001 of gelijkwaardig -of wat je ook hebt in deze maat- voor bescherming tegen omgekeerde polariteit
Stap 2: Programmeren van het Digispark-bord
Installatie van stuurprogramma
U moet het Digispark-stuurprogramma installeren voordat u het bord kunt programmeren. Download het hier, open het en voer " InstallDrivers.exe " uit.
Installatie van Arduino IDE
Installeer het Digispark-bord voor de Arduino IDE zoals beschreven in
Ik raad aan om als Digispark-bord-URL in Arduino File/Preferences de nieuwe https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json te gebruiken in plaats van https://digistump.com/package_digistump_index.json en installeer de Digistump AVR Boards versie 1.6.8.
Omdat we stroom willen besparen, is de klok van het bord geschakeld naar 1 MHz in onze setup() je kunt Digispark (1mhz - Geen USB) als bord kiezen in het menu Tools.
Compileer en upload het programma naar het bord
Maak in de Arduino IDE een nieuwe schets met Bestand/Nieuw en noem deze b.v. "OpenWindowAlarm". Kopieer de code van OpenWindowAlarm.ino
OF
Download en pak de repository uit. Open de schets met Bestand -> Openen… en selecteer de map "OpenWindowAlarm".
Compileren en uploaden. Houd er rekening mee dat uploaden niet werkt als de speaker is aangesloten. Als alles goed werkt, zal de ingebouwde LED van de Digispark 5 keer knipperen (voor de alarmvertraging van 5 minuten) en dan beginnen te knipperen na 8 seconden met een interval van 24 seconden om elke temperatuurmeting te signaleren.
Stap 3: Vermogensreductie
Ons Digispark-bord gebruikt 5mA bij 3,0 volt. Met 2 AAA-batterijen (1000mAh) gaat hij 8 dagen mee. Maar het is mogelijk om het stroomverbruik in 3 stappen terug te brengen tot 26 µA.
- Het uitschakelen van de power-LED door de koperdraad die de power-LED met de diode verbindt met een mes te verbreken of de 102 weerstand te verwijderen/uit te schakelen, bespaart 1,3 mA.
- Het verwijderen van de VIN-spanningsregelaar bespaart 1,2 mA.
-
Door de USB Pullup-weerstand (gemarkeerd met 152) los te koppelen van 5 Volt (VCC) wordt de resterende 2,5 mA bespaard. Koppel hem los door de koperdraad aan de kant van de weerstand die naar de ATTiny wijst te breken. Hierdoor wordt de USB-interface uitgeschakeld en op zijn beurt de mogelijkheid om het Digispark-bord via USB te programmeren. Om het weer in te schakelen, maar toch energie te besparen, sluit u de weerstand (gemarkeerd met 152) rechtstreeks aan op de USB 5 volt die gemakkelijk beschikbaar is aan de buitenkant van de diode.
De juiste kant van de diode kan worden gevonden met behulp van een continuïteitstester. Een zijde van deze diode wordt aangesloten op pin 8 van de ATtiny (VCC). De andere kant is aangesloten op USB 5 volt.
Nu wordt de USB pullup-weerstand alleen geactiveerd als het Digispark-bord is aangesloten op USB, b.v. tijdens het programmeren en het bord verbruikt 26 µA tijdens de slaap.
Als u de zekeringen opnieuw programmeert, kunt u 6 µA stroomverbruik krijgen.
Voor het herprogrammeren van de zekeringen heb je een ISP (die met een Arduino gebouwd kan worden) en een aansluitadapter nodig. Voor het herprogrammeren kun je dit script gebruiken.
Stap 4: Reset-knop
Als u de stroom niet wilt uitschakelen om het alarm te resetten, sluit dan een resetknop aan tussen PB5 en aarde. Ik deed dit door het niet-aangesloten VIN-koperen oppervlak aan te sluiten op PB5 en de resetknop rechtstreeks op het VIN-pingat en het grote aardoppervlak van de verwijderde VIN-spanningsregelaar te solderen.
Als u de 5 seconden wachten op USB-verbinding na reset wilt verwijderen, kunt u de micronucleus-kernel op de ATtiny85 wijzigen. Voer het script "0_Burn_upgrade-t85_recommended.cmd" uit en laad de toepassing OpenWindowAlarm opnieuw met de Arduino IDE.
Stap 5: Spreker
Ik heb een oude headset gedemonteerd en de mannelijke connector op de kabel aangesloten.
Stap 6: Bediening
Om het bord te gebruiken, plaatst u het op een vensterbank en sluit u het aan op een batterij. Als de temperatuur op de vensterbank lager is dan de temperatuur waar het bord oorspronkelijk was geplaatst, duurt het nog 5 minuten om op intelligente wijze de nieuwe startwaarde aan te nemen.
U wordt dan gealarmeerd als u het raam langer dan vijf minuten open laat staan.
Interne werking
- Een open venster wordt gedetecteerd na TEMPERATURE_COMPARE_AMOUNT * TEMPERATURE_SAMPLE_SECONDS (48) seconden van het lezen van een temperatuur met een waarde van TEMPERATURE_DELTA_THRESHOLD_DEGREE (2) lager dan de temperatuur TEMPERATURE_COMPARE_DISTANCE * TEMPERATURE_SAMPLE_SECONDS -> 3 minuten en 12 seconden (192).
- De vertraging wordt geïmplementeerd door 3 keer te slapen op `SLEEP_MODE_PWR_DOWN` gedurende een periode van 8 seconden om het stroomverbruik te verminderen.
- Een detectie van een open raam wordt aangegeven door een langere knippering van 20 ms en een korte klik om de 24 seconden. Daarom heeft de interne sensor 3 minuten de tijd om zich aan te passen aan de buitentemperatuur om zelfs kleine temperatuurveranderingen vast te leggen. Hoe groter de temperatuurverandering, hoe eerder de sensorwaarde zal veranderen en een open raam zal detecteren.
-
`OPEN_WINDOW_ALARM_DELAY_MINUTES` (5) minuten na detectie van een open raam wordt het alarm geactiveerd.
Het alarm start niet of een geactiveerd alarm stopt als de huidige temperatuur hoger is dan de minimaal gemeten temperatuur (+ 1), d.w.z. het raam is al gesloten.
- Het eerste alarm duurt 10 minuten. Hierna wordt het geactiveerd voor een periode van 10 seconden met een oplopende pauze van 24 seconden tot 5 minuten.
- Elke VCC_MONITORING_DELAY_MIN (60) minuten wordt de accuspanning gemeten. Afhankelijk van het gedetecteerde batterijtype bij het opstarten (zie VCC_VOLTAGE_LIPO_DETECTION (3,6 volt)), wordt een batterijspanning onder VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_LIPO (3550) of VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_STANDARD Millivolt aangegeven door het piepen en knipperen van de LED elke 24 seconden. Alleen de piep (niet de flits) is beduidend langer dan de piep bij een open raam detectie.
- Na het inschakelen is de inactieve insteltijd 5 minuten. Als het bord tijdens de insteltijd kouder wordt, worden 4:15 (of 8:30) minuten toegevoegd om valse alarmen na het opstarten te voorkomen.