Spisu treści:

Alarm PIR do WiFi (i automatyki domowej): 7 kroków (ze zdjęciami)
Alarm PIR do WiFi (i automatyki domowej): 7 kroków (ze zdjęciami)

Wideo: Alarm PIR do WiFi (i automatyki domowej): 7 kroków (ze zdjęciami)

Wideo: Alarm PIR do WiFi (i automatyki domowej): 7 kroków (ze zdjęciami)
Wideo: NOWOCZESNY WIDEODOMOFON WIFI - ILE KOSZTUJE I JAKI WYBRAĆ? 2024, Listopad
Anonim
Image
Image
Alarm PIR do WiFi (i automatyki domowej)
Alarm PIR do WiFi (i automatyki domowej)

Przegląd

Ta instrukcja daje możliwość przeglądania ostatniej daty/godziny (i opcjonalnie historii czasów), kiedy zostały wyzwolone PIR (pasywne czujniki podczerwieni) twojego alarmu domowego w oprogramowaniu do automatyki domowej. W tym projekcie omówię, jak korzystać z OpenHAB (darmowego oprogramowania do automatyki domowej, którego osobiście używam), chociaż będzie on działać z każdym innym oprogramowaniem automatyki domowej lub aplikacją obsługującą MQTT (opisanym również w dalszej części tego artykułu). Ta instrukcja poprowadzi Cię przez niezbędne kroki, jak podłączyć płytkę drukowaną i Wemos D1 mini (płyta IOT, która wykorzystuje układ ESP8266), która łączy się ze strefami alarmowymi w skrzynce kontrolnej alarmu, tak aby strefa (zawierająca jeden lub więcej PIR) jest wyzwalany, Wemos wysyła wiadomość bezprzewodowo za pomocą protokołu MQTT do oprogramowania automatyki domowej, które z kolei wyświetla ostatnią datę/godzinę tego wyzwalacza. Dostępny jest również kod Arduino do programowania Wemos.

Wstęp

Powyższy obrazek jest tym, co widzę na jednym z ekranów w aplikacji OpenHAB na moim iPhonie. Tekst daty/godziny jest kodowany kolorami, aby zapewnić szybszą reprezentację, kiedy PIR został wyzwolony - będzie wyświetlany na czerwono (wyzwolony w ciągu ostatnich 1 minuty), pomarańczowy (wyzwolony w ciągu ostatnich 5 minut), zielony (wyzwolony w ciągu ostatnich 30 minut), niebieski (wyzwolony w ciągu ostatniej godziny) lub inny, czarny. Kliknięcie daty/czasu spowoduje wyświetlenie historycznego widoku wyzwalaczy PIR, gdzie 1 oznacza wyzwolenie, a 0 jest bezczynne. Jest to wiele zastosowań, na przykład może uzupełnić rozwiązanie obecności w domu, może wykrywać ruch, gdy jesteś poza domem i przez reguły OpenHAB, wysyłać powiadomienia na telefon, możesz go używać tak jak ja, aby sprawdzić, czy moje dzieci są wstawanie w środku nocy, wyzwalane przez PIR, który znajduje się na zewnątrz ich sypialni!

OpenHAB to po prostu oprogramowanie do automatyzacji domu, którego używam, jest wiele innych - a jeśli obsługują MQTT, możesz łatwo dostosować ten projekt do oprogramowania, którego używasz.

Założenia

Ta instrukcja zakłada, że już masz (lub skonfigurujesz):

  • Oczywiście domowy system alarmowy z PIR (pasywnymi czujnikami podczerwieni) i że masz dostęp do skrzynki sterującej alarmem, aby podłączyć niezbędne okablowanie
  • OpenHAB (bezpłatne oprogramowanie do automatyki domowej o otwartym kodzie źródłowym) działa, chociaż, jak wspomniano, powinno działać z dowolnym oprogramowaniem do automatyki domowej, które może zawierać powiązanie MQTT. Alternatywnie możesz samodzielnie zmienić kod, aby dopasować go do własnych potrzeb.
  • Broker Mosquitto MQTT (lub podobny) zainstalowany i wiązany skonfigurowany za pomocą OpenHAB (MQTT to protokół typu subskrybowania/publikowania komunikatów, który jest lekki i świetnie nadaje się do komunikacji między urządzeniami)

Jeśli nie korzystasz z OpenHAB i brokera MQTT, zapoznaj się z tym doskonałym artykułem na stronie internetowej MakeUseOf

Czego potrzebuję?

