
William Charles
0
3469
104
Pssst - chcesz jakiejś zaawansowanej technologii do swojego domowego biura lub tajnego zamka do swojego “warsztat” (ok, masz mnie, to właściwie loch / pokój gier) że dzieci nie będą w stanie tego zrozumieć? Jesteśmy z Tobą. Zbudujmy inteligentną blokadę DIY, która automatycznie wykrywa, gdy tam jesteś, i blokuje, gdy cię nie ma.
Jak to działa? NIKT NIE WIE! A dokładniej Bluetooth.
Koncepcja
Twój smartfon to potężne urządzenie, które stale ujawnia światu informacje o sobie; jednym ze sposobów jest Bluetooth.
W trybie wykrywania nadaje unikalny numer identyfikacyjny - ale nawet jeśli nie pozwala się na odkrycie, wszystko, co zna ten adres, może próbować go pingować. Jeśli usłyszysz odpowiedź, to wskaże, czy jest w zasięgu, czy nie.
Będziemy konfigurować Raspberry Pi z adapterem Bluetooth, aby stale obserwować, kiedy twój smartfon jest poza zasięgiem, a kiedy to jest, przekaźnik uruchomi się i zablokuje drzwi.
Będziesz potrzebować
- Raspberry Pi - każdy model powinien działać, ponieważ nie jest to zadanie wymagające dużej mocy procesora, ale używam starszego modelu B, a pinouty GPIO mogą się nieco różnić w twoim modelu. Zobacz sekcję dotyczącą trybu pokładowego poniżej. Potrzebne będą również podstawowe informacje, takie jak przewodowe połączenie Ethernet lub Wi-Fi. Konfigurowanie sieci bezprzewodowej w Raspberry Pi Konfigurowanie sieci bezprzewodowej w Raspberry Pi Praktycznie każdy projekt Raspberry Pi wymaga połączenia sieciowego i można uzyskać znaczną elastyczność ignorując port Ethernet na rzecz bezprzewodowego klucza USB. ; plus karta SD i kabel zasilający micro USB.
- Adapter USB Bluetooth. Adafruit sprzedaje moduł Bluetooth 4.0 BLE, który działa poprawnie (co to jest Bluetooth 4.0? Jak Bluetooth 4.0 kształtuje przyszłość mobilnej łączności Jak Bluetooth 4.0 kształtuje przyszłość mobilnej łączności Bluetooth jest zapomnianą gwiazdą w specyfikacji urządzenia.) przetestuj wszystko, co już masz, przed zakupem nowego tylko dla tego projektu. Znalazłem stary standardowy mini adapter Bluetooth, który kupiłem w Japonii, który wydaje się działać dobrze. Nie zależy nam na szybkości przesyłania ani niezawodności połączenia, ponieważ wszystko, co robimy, to wysyłanie szybkiego uścisku dłoni, aby sprawdzić, czy urządzenie jest żywe i ma się dobrze.
- Płytka rozdzielająca GPIO (“szewc”) i przewody rozruchowe. Możesz pracować bezpośrednio z pinów na Pi, ale jest to o wiele łatwiejsze, jeśli masz etykiety na każdym pinie, a i tak tylko 6 USD.
- Płyta przekaźnikowa. Masz tutaj szeroki wybór i wszystko będzie działać, jeśli jest przeznaczone do użytku z mikrokontrolerem i może zasilać co najmniej 12 woltów przy 5 amperach. Użyłem ogólnej 4-kanałowej płyty podobnej do tej za około 5 USD, ale zakładam, że wiesz, jak pracować.
- Blokada elektromagnesu 12 / 24V, choć powinna również działać elektroniczna blokada elektromagnesu. Ten, który kupiłem, ma siłę trzymania 180 kg i jest dostarczany wraz z płytami montażowymi i instrukcjami za około 35 USD.
- Zasilacz 12/24 V. Zamek magnetyczny musi mieć oddzielne źródło zasilania - cokolwiek robisz, nie próbuj wyciągać z niego zasilania z Pi.
- Aplikacja Lock.py Python, ale napiszemy to w miarę upływu czasu.
Praca z Bluetooth
Bluetooth ma kluczowe znaczenie dla tego projektu, więc zacznijmy od zainstalowania obsługi Bluetooth i przetestowania naszego adaptera. Możesz to zrobić bezpośrednio z Pi lub SSH zdalnie (jak skonfigurować Windows do SSH w tobie Pi Konfigurowanie Raspberry Pi do bezgłowego korzystania z SSH Konfigurowanie Raspberry Pi do bezgłowego korzystania z SSH Raspberry Pi może zaakceptować Polecenia SSH po podłączeniu do sieci lokalnej (przez Ethernet lub Wi-Fi), co umożliwia łatwą konfigurację. Korzyści z SSH wykraczają poza zakłócanie codziennej kontroli…).
sudo apt-get install bluez python-bluez
Włóż klucz sprzętowy, jeśli jeszcze tego nie zrobiłeś, i zobaczmy, co zgłasza.
hcitool dev
Jeśli masz coś na liście w wyjściu, możesz iść. Następnie użyjemy skryptu Python do sondowania pobliskich urządzeń Bluetooth i pobrania unikalnego adresu urządzenia. Musimy to zrobić tylko raz dla każdego urządzenia.
wget https://raw.githubusercontent.com/karulis/pybluez/master/examples/simple/inquiry.py python query.py
Jeśli zobaczysz “Znaleziono 0 urządzeń”, albo nie masz kompatybilnego klucza USB Bluetooth lub smartfona nie można wykryć. Nie rozpaczaj: okazało się, że musiałem otworzyć stronę ustawień Bluetooth na swoim iPhonie, aby przejść do trybu wykrywania, a potem tak się stało:
Świetnie, teraz stwórzmy pierwszy etap naszego oprogramowania, które wykrywa. Utwórz aplikację Python o nazwie wykryć.py, i otwórz go za pomocą Nano.
nano wykrywania.py
Wklej ten przykładowy kod:
#! / usr / bin / python importuj czas importowania bluetooth podczas True: wydrukuj „Sprawdzanie” + time.strftime („% a,% d% b% Y% H:% M:% S”, time.gmtime ()) wynik = nazwa_wyszukiwania bluetooth ('78: 7F: 70: 38: 51: 1B ', limit czasu = 5) jeśli (wynik! = Brak): wydrukuj „Użytkownik obecny” inaczej: wydrukuj „Użytkownik poza zasięgiem” time.sleep ( 10)
i dostosuj następujący wiersz za pomocą adresu urządzenia Bluetooth:
wynik = nazwa bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', limit czasu = 5)
naciśnij CTRL-X i Y zamknąć i zapisać. Uruchom ten sam kod, a zobaczysz coś takiego:
Kod powinien być bardzo prosty do zrozumienia, nawet jeśli nigdy wcześniej nie dotykałeś Pythona: skanuje określone urządzenie Bluetooth co 10 sekund i wypisuje inny komunikat w zależności od tego, czy został znaleziony, czy nie. Przełącz Bluetooth w telefonie, aby zasymulować ruch w zasięgu i poza zasięgiem (prawdopodobnie około 4 m w rzeczywistości). Możesz skrócić lub wydłużyć czas między skanami, ale czułem, że 10 sekund to rozsądny czas, aby potencjalnie poczekać na otwarcie drzwi, i w końcu to właśnie idziemy z całym tym projektem.
Powinienem dodać, że nie wiem o zużyciu energii podczas robienia tego, ale zakładam, że częstsze pingowanie urządzenia z pewnością zużywałoby więcej energii. Nie widziałem żadnych oczywistych problemów z wydajnością podczas testowania, ale jeśli żywotność baterii jest dla ciebie poważnym problemem, rozważ posiadanie przełącznika w biurze, który aktywuje i dezaktywuje pętlę skanowania, więc gdy będziesz w środku, możesz zatrzymać blokadę system, a następnie ponownie aktywuj skanowanie po wyjściu.
Gratulacje, masz teraz aplikację Python, która wie, kiedy jesteś w zasięgu, dzięki czemu możemy zacząć działać.
Tryby płytki GPIO
Zanim przejdziesz dalej, musisz dowiedzieć się, z którego trybu planszowego będziesz korzystać. Nie ma dobrej lub złej odpowiedzi, tylko wpływa na to, czy podasz dosłowny numer pin, czy wirtualny numer pin GPIO.
Domyślnie używany jest dosłowny numer pin (“tryb tablicy”), zaczynając od pinu 1 w lewym dolnym rogu (jeśli patrzysz w dół na Pi z portami USB po prawej). Pin 2 jest tuż powyżej.
Jeśli jednak masz awarię GPIO (“szewc”), etykiety, które masz pochodzą z alternatywnego trybu, zwanego “BCM” (Kanał Broadcom SOC) i są zwykle zapisywane z prefiksem numeru GPIO lub P. Nie potrzebujesz absolutnie przełomu w GPIO - to po prostu ułatwia. Jeśli nie masz płyty Breakout i nie chcesz jej kupować, skorzystaj z tego schematu:
Schemat pinów Raspberry Pi modelu A i B z RaspberryPi.org
Należy pamiętać, że oryginalny model B wersja 1, wersja 2 oraz model B + i Pi2 mają różne styki wyjściowe. Zapoznaj się z tym pytaniem StackExchange, aby uzyskać schemat prawidłowy na twojej tablicy.
W tym kodzie projektu korzystam z systemu numeracji BCM GPIO, który odpowiada posiadanej przeze mnie płycie antyadhezyjnej Adafruit. Niewielkie modyfikacje są potrzebne, jeśli chcesz użyć literalnego trybu pin.
Podłącz przekaźnik
Zamocuj płytkę wybijającą, upewniając się, że drut ze styków 1 i 2 (tych w rogu twojego Pi) jest podłączony do 3v3 i 5V0 na wybiciu. Aby to sprawdzić, możesz wyciągnąć tester napięcia.
Przed kontynuowaniem sprawdź, czy ktokolwiek inny używał twojego konkretnego przekaźnika z Raspberry Pi (lub znajdź taki, o którym wiesz, że działa). Niektóre mogą wymagać 5 V do aktywacji - ale RPi może zapewnić tylko 3,3 V na pinach wyjściowych GPIO. Przez przypadek ten, którego używam, jest zadowolony z 3,3 V, więc nie potrzebowałem żadnych dodatkowych obwodów, tylko 5 V0 do VCC, GND do GND, i Pin GPIO 23 dla pierwszego wejścia przekaźnika.
Mój poprzedni samouczek na temat GPIO Pierwsze kroki z GPIO na Raspberry Pi Pierwsze kroki z GPIO na Raspberry Pi Jeśli uważasz, że Arduino było fajne, poczekaj, aż dostaniesz Raspberry Pi - te rzeczy są niesamowite. Oprócz tego, że są w pełni funkcjonalnym komputerem, mają… pokazały, jak podłączyć obwód tranzystora, aby zwiększyć 3,3 V do pełnego 5 V, jeśli potrzebujesz (w rzeczywistości użyłem tej samej płytki przekaźnikowej do tego samouczka, ale okazuje się, że mimo wszystko nie potrzebowałem 5V).
Nie trzeba jeszcze podłączać elektromagnesu, ponieważ usłyszysz kliknięcie podczas uruchamiania przekaźnika.
Następnie weźmy kod do interakcji z portami GPIO.
Zaczniemy od przetestowania poza Pythonem, aby potwierdzić, że wszystko działa na samych portach. Zainstaluj wiringPi, który udostępnia przydatne narzędzia wiersza poleceń.
git clone git: //git.drogon.net/wiringPi cd wiringPi ./build
Po zainstalowaniu skonfiguruj pin GPIO 23 jako wyjście.
gpio -g tryb 23 wyjścia
Teraz wykonaj szybki skan wszystkich portów, aby potwierdzić
gpio -g readall
Będziesz miał coś podobnego do tego, chociaż twój może być dłuższy na modelu B + lub Pi2, ponieważ ma więcej pinów GPIO:
Na początku może to być nieco mylące, ale tabela jest podzielona na środek, a kolejność kolumn jest odwrócona z każdej strony. Po lewej i po prawej stronie znajduje się numer pinu BCM. Ponieważ używamy 23, powinieneś zobaczyć tryb na liście jako OUT. Jest to użyteczne, małe polecenie, aby po prostu dobrze zorientować się, co się dzieje ze wszystkimi pinami w dowolnym momencie.
Aby zapisać pin wysoki lub niski, po prostu użyj
gpio -g pisać 23 1 gpio -g pisać 23 0
Mamy nadzieję, że jeśli przekaźnik jest prawidłowo okablowany, usłyszysz klikanie i wyłączanie. Jeśli nie, nie kontynuuj, dopóki nie zorientujesz się w okablowaniu. Pamiętaj, że do aktywacji przekaźnika może być konieczne wyższe napięcie.
Po potwierdzeniu, że przekaźnik i GPIO działają, dodaj moduły Python dla GPIO.
sudo apt-get install python-dev python-rpi.gpio
Teraz zmodyfikujmy naszą aplikację Python, aby włączała lub wyłączała przekaźnik po wykryciu telefonu. Ostateczny kod znajdziesz w tej Gist. Skopiuj istniejący wykryć.py do nowego lock.py, i dodaj następujące polecenia importu i instalacji:
import RPi.GPIO jako GPIO GPIO.setmode (GPIO.BCM) RELAY = 23 GPIO.setup (RELAY, GPIO.OUT)
W instrukcji IF dodaj polecenie, aby włączyć lub wyłączyć przekaźnik. Pamiętaj, że twój przekaźnik może pracować z niskim lub wysokim sygnałem, więc dostosuj odpowiednio po testach.
GPIO.output (PRZEKAŹNIK, 1)
Aby uruchomić tę nową wersję, poprzedź polecenie za pomocą sudo - dostęp do GPIO wymaga uprawnień roota.
Hooking It Up
Po potwierdzeniu, że przekaźnik strzela czujnikiem zbliżeniowym, dodaj blokadę elektromagnesu. Po stronie przekaźnika doprowadzić dodatnie napięcie 12V do zacisku oznaczonego COM (wspólny), a następnie dodatni pobór mocy z elektromagnesu do zacisku NO (normalnie otwarty, tj. zwykle nie jest to podłączone do wspólnego terminala, ale nastąpi po aktywacji przekaźnika).
Połącz uziemienie z zasilacza i elektromagnesu na zacisku GND.
Zapoznaj się z instrukcjami montażu dołączonymi do zamka; drzwi muszą być dość grube i łatwiej jest je otworzyć od strony, w której ma być włączony zamek. Mój był odwrotny, więc potrzebuję wspornika montażowego w kształcie litery L, a także dodatkowego kawałka drewna, aby zwiększyć grubość drzwi.
Ulepszenia
Był to dla mnie dowód na to, że mogłem korzystać z innych projektów, i naprawdę po to, by nie wpatrywać się w moje biuro, gdy mnie nie ma - nie jest to niezawodny system bezpieczeństwa. W tym celu potrzebujesz zapasowej baterii, aby utrzymać przepływ prądu w przypadku odcięcia.
Oczywiście, jeśli ktoś włamie się do twojego domu i będzie miał problem z odcięciem twojej mocy, prawdopodobnie masz większy problem z tym, że jest psychopatą, który chce cię zabić, niż zwykłym włamywaczem. Chciałbyś także fizycznego zamka błyskawicznego oprócz elektronicznego i naprawdę dużego kija.
Oczywiście ta technika wykrywania bliskości za pomocą Bluetooth nie ogranicza się tylko do automatycznej blokady drzwi - możesz jej również użyć do uruchomienia drzwi garażowych po powrocie do domu lub włączenia kina domowego przed wejściem do drzwi.
Jaką funkcję powinienem dodać w następnej kolejności?? Czy miałeś jakieś problemy z budowaniem tego? Daj mi znać w komentarzach, a dołożę wszelkich starań, aby pomóc!