Wykrywacz otwartego okna Arduino - na zimę: 6 kroków
Wykrywacz otwartego okna Arduino - na zimę: 6 kroków
Anonim
Wykrywacz otwartego okna Arduino - na zimę
Wykrywacz otwartego okna Arduino - na zimę

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

Lista części
Lista części
Lista części
Lista części
Lista części
Lista części
Lista części
Lista części
  1. Tablica Digipark z serwisu eBay.
  2. Stare słuchawki.
  3. Mały przycisk do resetowania.
  4. Złącza pod głośnik - w przeciwnym razie nie ma możliwości przeprogramowania płytki.
  5. Drut.
  6. 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

Programowanie tablicy Digipark
Programowanie tablicy Digipark
Programowanie tablicy Digipark
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

Redukcja mocy
Redukcja mocy
Redukcja mocy
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.

  1. 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.
  2. Usunięcie regulatora napięcia VIN pozwala zaoszczędzić 1,2 mA.
  3. 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

Przycisk reset
Przycisk reset
Przycisk reset
Przycisk reset
Przycisk reset
Przycisk reset
Przycisk reset
Przycisk reset

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

Głośnik
Głośnik
Głośnik
Głośnik
Głośnik
Głośnik

Zdemontowałem stary zestaw słuchawkowy i podłączyłem męskie złącze do kabla.

Krok 6: Obsługa

Operacyjny
Operacyjny
Operacyjny
Operacyjny
Operacyjny
Operacyjny

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.