Aby utworzyć kontroler bezprzewodowy, musisz pozyskać następujące części:

  • Wemos D1 mini V2 (posiada wbudowany bezprzewodowy CHIP ESP8266)
  • Komparator LM339 (służy do sprawdzenia stanu bezczynności PIR w porównaniu z wyzwalaniem)
  • Źródło zasilania 5 V DC dla Wemos (OR, konwerter DC-DC buck. Uwaga: regulator napięcia LM7805 może nie działać w tej aplikacji, jak omówiono w dalszej części tego projektu)
  • Dwa rezystory do dzielnika napięcia (rozmiar będzie zależał od napięć alarmowych, omówionych w dalszej części projektu)
  • Jeden rezystor 1 kΩ działający jako rezystor obniżający do sterowania mocą LM339;
  • Jeden MOSFET 2N7000 (lub podobny) do logicznego włączania LM339 (ewentualnie opcjonalny, omówiony w dalszej części projektu)
  • Płytka stykowa o odpowiedniej wielkości do konfiguracji i testowania obwodów
  • Pęczek przewodów płytki stykowej do połączenia wszystkiego razem
  • Potrzebne narzędzia: obcinaki boczne, drut jednożyłowy
  • Multimetr prądu stałego (obowiązkowo!)

Krok 1: Skrzynka kontrolna systemu alarmowego

Skrzynka kontrolna systemu alarmowego
Skrzynka kontrolna systemu alarmowego

Najpierw kilka ostrzeżeń i zastrzeżeń

Osobiście posiadam system alarmowy Bosch. Gorąco polecam pobranie odpowiedniej instrukcji dla konkretnego systemu alarmowego i zapoznanie się z nią przed rozpoczęciem, ponieważ będziesz musiał wyłączyć system alarmowy, aby okablować linie. Polecam również przeczytanie tego artykułu w całości, zanim zaczniesz!

Poniżej znajduje się lista kilku rzeczy, które powinieneś wiedzieć przed rozpoczęciem - upewnij się, że przeczytałeś i zrozumiałeś każdą z nich, zanim przejdziesz dalej! Nie biorę żadnej odpowiedzialności, jeśli zepsujesz swój system alarmowy i/lub będziesz musiał zapłacić instalatorowi za jego naprawę. Jeśli jednak przeczytasz i zrozumiesz poniższe informacje i podejmiesz niezbędne środki ostrożności, wszystko powinno być w porządku:

1. Mój system alarmowy miał zapasową baterię w pudełku, a także miał przełącznik sabotażowy po wewnętrznej stronie pokrywy (który zapewnia dostęp do płyty systemu alarmowego), więc nawet wyłączenie zasilania alarmu z zewnątrz, podczas zdejmowania przedniego panelu sterowania pudełko wywołało alarm! Aby obejść ten problem podczas pracy nad projektem, ominąłem ochronę przed sabotażem, odłączając, a następnie zwierając przełącznik sabotażowy (gruby czerwony przewód, jak pokazano na powyższym zdjęciu)

2. Przy ponownym zasilaniu systemu alarmowego, po ok. 12 godzinach centrala alarmowa zaczęła wydawać dźwięki z kodami usterek. Po ustaleniu kodów usterek za pomocą instrukcji dowiedziałem się, że ostrzega mnie, że:

  • Nie ustawiono daty/godziny (potrzebowałem kodu głównego i sekwencji klawiszy z instrukcji do ponownej konfiguracji)
  • Czy bateria zapasowa nie była podłączona (łatwa naprawa, po prostu zapomniałem podłączyć baterię z powrotem)

3. W moim alarmie są 4 x bloki połączeń linii (oznaczone Z1-Z4) do podłączenia PIR na głównej płycie alarmowej, jednak - mój system alarmowy jest w stanie obsługiwać 8 stref. Każdy blok połączenia linii może w rzeczywistości obsługiwać 2 x strefy każda (Z1 robi Z1 i Z5, Z2 robi Z2 i Z6 itd.). System alarmowy ma wbudowaną ochronę sabotażową, aby powstrzymać kogoś przed otwarciem pokrywy systemu alarmowego, jak wspomniano powyżej, lub przecięciem przewodów do PIR. Rozróżnia sabotaż każdego wejścia za pomocą rezystorów EOL (końca linii). Są to rezystory o specjalnych rozmiarach, które znajdują się na "końcu linii" - innymi słowy, wewnątrz PIR (lub przełącznika sabotażowego skrzynki kontrolnej, skrzynki syreny lub czegokolwiek, co jest podłączone do tej strefy). Jak wspomniano, te rezystory są używane jako "sabotaż ochrona” - technicznie, jeśli ktoś przetnie kable do PIR - ponieważ system alarmowy spodziewa się zobaczyć określoną rezystancję z tego PIR, to jeśli rezystancja się zmieni, zakłada, że ktoś majstrował przy systemie i wywoła alarm.

Na przykład:

