Erstellen Sie eine automatisch abschließende Bürotür mit einem Smartphone-Annäherungssensor

Erstellen Sie eine automatisch abschließende Bürotür mit einem Smartphone-Annäherungssensor / Intelligentes Zuhause

Pssst - Möchten Sie einen High-Tech-Schutz für Ihr Home-Office oder ein Geheimschloss für Ihr Büro? “Werkstatt” (ok, du hast mich, es ist eigentlich ein Dungeon / ein Spielzimmer) dass die Kinder nicht herausfinden können? Wir geben dir Deckung. Lassen Sie uns ein intelligentes DIY-Schloss bauen, das automatisch erkennt, wenn Sie dort sind, und es wird gesperrt, wenn Sie es nicht sind.

Wie funktioniert es? NIEMAND WEISS! Oder genauer Bluetooth.

Das Konzept

Ihr Smartphone ist ein leistungsstarkes Gerät, das der Außenwelt ständig Informationen über sich preisgibt. Eine Möglichkeit, dies zu tun, ist Bluetooth.

Im Discovery-Modus wird eine eindeutige Identifikationsnummer gesendet. Wenn Sie sich jedoch nicht explizit erkennen lassen, kann alles, was diese Adresse kennt, versuchen, einen Ping-Vorgang durchzuführen. Wenn eine Antwort gehört wird, würde dies anzeigen, ob sie sich in Reichweite befindet oder nicht.

Wir richten ein Raspberry Pi mit einem Bluetooth-Adapter ein, um ständig nach Ausschau zu halten, wenn sich Ihr Smartphone außerhalb der Reichweite befindet. Wenn dies der Fall ist, rastet das Relais ein und verriegelt die Tür.

Du wirst brauchen

  • Raspberry Pi - Jedes Modell sollte funktionieren, da dies keine CPU-intensive Aufgabe ist. Ich verwende jedoch ein älteres Modell B, und die GPIO-Pinbelegung kann bei Ihrem Modell etwas anders sein. Siehe den Abschnitt Bordmodus unten. Sie benötigen auch einige Grundlagen, wie eine kabelgebundene Ethernet-Verbindung oder WLAN, die konfiguriert ist. Einrichten eines drahtlosen Netzwerks auf Ihrem Raspberry Pi Einrichten eines drahtlosen Netzwerks auf Ihrem Raspberry Pi Nahezu jedes Raspberry Pi-Projekt erfordert eine Netzwerkverbindung, und es kann eine erhebliche Flexibilität erreicht werden durch Ignorieren des Ethernet-Anschlusses zugunsten eines drahtlosen USB-Dongles. Weiterlesen ; plus SD-Karte und Micro-USB-Stromkabel.
  • Bluetooth USB-Adapter Adafruit verkauft ein Bluetooth 4.0 BLE-Modul, das funktioniert (Bluetooth 4.0? Wie Bluetooth 4.0 die Zukunft der mobilen Konnektivität gestaltet. Wie Bluetooth 4.0 die Zukunft der mobilen Konnektivität gestaltet. Bluetooth ist der vergessene Stern auf dem Datenblatt des Geräts. Weitere Informationen), aber Sie sollten alle, die Sie bereits herumliegen, testen, bevor Sie eine neue für dieses Projekt kaufen. Ich habe einen alten Standard-Bluetooth-Mini-Adapter gefunden, den ich in Japan gekauft habe. Er scheint gut zu funktionieren. Die Übertragungsgeschwindigkeit und die Zuverlässigkeit der Verbindungen sind uns egal, da wir lediglich einen kurzen Handshake senden, um zu prüfen, ob ein Gerät in Ordnung ist.
  • GPIO Breakout-Board (“Cobbler”) und Überbrückungskabel. Sie können direkt von den Pins des Pi aus arbeiten, aber es ist viel einfacher, wenn Sie auf jedem Pin Beschriftungen haben, und sie sind sowieso nur 6 $.
  • Relaisplatine. Sie haben hier eine große Auswahl, und alles funktioniert, wenn es für die Verwendung mit einem Mikrocontroller konzipiert ist und mindestens 12 Volt bei 5 Ampere ansteuern kann. Ich habe eine generische 4-Kanal-Platine verwendet, die dieser für etwa 5 US-Dollar ähnelt. Ich gehe jedoch davon aus, dass Sie wissen, wie Sie Ihre arbeiten.
  • 12 / 24V-Elektromagnetschloss, ein elektronisches Magnetschloss sollte jedoch ebenfalls funktionieren. Der, den ich gekauft habe, hat eine Haltekraft von 180 kg und wird mit Montageplatten und Anweisungen für etwa 35 US-Dollar geliefert.
  • 12 / 24V Spannungsversorgung. Das Magnetschloss muss über eine separate Stromversorgung verfügen - was auch immer Sie tun, versuchen Sie nicht, dem Pi Strom zuzuführen.
  • Lock.py Python-App, aber wir werden dies im weiteren Verlauf schreiben.

