Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Sprzęt - obwód
- Krok 2: Sprzęt - obudowa
- Krok 3: Oprogramowanie
- Krok 4: Automatyka domowa i telegram
- Krok 5: Ulepszenia i dalsze ulepszenia
Wideo: Zasilany bateryjnie czujnik drzwiowy z integracją automatyki domowej, WiFi i ESP-NOW: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
W tej instrukcji pokazuję, jak zrobiłem czujnik drzwi zasilany bateryjnie z integracją automatyki domowej. Widziałem inne fajne czujniki i systemy alarmowe, ale sam chciałem taki zrobić.
Moje cele:
- Czujnik, który szybko wykrywa i zgłasza otwarcie drzwi (<5 sekund)
- Czujnik wykrywający zamknięcie drzwi
- Czujnik, który jest zasilany bateryjnie i działa przez kilka miesięcy na baterii
Sprzęt i oprogramowanie są inspirowane
- Trigboard Kevina Darraha (TPL5111 i TPS73733).
- Ten film
Zrobiłem czujnik do drzwi wejściowych i drzwi tylnych. Jedyną różnicą jest pozycja diody i zewnętrzny wyłącznik zasilania (na czujniku backdoora).
Zrobiłem kilka ulepszeń podczas rozwoju sprzętu i oprogramowania, co widać na zdjęciach.
Kieszonkowe dzieci
Kupiłem komponenty elektroniczne od Aliexpressa, główne części:
- Akumulator LiPo
- TPS73733 LDO
- TPL5111
- Kontaktron
- Mosfet z kanałem P: IRLML6401TRPBF
- Magnes
- Płyta adaptera PCB do elementów SMD i innych.
Krok 1: Sprzęt - obwód
Zobacz załączone schematy obwodu. Przylutowałem części SMD do płytki PCB adaptera i przylutowałem wszystkie komponenty do dwustronnej płytki perf. Podłączyłem ESP-01 za pomocą żeńskich nagłówków, więc mogłem go usunąć, aby zaprogramować go za pomocą adaptera pokazanego w kroku 3 tej instrukcji.
Obwód działa w następujący sposób:
- Gdy drzwi są otwarte, TPL5111 otrzymuje strzał w pin DELAY/M_DRV i włącza TPS73733 LDO, który zasila ESP-01. W przypadku tej operacji EN/ONE_SHOT musi być wyciągnięty nisko, patrz arkusz danych TPL5111.
- Po uruchomieniu programu (patrz krok Oprogramowanie), ESP-01 wysyła sygnał Done do TPL5111, który następnie wyłącza TPS73733, co skutkuje bardzo niskim stanem poboru mocy dla TPL5111 i TPS73733.
Używam kontaktronów z połączeniami NO i NC. Podłączyłem przewód NC, ponieważ kontaktron musi zamykać obwód, gdy magnes jest wyjęty (drzwiczki otwarte) i otwierać się, gdy magnes jest blisko (drzwiczki zamknięte).
Do czujnika backdoora dodałem trochę kondensatorów i rezystorów, gdy odkryłem pewne niestabilności, jednak niestabilność była spowodowana przez oprogramowanie (esp_now_init), jak odkryłem później.
Krok 2: Sprzęt - obudowa
Zaprojektowałem obudowę w Autodesk Fusion360, zainspirowany tym filmem przez „faceta ze szwajcarskim akcentem”.
Pliki STL z trzech części:
- Skrzynka
- Pokrywa
- Uchwyt magnetyczny
są publikowane na mojej stronie Thingiverse.
Krok 3: Oprogramowanie
Program jest na moim Github.
Przebieg programu pokazano na rysunku. Zobacz moje inne Instructable, aby dowiedzieć się, jak korzystam z ESP-NOW.
Gdy moduł jest włączony, najpierw próbuje wysłać komunikat „OPEN” przez ESP-NOW. Jeśli to się nie powiedzie, przełącza się na połączenie Wi-Fi i MQTT.
Dowiedziałem się, że przynajmniej w mojej konfiguracji komunikat „ZAMKNIĘTY” nie został pomyślnie wysłany przez ESP-NOW, więc usunąłem to z programu i używam tylko WiFi i MQTT.
W czasie, gdy drzwi są otwarte i moduł czeka na zamknięcie drzwi, wykorzystuje ten czas na połączenie z WiFi i MQTT, więc gdy drzwi są zamknięte, musi tylko wysłać zmierzone napięcie i komunikat ZAMKNIĘTE, a następnie bezpośrednio idzie spać.
Program sprawdza, czy odbiorca odbiera zamkniętą wiadomość poprzez odsłuchanie wiadomości MQTT na odpowiedni temat.
Krok 4: Automatyka domowa i telegram
Moje czujniki drzwiowe komunikują się z moją automatyką domową Openhab na moim Raspberry Pi Zero.
Główne zastosowania:
- Odczytaj stan drzwi: OTWARTE lub ZAMKNIĘTE.
- Alarmuj mnie za pomocą telegramu, jeśli drzwi są otwarte (jeśli włączony jest alarm lub funkcja monitorowania).
- Przeczytaj, kiedy ostatnio otwierano lub zamykano drzwi.
- Policz liczbę otwarć, które czujnik drzwi może obsłużyć, zanim bateria się wyczerpie.
Na przykład, jeśli jesteśmy na wakacjach, a sąsiad przyjdzie podlać rośliny, dostaję wiadomość. Zobacz wideo we wstępie.
Moje elementy Openhab, zasady i pliki map witryn znajdują się na moim Github. W tych plikach można również zobaczyć mój czujnik drzwi szopy, który wykorzystuje zwykły przewodowy kontaktron i mały stykowy (końcowy) wyłącznik z drukarki 3D w otworze zamka (patrz zdjęcia).
Jak korzystać z akcji Telegram w Openhab, opisano tutaj.
Krok 5: Ulepszenia i dalsze ulepszenia
W ostatnich miesiącach dokonałem następującej poprawy.
Obsługuj długie otwarcia drzwi za pomocą samoczynnie przełączającego się sygnału impulsowego
Latem zostawiamy otwarte tylne drzwi na kilka godzin, kiedy jesteśmy w domu. Działający ESP-01 z połączeniem Wi-Fi niepotrzebnie rozładowałby baterię. Dlatego dołączyłem włącznik/wyłącznik, aby móc wyłączyć moduł w takich sytuacjach.
Czasami jednak skutkowało to trwale wyłączonym modułem (kiedy zapomniałem go włączyć) i rozładowaną baterią po kilku popołudniach przy otwartych drzwiach i uruchomionym module (kiedy zapomniałem go wyłączyć).
Dlatego chciałem mieć możliwość wyłączenia modułu za pomocą oprogramowania po tym, jak moduł był włączony przez określony czas (1 minuta).
Jednak tam, gdzie impuls „DONE” ESP-01 wyłączył TPL5111, gdy drzwi były zamknięte, dowiedziałem się, że TPL5111 nie został wyłączony przez impuls „DONE”, podczas gdy pin DELAY/M_DRV był WYSOKI. Ten WYSOKI sygnał na pinie DELAY/M_DRV spowodowany był otwartymi drzwiczkami i stykiem NC kontaktronu podłączonego do napięcia akumulatora.
Tak więc sygnał do pinu DELAY/M_DRV nie powinien być ciągle wysoki, ale powinien być impulsowy. W arkuszu danych TPL5111 można znaleźć, że powinien to być impuls > 20 ms. Ten samoprzełączający się sygnał wykonałem przez mosfet z kanałem P, kondensator i rezystor 10K i 300K, patrz dołączony schemat.
Działa w następujący sposób:
- Jeśli styk NC kontaktronu jest zamknięty, bramka jest w stanie LOW, a Mosfet jest włączony, co skutkuje sygnałem HIGH na pinie DELAY/M_DRV, który aktywuje moduł.
- Kondensator jest szybko ładowany, co powoduje wzrost napięcia na bramce.
- Po około 20 ms napięcie na bramce wynosi 97% napięcia akumulatora (300K/(300K+10K), które jest WYSOKIE, a Mosfet jest wyłączony, co skutkuje sygnałem LOW na pinie DELAY/M_DRV.
- Gdy pin DELAY/M_DRV jest w stanie LOW, sygnał DONE ESP-01 powoduje wyłączenie modułu.
Jest to zaimplementowane w oprogramowaniu; pętla while nie tylko sprawdza, czy drzwi są nadal otwarte, ale także sprawdza, czy moduł nie jest włączony zbyt długo. Włączona zbyt długo publikuje wartość NULL (niezdefiniowany stan drzwi). W tym przypadku nie wiem, czy drzwi są otwarte, czy zamknięte i nie osiągam wszystkich celów wymienionych we wstępie, ale żywotność baterii jest ważniejsza i najczęściej otwieramy drzwi ponownie później tego samego dnia, co skutkuje potwierdzonym stanem zamkniętym drzwi.
Ważne jest, aby użyć Mosfeta z kanałem P, który jest odpowiedni dla stosowanego tutaj zakresu napięcia. Mosfet musi być całkowicie włączony przy VGS około -3,8 V i całkowicie wyłączony przy VGS około -0,2 V. Wypróbowałem kilka Mosfetów i dowiedziałem się, że IRLML6401TRPBF działa dobrze w tym celu w połączeniu z rezystorami 10K i 300K. Kondensator 1 uF działa dobrze, aby uzyskać długość impulsu około 20 ms. Większy kondensator powoduje dłuższy impuls, który nie jest konieczny, ponieważ TPL5111 został aktywowany. Do sprawdzenia napięć i długości impulsów użyłem mojego oscyloskopu DSO150.
Planowana poprawa: aktualizacja OTA
Planuję włączyć aktualizację OTA za pomocą poniższej procedury, która jest już częściowo zawarta w obecnym oprogramowaniu
- Za pośrednictwem Openhab z NodeRed publikuję zachowaną wiadomość 'aktualizacji' i 'temat aktualizacji'.
- Jeśli moduł jest włączony i połączony z serwerem MQTT oraz subskrybowany w 'temacie aktualizacji', otrzymuje wiadomość o aktualizacji.
- Komunikat o aktualizacji uniemożliwi wyłączenie modułu i uruchomi
- Za pośrednictwem strony internetowej HTTPUpdateServer można zaktualizować oprogramowanie.
- Za pośrednictwem Openhab z NodeRed publikuję zachowaną „pustą” wiadomość i „aktualizację tematu”.
Planowana poprawa: wyłączenie sprzętu po określonym czasie
W obecnym schemacie używam rezystora 200K pomiędzy DELAY/M_DRV i GND TPL5111. Powoduje to włączenie modułu na ponad 2 godziny (patrz 7.5.3. karty katalogowej TPL5111). Nie chcę jednak, aby moduł był tak długo włączony, bo bateria jest wtedy rozładowana. Jeśli rozwiązanie programowe (patrz wyżej) nie wyłączy modułu lub komunikat aktualizacji niezamierzony ustawi moduł w tryb aktualizacji, moduł pozostaje włączony przez długi czas.
Dlatego lepiej jest zastosować mniejszy rezystor między DELAY/M_DRV a GND TPL5111, aby moduł został wyłączony po krótkim czasie, na przykład rezystor 50K, co daje czas 7 minut.
Zalecana:
System automatyki domowej WiFi o bardzo niskim poborze mocy: 6 kroków (ze zdjęciami)
Ultra-low Power WiFi Home Automation System: W tym projekcie pokazujemy, jak w kilku krokach można zbudować podstawowy lokalny system automatyki domowej. Zamierzamy użyć Raspberry Pi, które będzie działać jako centralne urządzenie WiFi. Podczas gdy w przypadku węzłów końcowych zamierzamy użyć IOT Cricket, aby stworzyć zasilanie bateryjne
Zasilany bateryjnie czujnik poziomu kolektora wody: 7 kroków (ze zdjęciami)
Zasilany bateryjnie czujnik poziomu kolektora wody: Nasz dom ma zbiornik na wodę zasilany z deszczu padającego na dach i używany do toalety, pralki i podlewania roślin w ogrodzie. Przez ostatnie trzy lata lata były bardzo suche, więc obserwowaliśmy poziom wody w zbiorniku. S
Czujnik wilgotności kwiatów IOT WiFi (zasilany bateryjnie): 8 kroków (ze zdjęciami)
IOT WiFi Flower Moisture Sensor (zasilany bateryjnie): W tej instrukcji przedstawiamy, jak zbudować WiFi czujnik wilgoci / wody z monitorem poziomu baterii w mniej niż 30 minut. Urządzenie monitoruje poziom wilgoci i przesyła dane do smartfona przez internet (MQTT) z wybranym interwałem czasowym. U
Alarm PIR do WiFi (i automatyki domowej): 7 kroków (ze zdjęciami)
Alarm PIR do Wi-Fi (i automatyki domowej): Przegląd Ta instrukcja daje możliwość przeglądania ostatniej daty/godziny (i opcjonalnie historii czasów) uruchomienia PIR alarmu domowego (pasywne czujniki podczerwieni) w automatyce domowej oprogramowanie. W tym projekcie będę
Zasilany bateryjnie ESP IoT: 10 kroków (ze zdjęciami)
Zasilany bateryjnie ESP IoT: Ta instrukcja pokazuje, jak stworzyć zasilany bateryjnie ESP IoT w oparciu o projekt z moich poprzednich instrukcji