W moim alarmie strefa "Z4" ma 2 przewody, jeden wychodzi do PIR w moim korytarzu, a drugi do przełącznika sabotażowego skrzynki kontrolnej alarmu. Wewnątrz korytarza PIR ma rezystor 3300 omów. Drugi przewód biegnący do przełącznika sabotażowego skrzynki sterowniczej ma rezystor 6800 omów połączony szeregowo. W ten sposób system alarmowy (logicznie) rozróżnia sabotaże „Z4” i „Z8”. Podobnie strefa „Z3” ma PIR (z wbudowanym rezystorem 3300 omów) oraz styk sabotażowy syreny (z wbudowanym opornikiem 6800 omów), który tworzy „Z7”. Instalator alarmów wstępnie skonfigurowałby system alarmowy, aby wiedział, jakie urządzenie jest podłączone do każdej strefy (i dostosował rozmiar rezystora EOL, ponieważ system alarmowy jest zaprogramowany tak, aby wiedzieć, jaki rozmiar mają różne rezystory EOL). pod żadnym pozorem nie należy zmieniać wartości tych rezystorów!)

Tak więc w oparciu o powyższe, ponieważ każda strefa może mieć podłączonych do niej wiele urządzeń (o różnych wartościach rezystancji) i pamiętając wzór V = IR (napięcie = ampery x rezystancja), może to również oznaczać, że każda strefa może mieć różne napięcia. Co prowadzi nas do następnego kroku, pomiaru każdej strefy BEZCZYNNE vs WYZWALONE napięcie…

Krok 2: Pomiar napięcia strefy alarmowej

Pomiar napięcia strefy alarmowej
Pomiar napięcia strefy alarmowej
Pomiar napięcia strefy alarmowej
Pomiar napięcia strefy alarmowej

Po uzyskaniu dostępu do płyty głównej systemu alarmowego (i pominięciu przełącznika sabotażowego, jeśli taki posiadasz; zgodnie z poprzednim krokiem) włącz ponownie system alarmowy. Teraz musimy zmierzyć napięcie każdej strefy, gdy jest w stanie BEZCZYNNYM (brak ruchu przed czujnikiem PIR) lub WYZWOLONY (PIR wykrył ruch) Chwyć długopis i kartkę, aby zapisać odczyty napięcia.

OSTRZEŻENIE: Większość systemu alarmowego najprawdopodobniej będzie zasilana prądem stałym o napięciu 12 V, jednak jego początkowe zasilanie będzie wynosić 220 V (lub 110 V) AC, z transformatorem przekształcającym prąd zmienny na prąd stały. PRZECZYTAJ instrukcję i zachowaj dodatkowe środki ostrożności, upewniając się, że NIE mierzysz żadnych zacisków AC!!! Jak na zrzucie ekranu mojego systemu alarmowego na tej stronie, widać, że na samym dole obrazu znajduje się zasilanie AC, przekształcone na 12 V DC. Mierzymy napięcie 12V DC w zaznaczonych na czerwono polach. Nigdy nie dotykaj zasilania prądem zmiennym. Zachowaj szczególną ostrożność!

Pomiar napięcia PIR

Mam 4 x PIR podłączone do Z1 do Z4. Zmierz każdą ze stref w następujący sposób.

  1. Najpierw zidentyfikuj zacisk GND i zaciski linii na panelu alarmowym. Zaznaczyłem je na obrazku pokazanym w instrukcji mojego alarmu Bosch.
  2. Chwyć multimetr i ustaw pomiar napięcia na 20 V DC. Podłącz czarny kabel (COM) z multimetru do złącza GND na alarmie. Umieść czerwony (+) przewód z multimetru na pierwszej strefie - w moim przypadku oznaczonej "Z1". Zapisz odczyt napięcia. Wykonaj te same czynności dla pozostałych stref. Moje pomiary napięcia są następujące:
  • Z1 = 6,65V
  • Z2 = 6,65V
  • Z3 = 7,92V
  • Z4 = 7,92V

Zgodnie z powyższym, moje pierwsze dwie strefy mają dołączone tylko PIR. Dwie ostatnie linie mają podłączone zarówno czujniki PIR, jak i ochronę sabotażową (sabotaż skrzynki Z3, sabotaż syreny Z4). Zwróć uwagę na różnice napięć.

3. Do następnego kroku prawdopodobnie będziesz potrzebować 2 osób. Musisz także wiedzieć, który PIR znajduje się w której strefie. Wróć i odczytaj napięcie w pierwszej strefie. Teraz niech ktoś w twoim domu przejdzie przed PIR, napięcie powinno spaść. Zanotuj nowy odczyt napięcia. W moim przypadku napięcia po wyzwoleniu PIRów brzmią następująco:

  • Z1 = 0V
  • Z2 = 0V
  • Z3 = 4,30V
  • Z4 = 4,30V