Mit Bluetooth arbeiten

Bluetooth ist für dieses Projekt von zentraler Bedeutung. Lassen Sie uns zunächst einige Bluetooth-Unterstützung installieren und unseren Adapter testen. Sie können dies entweder direkt vom Pi aus oder über SSH aus der Ferne tun (wie Sie Windows für SSH einrichten. Einrichten des Raspberry Pi für die Verwendung ohne Heads mit SSH. Einrichten des Raspberry Pi für die Verwendung ohne Heads mit SSH. Das Raspberry Pi kann akzeptieren SSH-Befehle bei Anschluss an ein lokales Netzwerk (entweder über Ethernet oder Wi-Fi), sodass Sie es einfach einrichten können. Die Vorteile von SSH gehen über die tägliche Überwachung hinaus..

sudo apt-get install bluez python-bluez

Stecken Sie Ihren Dongle ein, falls Sie dies noch nicht getan haben, und schauen Sie sich an, was er berichtet.

hcitool dev

Wenn Sie etwas in der Ausgabe aufgelistet haben, können Sie loslegen. Als Nächstes verwenden wir ein Python-Skript, um nach Bluetooth-Geräten in der Nähe zu suchen und die eindeutige Geräteadresse zu erhalten. Wir müssen dies nur einmal für jedes Gerät tun.

wget https://raw.githubusercontent.com/karulis/pybluez/master/examples/simple/inquiry.py python query.py

Wenn du siehst “0 Geräte gefunden”, Sie haben entweder keinen kompatiblen USB-Bluetooth-Dongle oder Ihr Smartphone ist nicht erkennbar. Verzweifeln Sie jedoch nicht: Ich musste feststellen, dass ich die Seite mit den Bluetooth-Einstellungen auf meinem iPhone öffnen musste, um den Erkennungsmodus zu aktivieren. Dann passierte Folgendes:

Toll, jetzt erstellen wir die erste Stufe unserer Software, die die Erkennung durchführt. Erstellen Sie eine aufgerufene Python-App detect.py, und öffne es mit Nano.

nano detect.py

Fügen Sie diesen Beispielcode ein:

#! / usr / bin / python Importieren der Bluetooth-Importzeit während "True": "Checking" + time.strftime drucken ("% a,% d% b% Y% H:% M:% S", time.gmtime ()) result = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', timeout = 5) if (Ergebnis! = Keine): print "Benutzer vorhanden" ansonsten: print "Benutzer außerhalb des Bereichs" time.sleep ( 10) 

und passen Sie die folgende Zeile an Ihre Bluetooth-Geräteadresse an:

result = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', Timeout = 5)

Drücken Sie STRG-X und Y schließen und speichern. Führen Sie den gleichen Code aus, und Sie sehen Folgendes:

Der Code sollte sehr einfach zu verstehen sein, auch wenn Sie Python noch nie zuvor berührt haben: Er sucht alle 10 Sekunden nach einem bestimmten Bluetooth-Gerät und druckt eine andere Meldung, je nachdem, ob er gefunden wurde oder nicht. Schalten Sie die Bluetooth-Funktion Ihres Telefons ein, um das Hin- und Herbewegen zu simulieren (in Wirklichkeit wahrscheinlich etwa 4 Meter). Sie können die Zeit zwischen den Scans verkürzen oder verlängern, aber ich hatte das Gefühl, dass 10 Sekunden eine vernünftige Zeit waren, um möglicherweise warten zu müssen, bis die Tür entriegelt wird.

Ich muss hinzufügen, ich weiß nicht, wie viel Energie dies benötigt, aber ich würde davon ausgehen, dass ein häufigeres Ping eines Geräts notwendigerweise mehr Energie verbraucht. Ich habe keine offensichtlichen Leistungsprobleme beim Testen gesehen, aber wenn die Akkulaufzeit für Sie ein ernstes Problem ist, sollten Sie einen Schalter in Ihrem Büro in Betracht ziehen, der die Scan-Schleife aktiviert und deaktiviert. Wenn Sie erst einmal drinnen sind, können Sie die Sperre unterbrechen aktivieren Sie das Scannen erneut, wenn Sie es verlassen.

Glückwunsch, Sie haben jetzt eine Python-App, die weiß, wann Sie sich in Reichweite befinden, sodass wir anfangen können, darauf zu reagieren.

GPIO-Kartenmodi

Bevor Sie fortfahren, müssen Sie herausfinden, welchen Board-Modus Sie verwenden werden. Es gibt keine richtige oder falsche Antwort, es beeinflusst nur, ob Sie die wörtliche Pin-Nummer oder die virtuelle GPIO-Pin-Nummer angeben.

Die Standardeinstellung ist die Literal-Pin-Nummer (“Board-Modus”), beginnend mit Pin 1 unten links (wenn Sie auf den Pi mit den USB-Anschlüssen rechts schauen). Pin 2 liegt direkt darüber.

Wenn Sie jedoch einen GPIO-Ausbruch haben (“Cobbler”) Board, die Labels, die Sie haben, stammen aus einem alternativen Modus, genannt “BCM” (Broadcom SOC-Kanal) und werden üblicherweise mit GPIO oder P vor der Nummer geschrieben. Sie brauchen nicht unbedingt einen GPIO-Ausbruch - das macht die Sache einfach einfacher. Wenn Sie keine Breakout-Karte haben und keine kaufen möchten, verwenden Sie dieses Diagramm:

Raspberry Pi model A und B Pinout-Diagramm von RaspberryPi.org

Beachten Sie, dass das ursprüngliche Modell B, Revision 1, Revision 2, und das Modell B + und Pi2 alle unterschiedliche Pin-Ausgänge haben. In dieser StackExchange-Frage finden Sie ein Diagramm, das für Ihre Karte korrekt ist.

In diesem Projektcode verwende ich das BCM GPIO-Nummerierungssystem, das dem Adafruit Breakout-Board entspricht, das ich habe. Wenn Sie den wörtlichen Pin-Modus verwenden möchten, sind geringfügige Änderungen erforderlich.

Draht in einem Relais

Bringen Sie die Breakout-Platine an und stellen Sie sicher, dass der Draht von den Pins 1 und 2 (die in der Ecke Ihres Pi) an 3v3 und 5V0 am Breakout angeschlossen sind. Möglicherweise möchten Sie einen Spannungsprüfer herausziehen, um dies zu überprüfen.

Bevor Sie fortfahren, überprüfen Sie, ob jemand anderes Ihr spezielles Relais mit dem Raspberry Pi verwendet hat (oder finden Sie zuvor eines, von dem Sie wissen, dass es funktioniert). Einige erfordern möglicherweise 5 V zur Aktivierung - das RPi kann jedoch nur 3,3 V an den GPIO-Ausgangspins bereitstellen. Zufällig ist die, die ich verwende, mit 3,3 V zufrieden, daher brauchte ich keine zusätzlichen Schaltungen, nur die 5V0 bis VCC, GND zu GND, und GPIO Pin 23 für den ersten Relaiseingang.

Mein vorheriges Tutorial zu GPIO Erste Schritte mit GPIO Auf einem Raspberry Pi Erste Schritte mit GPIO Auf einem Raspberry Pi Wenn Sie der Meinung sind, dass das Arduino cool war, warten Sie einfach, bis Sie einen Raspberry Pi in die Hände bekommen - diese Dinge sind erstaunlich. Sie sind nicht nur ein voll funktionsfähiger Computer, sondern auch ein… Lesen Sie mehr darüber, wie Sie eine Transistorschaltung verdrahten, um 3,3 V auf volle 5 V zu erhöhen, wenn Sie möchten (tatsächlich habe ich für dieses Lernprogramm die gleiche Relaisplatine verwendet , aber es stellte sich heraus, ich brauchte doch keine 5V).

Sie müssen den Elektromagneten noch nicht verkabeln, da Sie beim Auslösen des Relais ein hörbares Klicken hören können.

Als Nächstes wollen wir uns etwas Code holen, um mit den GPIO-Ports zu interagieren.

Wir beginnen mit Tests außerhalb von Python, um zu bestätigen, dass an den Ports selbst alles funktioniert. Installieren Sie wiringPi, um nützliche Befehlszeilen-Tools zu erhalten.

git clone git: //git.drogon.net/wiringPi cd wiringPi ./build

Konfigurieren Sie nach der Installation den GPIO-Pin 23 als Ausgang.

gpio -g mode 23 aus

Führen Sie jetzt einen kurzen Scan aller Ports aus, um Ihre Auswahl zu bestätigen

gpio -g readall

Sie haben etwas Ähnliches, obwohl Ihr Modell bei einem Modell B + oder Pi2 länger sein kann, da es mehr GPIO-Pins hat:

Das kann anfangs etwas verwirrend sein, aber die Tabelle ist in der Mitte aufgeteilt und die Spaltenreihenfolge ist auf jeder Seite umgekehrt. Ganz links und ganz rechts ist die BCM-Pin-Nummer. Da wir 23 verwenden, sollte der Modus jetzt als OUT angezeigt werden. Dies ist ein nützlicher kleiner Befehl, um an jedem Punkt eine gute Vorstellung davon zu erhalten, was mit all Ihren Pins passiert.

Um den Pin hoch oder niedrig zu schreiben, verwenden Sie einfach

gpio -g schreiben 23 1 gpio -g schreiben 23 0

Wenn Sie das Relais richtig verdrahtet haben, hören Sie hoffentlich ein und aus. Wenn nicht, fahren Sie erst fort, wenn Sie die Verdrahtung herausgefunden haben. Denken Sie daran, dass Sie möglicherweise eine höhere Spannung benötigen, um das Relais zu aktivieren.

Wenn Sie bestätigt haben, dass das Relais funktioniert und GPIO funktioniert, fügen Sie die Python-Module für GPIO hinzu.

sudo apt-get install python-dev python-rpi.gpio

Lassen Sie uns nun unsere Python-App so ändern, dass das Relais ein- oder ausgeschaltet wird, wenn das Telefon erkannt wird. Den endgültigen Code finden Sie auf dieser Gist. Bestehende kopieren detect.py zu einem neuen lock.py, und fügen Sie die folgenden Import- und Setup-Befehle hinzu:

RPi.GPIO als GPIO importieren GPIO.setmode (GPIO.BCM) RELAY = 23 GPIO.setup (RELAY, GPIO.OUT)

Fügen Sie in der IF-Anweisung einen Befehl hinzu, um das Relais entweder zu aktivieren oder zu deaktivieren. Beachten Sie, dass Ihr Relais entweder mit einem niedrigen oder einem hohen Signal arbeitet. Passen Sie es daher nach dem Test entsprechend an.

GPIO.output (RELAY, 1)

Um diese neue Version auszuführen, stellen Sie dem Befehl das Präfix voran Sudo - Für den Zugriff auf GPIO sind Root-Berechtigungen erforderlich.

Es anhängen

Sobald Sie bestätigt haben, dass das Relais mit Ihrem Näherungssensor zündet, fügen Sie die Elektromagnetsperre hinzu. Bringen Sie auf der Relaisseite den positiven 12-V-Anschluss in die mit COM (gemeinsam) gekennzeichnete Klemme und dann die positive Leistungsaufnahme vom Elektromagneten zur NO-Klemme (normalerweise offen, dh. Dies ist normalerweise nicht mit der gemeinsamen Klemme verbunden, sondern wenn Sie das Relais aktivieren).

Verbinden Sie den Boden von der Stromversorgung und den Elektromagneten an der GND-Klemme.

Beachten Sie die mit Ihrem Schloss gelieferten Montageanleitungen. Die Tür muss ziemlich dick sein, und es ist einfacher, wenn sie sich von der Seite weg öffnet, an der das Schloss angebracht sein soll. Meines war das Gegenteil, also brauche ich die L-förmige Montagehalterung sowie ein zusätzliches Stück Holz, um die Türstärke zu erhöhen.

Verbesserungen

Dies war ein Konzeptbeweis für mich, auf den ich bei anderen Projekten aufbauen konnte, und eigentlich nur, um neugierige Augen aus meinem Büro zu werfen, wenn ich nicht da bin - es ist nicht dazu gedacht, ein narrensicheres Sicherheitssystem zu sein. Dafür benötigen Sie eine Pufferbatterie, um die Stromversorgung im Falle eines Stromausfalls aufrechtzuerhalten.

Wenn jemand in Ihr Haus einbricht und sich die Mühe macht, Ihre Macht einzuschränken, haben Sie wahrscheinlich das größere Problem, dass es sich um einen Psychopathen handelt, der Sie umbringen will, und nicht als zufällige Einbrecher. Sie möchten zusätzlich zu einer elektronischen eine physische Riegelsperre und einen wirklich großen Stock.

Natürlich ist diese Annäherungserkennung mit Bluetooth nicht nur auf eine automatische Türverriegelung beschränkt - Sie können damit auch Ihre Garagentür öffnen, wenn Sie nach Hause kommen, oder Ihr Heimkino einschalten, bevor Sie die Tür betreten.

Welche Funktion sollte ich als nächstes hinzufügen?? Hatten Sie Probleme beim Aufbau? Lass es mich in den Kommentaren wissen und ich werde mein Bestes tun, um zu helfen!

Erfahren Sie mehr über: Sicherheit, Smart Locks.