Lav en automatisk låsning af kontordøren med en smartphone-nærhedsføler

  • Harry James
  • 0
  • 1964
  • 535
Reklame

Pssst - ønsker noget højteknologisk beskyttelse til dit hjemmekontor eller en hemmelig lås til dit “værksted” (ok, du har mig, det er faktisk et fangehul / spillelokale) at børnene ikke kan regne ud? Vi har dig dækket. Lad os bygge en DIY-smart-lås, der automatisk registrerer, når du er der, og låser, når du ikke er.

Hvordan virker det? INGEN VED! Eller mere specifikt Bluetooth.

Konceptet

Din smartphone er en kraftfuld enhed, der konstant afslører oplysninger om sig selv for omverdenen; en måde det gør dette er Bluetooth.

I opdagelsestilstand udsender det et unikt identifikationsnummer - men selv når det ikke specifikt tillader at blive opdaget, kan alt, hvad der kender den adresse, prøve at pinge den. Hvis der høres et svar, vil det indikere, om det er inden for rækkevidde eller ej.

Vi opretter en Raspberry Pi med en Bluetooth-adapter til konstant at være på udkig efter, når din smartphone er uden for rækkevidde, og når det er, vil relæet klikke på handling og låse døren.

Du får brug for

  • Raspberry Pi - enhver model skal fungere, da det ikke er en CPU-intensiv opgave, men jeg bruger en ældre model B, og GPIO-udskæringerne kan være lidt anderledes på din model. Se afsnittet om bordtilstand nedenfor. Du har også brug for nogle grundlæggende funktioner som en kablet Ethernet-forbindelse eller Wi-Fi-konfigureret Opsætning af trådløst netværk på din Raspberry Pi Opsætning af trådløst netværk på din Raspberry Pi Stort set ethvert Raspberry Pi-projekt kræver en netværksforbindelse, og der kan opnås betydelig fleksibilitet ved at ignorere Ethernet-porten til fordel for en trådløs USB-dongle. ; plus SD-kort og micro USB-strømkabel.
  • Bluetooth USB-adapter. Adafruit sælger et bekræftet Bluetooth 4.0 BLE-modul, der fungerer (hvad er Bluetooth 4.0? Hvordan Bluetooth 4.0 forme fremtiden for mobilforbindelse Hvordan Bluetooth 4.0 forme fremtiden for mobilforbindelse Bluetooth er den glemte stjerne på enhedens specifikationsark.), Men du skal test noget, du allerede har liggende, før du køber en ny netop til dette projekt. Jeg fandt en gammel standard Bluetooth mini-adapter, jeg købte i Japan, der ser ud til at fungere fint. Vi er ligeglad med overførselshastigheder eller forbindelsespålidighed, da alt hvad vi gør er at sende et hurtigt håndtryk for at se, om en enhed er i live og godt.
  • GPIO-opslagstavle (“tærte”) og jumperkabler. Du kan arbejde direkte fra stifterne på Pi, men det er meget lettere, hvis du har etiketter på hver pin, og de er alligevel kun $ 6.
  • Relæ bord. Du har en lang række valg her, og alt fungerer, hvis det er designet til brug med en mikrocontroller og kan køre mindst 12 volt ved 5 ampere. Jeg har brugt et generisk 4-kanals kort, der svarer til dette for omkring $ 5, men jeg vil antage, at du ved, hvordan du arbejder din.
  • 12 / 24V elektromagnetlås, selvom en elektronisk magnetlås også skal fungere. Den, jeg har købt, har 180 kg holdekraft og leveres komplet med monteringsplader og instruktioner, for omkring $ 35.
  • 12 / 24V strømforsyning. Magnetlåsen skal have en separat strømforsyning - uanset hvad du gør, prøv ikke at trække strøm til den fra Pi.
  • Lock.py Python-app, men vi skriver dette, mens vi følger med.

Arbejder med Bluetooth

Bluetooth er centralt i dette projekt, så lad os starte med at installere en Bluetooth-support og teste vores adapter. Du kan enten gøre dette direkte fra Pi eller SSH i fjernbetjening (hvordan du indstiller Windows til SSH i dig. Pi Opsætning af din hindbærpi til hovedløs brug med SSH Opsætning af din hindbærpi til hovedløs brug med SSH Raspberry Pi kan acceptere SSH-kommandoer, når du er tilsluttet et lokalt netværk (enten med Ethernet eller Wi-Fi), så du nemt kan konfigurere det. Fordelene ved SSH går ud over at uprioritere den daglige screening ...).

sudo apt-get install bluez python-bluez

Indsæt din dongle, hvis du ikke allerede har gjort det, og lad os se på, hvad den rapporterer.

hcitool dev

Hvis du har noget anført i output, er du god til at gå. Dernæst bruger vi et Python-script til polling af Bluetooth-enheder i nærheden og griber den unikke enhedsadresse. Vi behøver kun at gøre dette én gang for hver enhed.

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