Zgodnie z powyższym widzę, że po wyzwoleniu stref 1 i 2 napięcie spada z 6,65V do 0V. Jednak po wyzwoleniu stref 3 i 4 napięcie spada z 7,92V do 4,30V.

Pomiar zasilania 12 V

Do zasilania naszego projektu będziemy używać terminala 12 V DC ze skrzynki sterującej alarmem. Musimy zmierzyć napięcie z zasilania 12V DC na alarmie. Chociaż już mówi o 12 V, musimy znać dokładniejszy odczyt. W moim przypadku faktycznie odczytuje 13.15V. Zapisz to, będziesz potrzebować tej wartości w następnym kroku.

Dlaczego mierzymy napięcie?

Powodem, dla którego musimy mierzyć napięcie dla każdego PIR, jest obwód, który będziemy tworzyć. W tym projekcie użyjemy poczwórnego układu komparatora różnicowego LM339 (lub komparatora poczwórnego wzmacniacza operacyjnego). LM339 posiada 4 niezależne komparatory napięcia (4 kanały), gdzie każdy kanał pobiera 2 x napięcia wejściowe (jedno wejście odwracające (-) i jedno wejście nieodwracające (+), patrz schemat). napięcie nieodwracające, a następnie związane z nim wyjście zostanie przyciągnięte do masy. Podobnie, jeśli napięcie wejściowe nieodwracające spadnie poniżej napięcia wejściowego odwracającego, wyjście zostanie podciągnięte do Vcc. Dogodnie w moim domu mam 4 x PIR/strefy alarmowe - dlatego każda strefa będzie podłączona do każdego kanału na komparatorze. Jeśli masz więcej niż 4 x PIR, będziesz potrzebować komparatora z większą liczbą kanałów lub innego LM339!

Uwaga: LM339 zużywa energię w nanoamperach, więc nie wpłynie na rezystancję EOL istniejącego systemu alarmowego.

Jeśli jest to mylące, przejdź do następnego kroku i tak zacznie nabierać sensu, gdy go podłączymy!

Krok 3: Tworzenie dzielnika napięcia

Image
Image

Co to jest dzielnik napięcia?

Dzielnik napięcia to obwód z 2 x rezystorami (lub więcej) połączonymi szeregowo. Do pierwszego rezystora (R1) dostarczamy napięcie w (Vin). Druga noga R1 łączy się z pierwszą nogą drugiego rezystora (R2), a drugi koniec R2 łączy się z GND. Następnie pobieramy napięcie wyjściowe (Vout) z połączenia między R1 i R2. To napięcie stanie się naszym napięciem odniesienia dla LM339. Aby uzyskać więcej informacji na temat działania dzielników napięcia, zobacz film Adohms na YouTube

(Uwaga: rezystory nie mają polaryzacji, więc można je podłączyć w obie strony)

Obliczanie naszego napięcia odniesienia

Zakładając, że napięcie spada po uruchomieniu PIR (powinno to dotyczyć większości alarmów), to co staramy się osiągnąć, to uzyskać odczyt napięcia, który znajduje się w połowie drogi między naszym najniższym napięciem biegu jałowego a najwyższym napięciem wyzwalania, to stanie się naszym napięciem odniesienia.

Biorąc mój alarm jako przykład…

Napięcia jałowe strefy wynosiły Z1 = 6,65 V, Z2 = 6,65 V, Z3 = 7,92 V, Z4 = 7,92 V. Najniższe napięcie biegu jałowego wynosi zatem 6,65V

Napięcia wyzwalane wejściami wynosiły: Z1 = 0V, Z2 = 0V, Z3 = 4,30V, Z4 = 4,30V. Najwyższe wyzwalane napięcie wynosi zatem 4,30 V

Więc musimy wybrać liczbę w połowie między 4,30 V a 6,65 V (nie musi być dokładna, tylko z grubsza) W moim przypadku moje napięcie odniesienia musi wynosić około 5,46 V. Uwaga: Jeśli najniższe napięcie spoczynkowe i najwyższe wyzwalane napięcie są bardzo blisko siebie z powodu wielu stref powodujących różne napięcia, może być konieczne utworzenie 2 lub więcej dzielników napięcia.

Obliczanie naszych wartości rezystorów dla dzielnika napięcia

Teraz mamy napięcie odniesienia, musimy obliczyć, jakiej wielkości rezystorów potrzebujemy, aby stworzyć dzielnik napięcia, który zapewni nasze napięcie odniesienia. Będziemy używać źródła napięcia 12V DC (Vs) z alarmu. Jednak, jak w poprzednim kroku, kiedy mierzyliśmy zasilanie 12 V DC, faktycznie otrzymaliśmy 13,15 V. Musimy obliczyć dzielnik napięcia, używając tej wartości jako źródła.

