Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Maak een automatisch sluitende kantoordeur met smartphone-nabijheidssensor

Pssst – wil je wat hightech bescherming voor je thuiskantoor, of een geheim slot voor je 'werkplaats' (ok, je begrijpt me, het is eigenlijk een kerker/speelkamer) dat de kinderen er niet achter kunnen komen? We hebben je gedekt. Laten we een doe-het-zelf slim slot bouwen dat automatisch detecteert wanneer je er bent en vergrendelt wanneer je er niet bent.

Hoe werkt het? NIEMAND WEET HET! Of meer specifiek, Bluetooth.

Het concept

Je smartphone is een krachtig apparaat dat voortdurend informatie over zichzelf aan de buitenwereld prijsgeeft; een manier om dit te doen is Bluetooth.

In de ontdekkingsmodus zendt het een uniek identificatienummer uit - maar zelfs als het zichzelf niet specifiek laat ontdekken, kan alles dat dat adres kent proberen het te pingen. Als er een reactie wordt gehoord, geeft dat aan of het binnen bereik is of niet.

We gaan een Raspberry Pi installeren met een Bluetooth-adapter om constant op te letten wanneer je smartphone buiten bereik is, en als dat zo is, zal het relais in werking treden en de deur vergrendelen.

Je hebt nodig

  • Raspberry Pi - elk model zou moeten werken, omdat het geen CPU-intensieve taak is, maar ik gebruik een ouder model B en de GPIO-pinouts kunnen op uw model enigszins afwijken. Zie het gedeelte over de modus aan boord hieronder. Je hebt ook enkele basisprincipes nodig, zoals een bekabelde Ethernet-verbinding of geconfigureerde wifi; plus SD-kaart en micro-USB-stroomkabel.
  • Bluetooth USB-adapter. Adafruit verkoopt een Bluetooth 4.0 BLE-module waarvan is bevestigd dat deze werkt (wat is Bluetooth 4.0?), maar je moet alles testen dat je al hebt liggen voordat je een nieuwe koopt, alleen voor dit project. Ik heb een oude standaard Bluetooth-miniadapter gevonden die ik in Japan heb gekocht en die goed lijkt te werken. We geven niet om overdrachtssnelheden of betrouwbaarheid van de verbinding, want het enige wat we doen is een snelle handdruk sturen om te zien of een apparaat nog springlevend is.
  • GPIO breakout-bord ("schoenmaker") en startkabels. Je zou rechtstreeks vanaf de pinnen op de Pi kunnen werken, maar het is een stuk eenvoudiger als je labels op elke pin hebt, en ze kosten sowieso maar $ 6.
  • Relaiskaart. Je hebt hier een breed scala aan keuzes, en alles zal werken als het is ontworpen voor gebruik met een microcontroller en ten minste 12 volt kan aansturen bij 5 ampère. Ik heb een generiek 4-kanaals bord gebruikt dat vergelijkbaar is met dit voor ongeveer $ 5, maar ik ga ervan uit dat je weet hoe je het jouwe moet gebruiken.
  • 12/24V elektromagneet slot, hoewel een elektronisch magneetslot ook zou moeten werken. Degene die ik heb gekocht heeft een houdkracht van 180 kg en wordt compleet geleverd met montageplaten en instructies, voor ongeveer $ 35.
  • 12/24V voeding. Het magneetslot moet een aparte voeding hebben - wat je ook doet, probeer er geen stroom voor te trekken van de Pi.
  • Lock.py Python-app, maar we zullen dit schrijven terwijl we verder gaan.

Werken met Bluetooth

Bluetooth staat centraal in dit project, dus laten we beginnen met het installeren van wat Bluetooth-ondersteuning en het testen van onze adapter. Je kunt dit rechtstreeks vanaf de Pi doen, of SSH op afstand (hoe je Windows instelt op SSH in je Pi).

sudo apt-get install bluez python-bluez 

Plaats uw dongle als u dat nog niet heeft gedaan, en laten we eens kijken wat deze meldt.

hcitool dev 

Als je iets in de uitvoer hebt staan, ben je klaar om te gaan. Vervolgens gebruiken we een Python-script om te peilen naar Bluetooth-apparaten in de buurt en het unieke apparaatadres te pakken. We hoeven dit maar één keer te doen voor elk apparaat.

wget https://pybluez.googlecode.com/svn/trunk/examples/simple/inquiry.py python onderzoek.py 

Als je "0 apparaten gevonden" ziet, heb je geen compatibele USB Bluetooth-dongle of kan je smartphone niet worden gevonden. Maar wanhoop niet:ik merkte dat ik de Bluetooth-instellingenpagina op mijn iPhone moest openen om hem in de ontdekkingsmodus te zetten, en toen gebeurde dit:

Geweldig, laten we nu de eerste fase van onze software maken die de detectie uitvoert. Maak een Python-app met de naam detect.py en open het met Nano.

nano detect.py 

Plak deze voorbeeldcode in:

#!/usr/bin/python import bluetooth import time while True:print "Checking" + time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime()) resultaat =bluetooth.lookup_name('78:7F:70:38:51:1B', timeout=5) if (resultaat !=Geen ):print "Gebruiker aanwezig" else:print "Gebruiker buiten bereik" time.sleep(10)  

en pas de volgende regel aan met het adres van uw Bluetooth-apparaat:

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

Druk op CTRL-X en J te sluiten en op te slaan. Voer dezelfde code uit en je ziet zoiets als dit:

De code moet heel eenvoudig te begrijpen zijn, zelfs als je Python nog nooit hebt aangeraakt:hij scant elke 10 seconden naar een bepaald Bluetooth-apparaat en drukt een ander bericht af, afhankelijk van of het wordt gevonden of niet. Schakel Bluetooth op uw telefoon in om het bewegen binnen en buiten het bereik te simuleren (waarschijnlijk ongeveer 4 meter in werkelijkheid). Je kunt de tijd tussen scans verkorten of vergroten, maar ik vond 10 seconden een redelijke tijd om mogelijk te moeten wachten tot de deur ontgrendeld werd, en dat is waar we met dit hele project naartoe gaan.

Ik moet hieraan toevoegen dat ik niet weet wat het stroomverbruik hiervan is, maar ik neem aan dat het vaker pingen van een apparaat noodzakelijkerwijs meer stroom zou verbruiken. Ik heb geen duidelijke prestatieproblemen gezien bij het testen, maar als de levensduur van de batterij een serieuze zorg voor je is, overweeg dan om een ​​schakelaar in je kantoor te hebben die de scanlus activeert en deactiveert, dus als je eenmaal binnen bent, kun je de vergrendeling pauzeren systeem en activeer vervolgens het scannen opnieuw wanneer u weggaat.

Gefeliciteerd, je hebt nu een Python-app die weet wanneer je binnen bereik bent, dus daar kunnen we mee aan de slag.

GPIO-kaartmodi

Voordat je verder gaat, moet je uitzoeken welke bordmodus je gaat gebruiken. Er is geen goed of fout antwoord, het is alleen van invloed of u de letterlijke pincode of de virtuele GPIO-pincode opgeeft.

De standaardinstelling is om het letterlijke pinnummer ("board-modus") te gebruiken, beginnend met pin 1 linksonder (als je naar beneden kijkt naar de Pi met USB-poorten aan de rechterkant). Pin 2 zit daar net boven.

Als je echter een GPIO-breakout-board ("schoenmaker") hebt, zijn de labels die je hebt van een alternatieve modus, genaamd "BCM" (Broadcom SOC-kanaal), en worden ze gewoonlijk geschreven met GPIO of P als voorvoegsel voor het nummer. Je hebt niet echt een GPIO-uitbraak nodig - het maakt het alleen maar gemakkelijker. Als je geen breakout-bord hebt en er geen wilt kopen, gebruik dan dit diagram:

Merk op dat het originele model B revisie 1, revisie 2 en het model B+ en Pi2 allemaal verschillende pin-outs hebben. Raadpleeg deze StackExchange-vraag voor een diagram dat correct is voor uw bord.

In deze projectcode gebruik ik het BCM GPIO-nummeringssysteem dat overeenkomt met het Adafruit-breakoutboard dat ik heb. Er zijn kleine aanpassingen nodig als je de letterlijke pin-modus wilt gebruiken.

Draad in een relais

Bevestig het breakout-bord en zorg ervoor dat de draad van pinnen 1 en 2 (die in de hoek van je Pi) aan 3v3 en 5V0 op de breakout worden bevestigd. Misschien wilt u een spanningstester tevoorschijn halen om dit te controleren.

Controleer voordat u doorgaat of iemand anders uw specifieke relais met de Raspberry Pi heeft gebruikt (of zoek er van tevoren een waarvan u weet dat deze werkt). Sommige hebben mogelijk 5V nodig om te activeren, maar de RPi kan slechts 3,3V leveren op de GPIO-uitgangspinnen. Toevallig is degene die ik gebruik tevreden met 3,3V, dus ik had geen extra circuits nodig, alleen de 5V0 naar VCC , GND naar GND , en GPIO-pin 23 voor de eerste relaisingang .

Mijn vorige tutorial over GPIO liet zien hoe je een transistorcircuit kunt aansluiten om 3,3V op te schalen naar een volledige 5V als dat nodig is (in feite gebruikte ik hetzelfde relaisbord voor die tutorial, maar het bleek dat ik geen 5V nodig had tenslotte).

U hoeft de elektromagneet nog niet aan te sluiten, omdat u een hoorbare klik kunt horen wanneer het relais afgaat.

Laten we vervolgens wat code pakken om te communiceren met de GPIO-poorten.

We beginnen met testen buiten Python om te bevestigen dat alles op de poorten zelf werkt. Installeer wirePi, dat je een aantal handige commandoregel-tools geeft.

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

Eenmaal geïnstalleerd, configureert u GPIO-pin 23 als een uitgang.

gpio -g modus 23 uit 

Voer nu een snelle scan uit van alle poorten om te bevestigen

gpio -g readall 

Je hebt iets soortgelijks, hoewel de jouwe misschien langer is op een model B+ of Pi2 omdat deze meer GPIO-pinnen heeft:

Voor meer details:maak een automatisch vergrendelende kantoordeur met smartphone-nabijheidssensor


Productieproces

  1. Bankkluis
  2. Eenvoudig naderingssensorcircuit en werken met applicaties
  3. Beschouw het #1-probleem met op Bluetooth gebaseerde slimme sensornetwerken
  4. Cypress:Bluetooth MCU's leveren mesh-netwerken met alomtegenwoordige smartphone-connectiviteit
  5. Lijnvolgsensor met RPi
  6. Milieusensor-API met een RPi
  7. Een eenvoudige analoge naderingssensor met digitale interface (voor Raspberry Pi) [laatste update:7 februari 2014]
  8. Portenta- en thermokoppelsensor (met MAX6675)
  9. CO2-monitoring met K30-sensor
  10. Arduino met Bluetooth om een ​​LED te bedienen!
  11. Capacitieve vingerafdruksensor met een Arduino of ESP8266