Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Na dworze robi się zimno, ale czasami potrzebuję świeżego powietrza w moich pokojach. Więc otwieram okno, wychodzę z pokoju, zamykam drzwi i chcę wrócić za 5 do 10 minut. I po kilku godzinach przypominam sobie, że okno jest otwarte… Może wiesz o tym lub masz dzieci, które dają Ci to doświadczenie.
Moje rozwiązanie to Open Window Detector. Bateria wystarczy na ponad rok, więc po prostu umieść ją jesienią i wyjmij wiosną.
Krok 1: Lista części
- Tablica Digipark z serwisu eBay.
- Stare słuchawki.
- Mały przycisk do resetowania.
- Złącza pod głośnik - w przeciwnym razie nie ma możliwości przeprogramowania płytki.
- Drut.
- Do zasilania potrzebujesz:
Pojemnik na baterie AAA z włącznikiem/wyłącznikiem. Możesz nawet użyć zużytych baterii, ponieważ moduł będzie działał do 2,4 V
LUB
Stary akumulator lipo (nawet 30% pojemności wystarcza do tego celu) i jeśli jeszcze nie masz, ładowarkę do akumulatorów lipo z eBay.
LUB
Uchwyt na monetę CR2032
ORAZ
1A dioda 1N4001 lub odpowiednik - lub cokolwiek masz w tym rozmiarze - do ochrony przed odwrotną polaryzacją
Krok 2: Programowanie tablicy Digipark
Instalacja sterownika
Aby móc zaprogramować tablicę, musisz zainstalować sterownik Digispark. Pobierz go tutaj, otwórz i uruchom " InstallDrivers.exe ".
Instalacja Arduino IDE
Zainstaluj płytę Digispark dla Arduino IDE zgodnie z opisem w
Polecam używać jako adresu URL płyty Digispark w Arduino File/Preferences nowego https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json zamiast https://digistump.com/package_digistump_index.json i zainstalować Płyty Digistump AVR wersja 1.6.8.
Ponieważ chcemy oszczędzać energię, zegar płyty jest przełączony na 1 MHz w naszym setup(), możesz wybrać Digispark (1mhz - bez USB) jako płytkę w menu Narzędzia.
Skompiluj i wgraj program na tablicę
W Arduino IDE utwórz nowy szkic za pomocą File/New i nazwij go np. „OpenWindowAlarm”. Skopiuj kod z OpenWindowAlarm.ino
LUB
Pobierz i rozpakuj repozytorium. Otwórz szkic za pomocą Plik -> Otwórz… i wybierz folder „OpenWindowAlarm”.
Skompiluj i prześlij. Pamiętaj, że przesyłanie nie będzie działać, jeśli głośnik jest podłączony. Jeśli wszystko działa dobrze, wbudowana dioda LED Digispark mignie 5 razy (dla 5 minut opóźnienia alarmu), a następnie zacznie migać po 8 sekundach w odstępie 24 sekund, sygnalizując każdy odczyt temperatury.
Krok 3: Redukcja mocy
Nasza płyta Digispark wykorzystuje 5mA przy 3,0 woltach. Z 2 bateriami AAA (1000 mAh) będzie działać przez 8 dni. Ale możliwe jest zmniejszenie zużycia energii do 26 µA w 3 krokach.
- Wyłączenie diody zasilania poprzez zerwanie nożem miedzianego przewodu łączącego diodę zasilania z diodą lub wyjęcie/wyłączenie rezystora 102 pozwala zaoszczędzić 1,3 mA.
- Usunięcie regulatora napięcia VIN pozwala zaoszczędzić 1,2 mA.
-
Odłączenie rezystora USB Pullup (oznaczonego 152) od napięcia 5 V (VCC) oszczędza pozostałe 2,5 mA. Odłącz go, przerywając miedziany przewód z boku rezystora, który wskazuje na ATTiny. Powoduje to wyłączenie interfejsu USB i z kolei możliwość programowania płytki Digispark przez USB. Aby włączyć go ponownie, ale nadal oszczędzać energię, podłącz rezystor (oznaczony 152) bezpośrednio do portu USB 5 V, który jest łatwo dostępny po zewnętrznej stronie diody.
Właściwą stronę diody można znaleźć za pomocą testera ciągłości. Jedna strona tej diody jest podłączona do pinu 8 ATtiny (VCC). Druga strona jest podłączona do USB 5 V.
Teraz rezystor podciągający USB jest aktywowany tylko wtedy, gdy płytka Digispark jest podłączona do USB, np. podczas programowania, a płyta pobiera 26 µA podczas snu.
Jeśli przeprogramujesz bezpieczniki, możesz uzyskać pobór prądu 6 µA.
Aby przeprogramować bezpieczniki, potrzebujesz ISP (który można zbudować za pomocą Arduino) i adaptera łączącego. Do przeprogramowania możesz użyć tego skryptu.
Krok 4: Przycisk resetowania
Jeśli nie chcesz odłączać zasilania w celu zresetowania alarmu, podłącz przycisk resetowania między PB5 a uziemieniem. Zrobiłem to podłączając niepodłączoną powierzchnię miedzianą VIN do PB5 i przylutowując przycisk resetowania bezpośrednio do otworu pinu VIN i dużej powierzchni masy wyjętego regulatora napięcia VIN.
Jeśli chcesz pozbyć się 5 sekund oczekiwania na połączenie USB po resecie, możesz zmienić jądro mikrojądrowe na ATtiny85. Uruchom skrypt „0_Burn_upgrade-t85_recommended.cmd”, a następnie ponownie załaduj aplikację OpenWindowAlarm z Arduino IDE.
Krok 5: Głośnik
Zdemontowałem stary zestaw słuchawkowy i podłączyłem męskie złącze do kabla.
Krok 6: Obsługa
Aby korzystać z deski, połóż ją na parapecie i podłącz do akumulatora. Jeśli temperatura na parapecie jest niższa niż temperatura, w której pierwotnie znajdowała się deska, inteligentne dostosowanie się do nowej wartości początkowej zajmie dodatkowe 5 minut.
Będziesz wtedy zaniepokojony, jeśli zostawisz otwarte okno dłużej niż pięć minut.
Operacja wewnętrzna
- Otwarte okno jest wykrywane po TEMPERATURE_COMPARE_AMOUNT * TEMPERATURE_SAMPLE_SECONDS (48) sekundach odczytu temperatury o wartości TEMPERATURE_DELTA_THRESHOLD_DEGREE (2) niższej niż temperatura TEMPERATURE_COMPARE_DISTANCE * TEMPERATURE_SAMPLE_SECONDS -> 3 minuty przed i (192) sekundy
- Opóźnienie jest realizowane przez uśpienie 3 razy w trybie SLEEP_MODE_PWR_DOWN na okres 8 sekund w celu zmniejszenia zużycia energii.
- Wykrycie otwartego okna jest sygnalizowane dłuższym 20ms mignięciem i krótkim kliknięciem co 24 sekundy. Dlatego czujnik wewnętrzny ma czas 3 minut na dostosowanie się do temperatury zewnętrznej, aby wychwycić nawet niewielkie zmiany temperatury. Im większa zmiana temperatury, tym wcześniej wartość czujnika zmieni się i wykryje otwarte okno.
-
`OPEN_WINDOW_ALARM_DELAY_MINUTES` (5) minut po wykryciu otwartego okna alarm jest aktywowany.
Alarm nie uruchomi się lub aktywowany alarm wyłączy się, jeśli aktualna temperatura jest wyższa niż minimalna zmierzona temperatura (+1), tj. okno zostało już zamknięte.
- Alarm początkowy trwa 10 minut. Następnie jest aktywowany na okres 10 sekund z rosnącą przerwą od 24 sekund do 5 minut.
- Co VCC_MONITORING_DELAY_MIN (60) minut mierzone jest napięcie akumulatora. W zależności od wykrytego typu baterii podczas uruchamiania (patrz VCC_VOLTAGE_LIPO_DETECTION (3,6 V)), napięcie baterii poniżej VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_LIPO (3550) lub VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_STANDARD Miliwolt jest sygnalizowany sygnałem dźwiękowym i miganiem diody LED co 24 sekundy. Tylko sygnał dźwiękowy (nie błysk) jest znacznie dłuższy niż sygnał dźwiękowy wykrycia otwartego okna.
- Po włączeniu nieaktywny czas rozliczania wynosi 5 minut. Jeśli płyta robi się zimniejsza w czasie ustalania, dodaje się 4:15 (lub 8:30) minut, aby uniknąć fałszywych alarmów po włączeniu zasilania.