Oblicz Vout za pomocą prawa omów…

Vout = Vs x R2 / (R1 + R2)

…lub skorzystaj z internetowego kalkulatora dzielnika napięcia:-)

Będziesz musiał poeksperymentować z wartościami rezystorów, aż osiągniesz pożądaną moc wyjściową. W moim przypadku wyszło, że R1 = 6,8 kΩ i R2 = 4,7 kΩ, liczone w długiej formie w następujący sposób:

Vout = Vs x R2 / (R1 + R2)

Vout = 13,15 x 4700 / (6800 + 4700)

Vout = 61, 805 / 11, 500

Vout = 5,37V

Krok 4: Podłącz LM339

Okablowanie Wemos D1 Mini
Okablowanie Wemos D1 Mini

Dzielnik napięcia do wejść odwracających LM339

Jak wspomniano wcześniej w odniesieniu do komparatora LM339, zajmie on 2 wejścia. Jeden będzie napięciem z każdego PIR do każdego kanału nieodwracającego zacisku (+), drugi będzie naszym napięciem odniesienia do naszego zacisku odwracającego (-). Napięcie odniesienia musi zasilać wszystkie 4 wejścia odwracające komparatora. Przed wykonaniem tych czynności wyłącz system alarmowy.

  • Poprowadź przewód z bloku 12V DC w systemie alarmowym do szyny + na płytce stykowej *
  • Poprowadź przewód od bloku GND w systemie alarmowym do - szyny na płytce stykowej **
  • Zainstaluj komparator LM339 na środku płytki stykowej (nacięcie wskazuje najbliżej pinu 1)
  • Zainstaluj 2 x rezystory, aby utworzyć obwód dzielnika napięcia i przewód do dzielenia napięcia na zewnątrz
  • Poprowadź przewody z Vout z podziałem napięcia do każdego zacisku odwracającego LM339

* WSKAZÓWKA: jeśli to możliwe, użyj zacisku krokodylkowego do zasilania, ponieważ ułatwia to włączenie/wyłączenie zasilania do projektu** WAŻNE! MOSFET może być wymagany, JEŚLI zasilasz Wemos z panelu alarmowego! W moim przypadku LM339, Wemos i Alarm otrzymują zasilanie z tego samego źródła (tj. samego systemu alarmowego). To pozwala mi włączyć zasilanie do wszystkiego za pomocą jednego połączenia zasilania. Jednak domyślnie piny GPIO na Wemos są zdefiniowane jako piny „INPUT” - co oznacza, że przyjmują każde napięcie, które jest na nie rzucane i polegają na tym źródle, aby zapewnić prawidłowe poziomy napięcia (poziomy min / max), aby Wemos wygrał. t się rozbić lub wypalić. W moim przypadku system alarmowy dostaje zasilanie i zaczyna bardzo szybko uruchamiać sekwencję - tak szybko, że robi to, zanim Wemos może się uruchomić i zadeklarować piny GPIO jako "INPUT_PULLUP" (napięcie podciągnięte wewnętrznie w żeton). Nie oznacza to, że różnice napięć powodowałyby awarię Wemosów, gdy cały system dostałby zasilanie. Jedynym sposobem na obejście tego byłoby ręczne wyłączenie i włączenie Wemos. Aby rozwiązać ten problem, dodawany jest MOSFET, który działa jako „przełącznik logiczny” do zasilania LM339. Dzięki temu Wemos może się uruchomić, ustawić 4 x piny GPIO komparatora jako „INPUT_PULLUP's”, opóźnić kilka sekund, a NASTĘPNIE (przez inny pin GPIO D5 zdefiniowany jako WYJŚCIE) wysłać sygnał „HIGH” przez pin GPIO D5 do MOSFET, co logicznie włącza LM339. Zalecałbym okablowanie jak powyżej, ale jeśli okaże się, że Wemos ulega awarii, tak jak ja, to będziesz musiał dołączyć MOSFET z rezystorem ściągającym 1 kΩ. Aby uzyskać więcej informacji, jak to zrobić, zobacz koniec tej instrukcji.

Strefy alarmowe do wejść nieodwracających LM339

Musimy teraz poprowadzić przewody z każdej strefy w centrali alarmowej do wejść komparatora LM339. Gdy system alarmowy jest nadal wyłączony, dla każdej strefy doprowadź przewód do każdego wejścia nieodwracającego (+) w komparatorze LM339. Na przykład w moim systemie:

  • Przewód z Z1 idzie do wejścia LM339 1+
  • Przewód z Z2 idzie do wejścia LM339 2+
  • Przewód z Z3 idzie do wejścia LM339 3+
  • Przewód z Z4 idzie do wejścia LM339 4+