Hvis du ser “0 enheder fundet”, du har enten ikke en kompatibel USB Bluetooth-dongle, eller din smartphone kan ikke opdages. Fortvivl dog ikke: Jeg fandt, at jeg faktisk måtte åbne siden med Bluetooth-indstillinger på min iPhone for at sparke den i opdagelsestilstand, så skete dette:

Fantastisk, lad os nu oprette den første fase af vores software, der gør detekteringen. Opret en Python-app kaldet detect.py, og åbn den med Nano.

nano detect.py

Indsæt denne prøvekode:

#! / usr / bin / python import Bluetooth importtid, mens sandt: Udskriv "Kontroller" + tid.strømning ("% a,% d% b% Y% H:% M:% S", time.gmtime ()) resultat = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', timeout = 5) if (resultat! = Ingen): udskriv "Bruger til stede" andet: udskriv "Bruger uden for rækkevidde" time.sleep ( 10) 

og juster følgende linje med din Bluetooth-enhedsadresse:

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

Trykke CTRL-X og Y at lukke og gemme. Kør den samme kode, så ser du noget lignende:

Koden skal være meget enkel at forstå, selvom du aldrig har rørt Python før: den scanner efter en bestemt Bluetooth-enhed hvert 10. sekund, og den udskriver en anden meddelelse afhængigt af om den findes eller ej. Skift Bluetooth på din telefon for at simulere bevægelse ind og uden for rækkevidde (sandsynligvis ca. 4 m i virkeligheden). Du kan formindske eller øge tiden mellem scanninger, men jeg følte, at 10 sekunder var en rimelig mængde tid til potentielt at skulle vente på, at døren låses op, og det er her, vi går med hele dette projekt.

Jeg skal tilføje, jeg ved ikke om strømforbruget ved at gøre dette, men jeg ville antage, at pinging af en enhed oftere nødvendigvis ville forbruge mere strøm. Jeg har ikke set nogen åbenlyse ydelsesproblemer i testen, men hvis batterilevetiden er en alvorlig bekymring for dig, kan du overveje at have en switch på dit kontor, der aktiverer og deaktiverer scanningsløkken, så når du først er inde, kan du sætte låsen på pause system, og aktiver derefter scanningen igen, når du forlader.

Tillykke, du har nu en Python-app, der ved, hvornår du er inden for rækkevidde, så vi kan begynde at handle på det.

GPIO-korttilstande

Inden du fortsætter, skal du finde ud af, hvilken korttilstand du vil bruge. Der er ikke noget rigtigt eller forkert svar, det påvirker bare, om du angiver det bogstavelige pin-nummer eller det virtuelle GPIO-pin-nummer.

Standard er at bruge det bogstavelige pin-nummer (“bordtilstand”), startende med pin 1 i nederste venstre (hvis man ser ned på Pi med USB-porte til højre). Pin 2 er lige over det.

Men hvis du har en GPIO-opdeling (“tærte”) board, er de etiketter, du har, fra en alternativ tilstand, kaldet “BCM” (Broadcom SOC-kanal), og skrives ofte med GPIO eller P præfiksering af nummeret. Du har ikke strengt brug for et GPIO-breakout - det gør det bare lettere. Hvis du ikke har et opslagstavle og ikke ønsker at købe et, skal du bruge dette diagram:

Raspberry Pi model A og B udstiksdiagram fra RaspberryPi.org

Bemærk, at den oprindelige model B-revision 1, revision 2 og modellen B + og Pi2 alle har forskellige pin-outs. Se dette StackExchange-spørgsmål for et diagram, der er korrekt til dit bord.

I dette projektkode bruger jeg BCM GPIO-nummersystemet, der svarer til det Adafruit breakout-bord, jeg har. Mindre ændringer er nødvendige, hvis du ønsker at bruge den bogstavelige pin-tilstand.

Tråd i et relæ

Fastgør breakout-pladen, og sørg for at ledningen fra ben 1 og 2 (dem i hjørnet af din Pi) fastgøres til 3v3 og 5V0 på breakout. Du ønsker måske at trække en spændingstester ud for at kontrollere dette.

Før du fortsætter, skal du kontrollere, om nogen anden har brugt dit særlige relæ med Raspberry Pi (eller find et på forhånd, som du ved, at det fungerer). Nogle kræver muligvis 5V for at aktivere - men RPi kan kun give 3,3V på GPIO-udgangsstifterne. Ved en tilfældighed er den, jeg bruger, tilfreds med 3,3V, så jeg havde ikke brug for yderligere kredsløb, bare 5V0 til VCC, GND til GND, og GPIO-pin 23 til den første relæindgang.