Zapoznaj się z pinem LM339 w kroku 3, jeśli masz przypomnienie (jest on oznaczony kolorem z obrazem płytki prototypowej). Po zakończeniu tablica prototypowa powinna wyglądać podobnie do obrazu pokazanego w tym kroku.

Włącz system alarmowy i zmierz napięcie wychodzące z dzielnika napięcia, aby upewnić się, że jest równe napięciu odniesienia obliczonemu wcześniej.

Krok 5: Okablowanie Wemos D1 Mini

Okablowanie Wemos D1 mini

Teraz mamy pod opieką wszystkie wejścia LM339, musimy teraz okablować Wemos D1 mini. Każdy pin wyjściowy LM339 trafia do pinu Wemos GPIO (wejście/wyjście ogólnego przeznaczenia), który oznaczymy za pomocą kodu jako pin pullup wejściowy. Wemos pobiera maksymalnie 5 V jako napięcie Vcc (źródło wejściowe) (chociaż reguluje to wewnętrznie do 3,3 V). Użyjemy bardzo popularnego regulatora napięcia LM7805 (EDYCJA: patrz poniżej), aby obniżyć szynę 12 V na płytce stykowej do 5V do zasilania Wemos. Arkusz danych LM7805 wskazuje, że potrzebujemy kondensatora podłączonego z każdej strony regulatora, aby wygładzić moc, jak pokazano na obrazie płytki stykowej. Dłuższa odnoga kondensatora jest dodatnia (+), więc upewnij się, że jest prawidłowo podłączony.

Regulator napięcia pobiera napięcie (pin po lewej stronie), uziemienie (pin środkowy) i wyjście napięcia (pin po prawej stronie) Dokładnie sprawdź pin-out, jeśli regulator napięcia różni się od LM7805.

(EDYTUJ: Zauważyłem, że wzmacniacze pochodzące z panelu alarmowego były zbyt wysokie, aby LM7805 mógł sobie z nimi poradzić. To powodowało dużo ciepła w małym radiatorze LM7805 i powodowało jego awarię, co z kolei powodowało zatrzymanie Wemos działa. Wymieniłem LM7805 i kondensatory na konwerter DC-DC buck i od tego czasu nie miałem żadnych problemów. Są one bardzo łatwe do podłączenia. Po prostu podłącz napięcie wejściowe z alarmu, najpierw podłącz do multimetru i użyj śruby potencjometru i wyreguluj, aż napięcie wyjściowe wyniesie ~5V)

Piny wejściowe GPIO

W tym projekcie używamy następujących pinów:

  • strefa Z1 => pin D1
  • strefa Z2 => pin D2
  • strefa Z3 => pin D3
  • strefa Z4 => pin D5

Podłącz wyjścia z LM339 do odpowiednich pinów GPIO na płycie Wemos, zgodnie z obrazem płytki prototypowej pokazanym w tym kroku. Ponownie oznaczyłem kolorami wejścia i pasujące wyjścia, aby łatwiej było zobaczyć, co odnosi się do czego. Każdy pin GPIO w Arduino jest zdefiniowany jako „INPUT_PULLUP”, co oznacza, że podczas normalnego użytkowania (IDLE) będą one podciągnięte do 3,3 V, a LM339 pociągnie je do ziemi w przypadku wyzwolenia PIR. Kod wykrywa zmianę z WYSOKIEGO na NISKI i wysyła wiadomość bezprzewodowo do oprogramowania automatyki domowej. Jeśli masz problemy z tym działaniem, możliwe, że masz wejścia odwracające i nieodwracające w niewłaściwy sposób (jeśli napięcie z twojego PIR wzrośnie po wyzwoleniu, jak to ma miejsce w większości hobbystycznych PIR, wtedy będziesz chciał, aby połączenia były inna droga naokoło)

IDE Arduino

Usuń Wemos z płytki prototypowej, teraz musimy wgrać do niego kod (alternatywny link tutaj) Nie będę szczegółowo omawiał, jak to zrobić, ponieważ w sieci jest wiele artykułów na temat przesyłania kodu do Wemos lub innego ESP8266 tablice typu. Podłącz kabel USB do płyty Wemos i do komputera i uruchom Arduino IDE. Pobierz kod i otwórz go w swoim projekcie. Musisz upewnić się, że zainstalowana i załadowana jest prawidłowa płyta dla twojego projektu, a także wybrany prawidłowy port COM (Narzędzia, Port). Potrzebne będą również odpowiednie zainstalowane biblioteki (PubSubClient, ESP8266Wifi). Aby dołączyć tablicę Wemos do szkicu, zapoznaj się z tym artykułem.

Będziesz musiał zmienić następujące wiersze kodu i zastąpić własnym identyfikatorem SSID i hasłem dla połączenia bezprzewodowego. Zmień również adres IP, aby wskazywał na własnego brokera MQTT.

// Wi-Fi

const char* ssid = "tutaj_twój_identyfikator_wifi"; const char* hasło = "twoje_hasło_wifi_tutaj"; // Adres IP brokera MQTT MQTT_SERVER(172, 16, 223, 254)

Po zmianie zweryfikuj swój kod, a następnie prześlij go na płytę Wemos za pomocą kabla USB.

Uwagi:

  • Jeśli używasz różnych portów GPIO, musisz dostosować kod. Jeśli używasz więcej lub mniej stref niż mam, będziesz musiał również dostosować kod i TOTAL_ZONES=4; stały na miarę.
  • Podczas uruchamiania mojego systemu alarmowego system alarmowy wykona test zasilania dla wszystkich 4 x PIR, które przyciągnęły wszystkie podłączone GPIO do masy, powodując, że Wemos myślał, że strefy są wyzwalane. Kod zignoruje wysyłanie wiadomości MQTT, jeśli zobaczy wszystkie 4 x linie aktywne w tym samym czasie, ponieważ zakłada, że system alarmowy jest włączony.

Alternatywny link do pobrania do kodu TUTAJ

Krok 6: Testowanie i konfiguracja OpenHAB

Testowanie i konfiguracja OpenHAB
Testowanie i konfiguracja OpenHAB

Testowanie MQTT

MQTT to system przesyłania wiadomości typu „subskrybuj / publikuj”. Jedno lub więcej urządzeń może rozmawiać z „brokerem MQTT” i „zasubskrybować” określony temat. Wszelkie komunikaty przychodzące z dowolnego innego urządzenia, które są „opublikowane” w tym samym temacie, zostaną rozesłane przez brokera do wszystkich urządzeń, które go subskrybują. Jest to niezwykle lekki i prosty w użyciu protokół, idealny jako prosty system wyzwalania, taki jak ten tutaj. W celu przetestowania możesz wyświetlić przychodzące wiadomości MQTT z Wemos do swojego brokera MQTT, uruchamiając następujące polecenie na serwerze Mosquitto (Mosquitto jest jednym z wielu dostępnych programów MQTT Broker). To polecenie subskrybuje przychodzące wiadomości Keepalive:

mosquitto_sub -v -t openhab/alarm/status

Powinieneś widzieć wiadomości przychodzące z Wemos co około 30 sekund z liczbą „1” (co oznacza „żyję”) Jeśli widzisz stałe „0” (lub brak odpowiedzi), oznacza to brak komunikacji. Gdy zobaczysz nadchodzący numer 1, oznacza to, że Wemos komunikuje się z brokerem MQTT (wyszukaj „MQTT Last Will and Testament”, aby uzyskać więcej informacji o tym, jak to działa, lub zobacz ten naprawdę dobry wpis na blogu)

Po upewnieniu się, że komunikacja działa, możemy przetestować, czy stan strefy jest zgłaszany przez MQTT. Subskrybuj następujący temat (# to symbol wieloznaczny)

mosquitto_sub -v -t openhab/alarm/#

Powinny pojawić się zwykłe komunikaty o stanie, podobnie jak adres IP samego Wemos. Idź przed PIR i powinieneś również zobaczyć informację o linii wskazującą, że jest OTWARTA, a sekundę lub więcej, że jest ZAMKNIĘTA, podobnie jak poniżej:

openhab/alarm/stan 1

openhab/alarm/strefa1 OPEN

openhab/alarm/strefa1 ZAMKNIĘTE

Gdy to zadziała, możemy skonfigurować OpenHAB tak, aby było to ładnie reprezentowane w GUI.

Konfiguracja OpenHAB

Do OpenHAB wymagane są następujące zmiany:

Plik transformacji 'alarm.map': (opcjonalnie, do testów)

CLOSED=IdleOPEN=TriggeredNULL=Nieznany-=Nieznany

Plik przekształcenia „status.map”:

0=Niepowodzenie

1=Online -=W DÓŁ! NULL=nieznany

plik „przedmioty”:

Łańcuch alarmMonitorState "Monitor alarmów [MAP(status.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/status:state:default]" } Łańcuch alarmMonitorIPAdres "IP monitora alarmów [%s]" { mqtt ="<[mqttbroker:openhab/alarm/ipaddress:state:default]" } Numer zone1_Chart_Period "Wykres strefy 1" Alarm kontaktowyZone1State "Stan strefy 1 [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone1:state:default" } String alarmZone1Trigger "Lounge PIR [%1$ta %1$tr]" Numer zone2_Chart_Period "Wykres strefy 2" Kontakt alarmZone2State "Stan strefy 2 [MAP(alarm.map):% s]" { mqtt="<[mqttbroker:openhab/alarm/zone2:state:default" } String alarmZone2Trigger "PIR pierwszej hali [%1$ta %1$tr]" Numer zone3_Chart_Period "Wykres strefy 3" Kontakt alarmZone3State "Strefa 3 Stan [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone3:state:default" } String alarmZone3Trigger "PIR sypialni [%1$ta %1$tr]" Numer zone4_Chart_Period "Wykres strefy 4" Kontakt alarmZone4State "Stan strefy 4 [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openha b/alarm/zone4:state:default" } String alarmZone4Trigger "PIR Hall Główny [%1$ta %1$tr]"