Min forrige tutorial om GPIO Kom godt i gang med GPIO på en Raspberry Pi Kom godt i gang med GPIO på en Raspberry Pi Hvis du selvom Arduino var sej, skal du bare vente til du får hænderne på en Raspberry Pi - disse ting er fantastiske. Ud over at være en fuldt funktionsdygtig computer, har de også en ... viste, hvordan man trækker et transistorkredsløb op for at skalere 3.3V til en fuld 5V, hvis du har brug for (faktisk brugte jeg det samme relækort til denne tutorial, men det viser sig, at jeg slet ikke havde brug for 5V).

Ingen grund til at trænge i elektromagneten endnu, da du kan høre et hørbart klik, når relæet skyder.

Lad os næste gang tage nogle kode til at interagere med GPIO-porte.

Vi starter med at teste uden for Python for at bekræfte, at alt fungerer på havnene i sig selv. Installer wiringPi, som giver dig nogle nyttige kommandolinjeværktøjer.

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

Når det er installeret, skal du konfigurere GPIO-pin 23 til at være et output.

gpio -g-tilstand 23 ud

Foretag nu en hurtig scanning af alle porte for at bekræfte

gpio -g readall

Du har noget, der ligner dette, skønt din muligvis er længere på en model B + eller Pi2, da den har flere GPIO-stifter:

Dette kan være en smule forvirrende i starten, men tabellen er opdelt i midten og kolonneordren vendes på hver side. Længst til venstre og langt til højre er BCM-pin-nummeret. Da vi bruger 23, skal du se tilstanden, der er opført nu som OUT. Dette er en nyttig lille kommando bare for at få en god idé om, hvad der foregår med alle dine pins på ethvert tidspunkt.

For at skrive stiften højt eller lavt, skal du bare bruge

gpio -g skriv 23 1 gpio -g skriv 23 0

Forhåbentlig, hvis du har relæet tilsluttet korrekt, vil du høre det klikke til og fra. Hvis ikke, skal du ikke fortsætte, før du har fundet ud af ledningen. Husk, at du muligvis har brug for en højere spænding for at aktivere relæet.

Når du har bekræftet relæet og GPIO fungerer, skal du tilføje Python-modulerne til GPIO.

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

Lad os nu ændre vores Python-app for at trigge relæet til eller fra, når telefonen registreres. Du finder den endelige kode ved denne Gist. Kopier det eksisterende detect.py til en ny lock.py, og tilføj følgende import- og opsætningskommandoer:

import RPi.GPIO som GPIO GPIO.setmode (GPIO.BCM) RELAY = 23 GPIO.setup (RELAY, GPIO.OUT)

I IF-sætningen skal du tilføje en kommando til enten at aktivere eller deaktivere relæet. Bemærk, at dit relæ muligvis fungerer med et lavt eller højt signal, så juster dig derefter efter test.

GPIO.output (RELAY, 1)

For at køre denne nye version skal du præfikse kommandoen med sudo - adgang til GPIO kræver rodrettigheder.

Tilslutte det

Når du har bekræftet, at relæet skyder med din nærhedsføler, skal du tilføje din elektromagnetlås. På relæsiden bringes 12V positive ind i terminalen mærket COM (almindelig), derefter den positive effektindgang fra elektromagneten til NO terminalen (normalt åben, dvs. dette er normalt ikke forbundet til den fælles terminal, men vil være, når du aktiverer relæet).

Slut jorden fra strømforsyningen og elektromagneten på GND-terminalen.

Se monteringsvejledningen, der fulgte med din lås; døren skal være temmelig tyk, og det er lettere, hvis det åbner væk fra den side, du ønsker, at låsen skal være på. Min var det modsatte, så jeg har brug for den L-formede monteringsbeslag samt en ekstra bit træ for at øge dørtykkelsen.

Forbedringer

Dette var et konceptbevis for mig at bygge videre på med andre projekter, og virkelig bare for at holde nysgerrige øjne ud af mit kontor, når jeg ikke er der - det er ikke designet til at være et idiotsikkert sikkerhedssystem. Til det har du brug for et backup-batteri for at holde strømmen flydende i tilfælde af at den bliver afbrudt.

Selvfølgelig, hvis nogen bryder ind i dit hus og går i vanskelighederne med at skære din magt, har du sandsynligvis det største problem med dem at være en psykopat, der er ude for at dræbe dig, snarere end en afslappet indbrudstyv. Du ønsker også en fysisk deadbolt-lås ud over en elektronisk lås og en rigtig stor pind.

Naturligvis er denne nærhedsdetekteringsteknik ved hjælp af Bluetooth ikke kun begrænset til en automatisk dørlås - du kan også bruge den til at udløse din garageportåbning, når du kommer hjem, eller tænde for din hjemmebiograf, før du går ind i døren.

Hvilken funktion synes du, jeg skal tilføje næste? Har du haft problemer med at opbygge dette? Fortæl mig det i kommentarerne, så gør jeg mit bedste for at hjælpe!




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.