plik 'sitemap' (w tym wykresy rrd4j):

Element tekstowy=alarmZone1Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Przełącz element=zone1_Chart_Period label= Mapowanie "okresu"=[0="Godzina", 1="Dzień", 2="Tydzień"] Image url="https://localhost:8080/rrdchart.png" widoczność=[zone1_Chart_Period==0, zone1_Chart_Period= =Niezainicjowany] Obraz url="https://localhost:8080/rrdchart.png" widoczność=[zone1_Chart_Period==1] Obraz url="https://localhost:8080/rrdchart.png" widoczność=[zone1_Chart_Period==2] } } Element tekstowy=alarmZone2Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Ramka { Przełącz element= zone2_Chart_Period label="Okres" mappings=[0="Godzina", 1="Dzień", 2="Tydzień"] Image url="https://localhost:8080/rrdchart.png" visible=[zone2_Chart_Period==0, zone2_Chart_Period==Niezainicjowany] Obraz url="https://localhost:8080/rrdchart.png" widoczność=[zone2_Chart_Period==1] Obraz url="https://localhost:8080/rrdchart.png" widoczność=[zone2_Chart_Period ==2] } } Element tekstowy=alarmZone3Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Przełącz element=zone3_Chart_Period label="Period" mapowania =[0="Godzina", 1="Dzień", 2="Tydzień"] Obraz url="https://localhost:8080/rrdchart.png" widoczność=[zone3_Chart_Period==0, zone3_Chart_Period==Niezainicjowany] Obraz url="https://localhost:8080/rrdchart.png" widoczność=[zone3_Chart_Period==1] Obraz url="https://localhost:8080/rrdchart.png" visible=[zone3_Chart_Period==2] } } Tekst item=alarmZone4Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Switch item=zone4_Chart_Period label=" Odwzorowania okresu"=[0="Godzina", 1="Dzień", 2="Tydzień"] Image url="https://localhost:8080/rrdchart.png" visible=[zone4_Chart_Period==0, zone4_Chart_Period== Niezainicjowany] Obraz url="https://localhost:8080/rrdchart.png" widoczność=[zone4_Chart_Period==1] Obraz url="https://localhost:8080/rrdchart.png" widoczność=[zone4_Chart_Period==2] } } // OPCJONALNE, ale przydatne do diagnozowania stanu i adresu IP ss Element tekstowy=alarmMonitorState Element tekstowy=alarmMonitorIPAdres

plik „reguły”:

reguła „Zmiana stanu strefy alarmowej 1”

kiedy pozycja alarmZone1State zmieni się na OPEN, a następnie postUpdate(alarmZone1Trigger, nowa DateTimeType()) alarmZone1State.state = CLOSED end

reguła „Zmiana stanu strefy alarmowej 2”

kiedy pozycja alarmZone2State zmieni się na OPEN, a następnie postUpdate(alarmZone2Trigger, nowa DateTimeType()) alarmZone2State.state = CLOSED end

reguła „Zmiana stanu strefy 3 alarmowej”

kiedy pozycja alarmZone3State zmieni się na OPEN, a następnie postUpdate(alarmZone3Trigger, nowa DateTimeType()) alarmZone3State.state = CLOSED end

reguła „Zmiana stanu strefy alarmowej 4”

kiedy pozycja alarmZone4State zmieni się na OPEN, a następnie postUpdate(alarmZone4Trigger, nowa DateTimeType()) alarmZone4State.state = CLOSED end

Być może trzeba będzie nieco zmienić powyższą konfigurację OpenHAB, aby dostosować ją do własnej konfiguracji.

Jeśli masz jakiekolwiek problemy z wyzwalaniem czujników PIR, zacznij od początku i zmierz napięcia dla każdej części obwodu. Gdy będziesz z tego zadowolony, sprawdź okablowanie, upewnij się, że istnieje wspólna płaszczyzna, sprawdź wiadomości na Wemos za pomocą szeregowej konsoli debugowania, sprawdź komunikację MQTT i sprawdź składnię swoich transformacji, elementów i plików map witryn.

Powodzenia!

Zalecana: