Faire une porte de bureau verrouillage automatique avec capteur de proximité smartphone
Pssst
Contenu
Comment ça marche? PERSONNE NE SAIT! Ou plus précisément, Bluetooth.
Le concept
Votre smartphone est un appareil puissant qui est révélateur en permanence des informations sur lui-même à l`extérieur mondialement d`une manière qu`il le fait est Bluetooth.
En mode découverte, il diffuse un numéro d`identification unique - mais même lorsqu`ils ne sont pas spécifiquement se laisser découvrir, tout ce qui sait que l`adresse peut essayer de le ping. Si une réponse est entendu, qui indiquerait que ce soit dans la gamme ou non.
Nous installerons un Raspberry Pi avec un adaptateur Bluetooth pour être constamment à l`affût lorsque votre smartphone est hors de portée, et quand il est, le relais se mettra en action et verrouiller la porte.
Tu auras besoin de
- Raspberry Pi - tout modèle devrait fonctionner car il est pas une tâche intensive du processeur, mais je suis sur un ancien modèle B, et les Brochage GPIO peut être légèrement différent sur votre modèle. Voir la section sur le mode de la carte ci-dessous. Vous aurez également besoin de quelques notions de base comme une connexion Ethernet filaire ou Wi-Fi configuré- ainsi que la carte SD et câble d`alimentation micro USB.
- Adaptateur USB Bluetooth. Adafruit vend un Bluetooth 4.0 Module BLE confirmé travail (ce qui est Bluetooth 4.0?), Mais vous devez tester tout que vous avez déjà traîner avant d`acheter un nouveau juste pour ce projet. J`ai trouvé un vieil adaptateur standard mini Bluetooth je l`ai acheté au Japon qui semble bien fonctionner. Nous ne se soucient pas des vitesses de transfert ou de la fiabilité de la connexion, comme tout ce que nous faisons est l`envoi d`une poignée de main rapide pour voir si un appareil est bel et bien vivant.
- conseil en petits groupes GPIO ( « cordonnerie ») et les câbles de cavalier. Vous pouvez travailler directement à partir des broches du Pi, mais il est beaucoup plus facile si vous avez des étiquettes sur chaque broche, et ils sont seulement 6 $ de toute façon.
- Carte relais. Vous avez une grande variété de choix ici, et tout fonctionnera s`il est conçu pour être utilisé avec un microcontrôleur et peut conduire au moins 12 volts à 5 ampères. Je l`ai utilisé une carte à 4 canaux générique similaire à celui-ci pour environ 5 $, mais je vais supposer que vous savez comment le vôtre travail.
- 12 / 24V verrouillage électro-aimant, si un verrou magnétique électronique devrait également fonctionner. Celui que j`ai acheté a 180KG la force de maintien et est livré avec des plaques de montage et des instructions, pour environ 35 $.
- alimentation 12 / 24V. Le verrou magnétique doit avoir une alimentation séparée - quoi que vous fassiez, ne pas essayer de tirer le pouvoir pour elle de la Pi.
- Lock.py Python application, mais nous allons écrire ce que nous avançons.
Travailler avec Bluetooth
Bluetooth est au cœur de ce projet, alors commençons par l`installation d`un soutien Bluetooth et tester notre adaptateur. Vous pouvez le faire directement à partir du Pi, ou SSH à distance (comment configurer Windows pour SSH en vous Pi). Configuration de votre Raspberry Pi pour être utilisé avec SSH sans tête Configuration de votre Raspberry Pi pour être utilisé avec SSH sans têteLe Raspberry Pi peut accepter des commandes SSH lorsque vous êtes connecté à un réseau local (soit par Ethernet ou Wi-Fi), ce qui vous permet de mettre facilement en place. Les avantages de SSH vont au-delà perturber la projection quotidienne ...Lire la suite
sudo apt-get installer bluez python-bluez
Insérez votre clé si vous avez pas déjà, et nous allons jeter un coup d`œil à ce qu`il rapport.
hcitool dev
Si vous avez quelque chose répertorié dans la sortie, vous êtes bon d`aller. Ensuite, nous allons utiliser un script Python au sondage pour les appareils Bluetooth à proximité, et de saisir l`adresse unique. Nous avons seulement besoin de le faire une fois pour chaque appareil.
wget https://raw.githubusercontent.com/karulis/pybluez/master/examples/simple/inquiry.pypython inquiry.py
Si vous voyez « 0 appareils trouvés », soit vous ne disposez pas d`un dongle USB Bluetooth compatible ou votre smartphone n`est pas découvrable. Ne désespérez pas si: je l`ai trouvé que je devais ouvrir effectivement les paramètres Bluetooth page sur mon iPhone pour lancer dans le mode de découverte, cela est arrivé:
Grand, maintenant nous allons créer la première étape de notre logiciel qui font la détection. Créer une application Python appelé detect.py, et ouvrez-le avec Nano.
nano detect.py
Coller dans cet exemple de code:
#! / Usr / bin / pythonimporter Bluetoothimporter tempstandis que Vrai:impression "Vérification " + temps.strftime("% A,% d% b% Y% H:% M:% S", temps.gmtime())résultat = Bluetooth.lookup_name(`78: 7F: 70: 38: 51: 1B », temps libre=5)si (résultat != Aucun):impression "utilisateur présent"autre:impression "Utilisateur hors de portée"temps.dormir(dix)
et d`ajuster la ligne suivante avec votre adresse de périphérique Bluetooth:
résultat = Bluetooth.lookup_name(`78: 7F: 70: 38: 51: 1B », temps libre=5)
presse CTRL-X et Y pour fermer et enregistrer. Exécutez le même code, et vous voyez quelque chose comme ceci:
Le code doit être très simple à comprendre, même si vous ne l`avez jamais touché Python avant: il scanne un périphérique Bluetooth particulier toutes les 10 secondes, et il imprime un message différent selon que l`on a trouvé ou non. Faites basculer le Bluetooth sur votre téléphone pour simuler le déplacement dans et hors de portée (probablement environ 4 millions en réalité). Vous pouvez diminuer ou augmenter le temps entre les balayages, mais je me sentais 10 secondes était un laps de temps raisonnable d`avoir potentiellement attendre la porte pour déverrouiller, qui est l`endroit où nous allons avec tout ce projet, après tout.
Je dois ajouter, je ne sais pas au sujet de la consommation d`énergie de le faire, mais je suppose pinger un dispositif plus souvent serait nécessairement consommer plus de puissance. Je ne l`ai pas vu des problèmes de performances évidentes dans les tests, mais si la vie de la batterie est un problème sérieux pour vous, envisager d`avoir un interrupteur dans votre bureau qui active et désactive la boucle de balayage, donc une fois que vous êtes à l`intérieur, vous pouvez mettre en pause le verrou système, puis réactiver le balayage lorsque vous quittez.
Félicitations, vous avez maintenant une application Python qui sait quand vous êtes à portée, afin que nous puissions commencer à agir sur ce point.
Modes GPIO Conseil
Avant de continuer, vous devez déterminer quel mode carte que vous allez utiliser. Il n`y a pas de bonne ou mauvaise, il affecte simplement si vous spécifiez le nombre de broches littéral ou le numéro de broche GPIO virtuel.
La valeur par défaut est d`utiliser le numéro d`identification littéral ( « mode board »), en commençant par la broche 1 à la partie inférieure gauche (si regardant vers le bas à l`Pi avec les ports USB sur la droite). Pin 2 est juste au-dessus.
Toutefois, si vous avez une carte en petits groupes GPIO ( « cordonnerie »), les étiquettes que vous avez sont d`un autre mode, appelé « BCM » (canal Broadcom SOC), et sont généralement écrits avec GPIO ou P préfixer le nombre. Vous ne strictement pas besoin d`une évasion GPIO - il rend les choses plus faciles. Si vous ne disposez pas d`un conseil d`administration en petits groupes et ne veulent pas acheter un, utilisez ce schéma:
Notez que la révision du modèle d`origine B 1, révision 2, et le modèle B + et Pi2 ont tous brochage différentes. Reportez-vous à cette question StackExchange pour un diagramme correct à votre conseil d`administration.
Dans ce code de projet, j`utilise le système de numérotation BCM GPIO qui correspond à la carte en petits groupes Adafruit je. Des modifications mineures sont nécessaires si vous souhaitez utiliser le mode pin littéral.
Fil dans un relais
Fixez la carte en petits groupes, assurant que le fil des broches 1 et 2 (ceux dans le coin de votre Pi) attacher à 3c3 et 5V0 sur l`évasion. Vous pouvez retirer un testeur de tension pour vérifier.
Avant de continuer, vérifier si quelqu`un d`autre a utilisé votre relais particulier avec le Raspberry Pi (ou trouver un préalable que vous savez qu`il fonctionne). Certains peuvent nécessiter 5 V pour activer - mais le RPI ne peut fournir 3,3V sur les broches de sortie GPIO. Par hasard, celui que je me sers est satisfait de 3.3V, donc je ne pas besoin de circuits supplémentaires, juste 5V0 à CCV, GND à la masse, et broche GPIO 23 pour la première entrée du relais.
ma précédent tutoriel sur GPIO a montré comment câbler un circuit à transistor à l`échelle jusqu`à 3,3 V à 5 V une pleine si vous avez besoin (en fait, je la même carte de relais pour ce tutoriel, mais il se trouve que je ne l`ai pas besoin 5V après tout).Mise en route avec GPIO Sur un Raspberry PiMise en route avec GPIO Sur un Raspberry PiSi vous que l`Arduino était cool, attendez jusqu`à ce que vous obtenez vos mains sur un Pi framboise - ces choses sont incroyables. En plus d`être un ordinateur entièrement fonctionnel, ils ont aussi un ...Lire la suite
Pas besoin de fil dans l`électro-aimant encore, que vous serez en mesure d`entendre un clic audible lorsque les feux de relais.
La prochaine étape, nous allons saisir un code pour interagir avec les ports GPIO.
Nous allons commencer par tester en dehors de Python pour confirmer tout fonctionne sur les ports eux-mêmes. Installer wiringPi, qui vous donne des outils de ligne de commande utiles.
git git clone: //git.drogon.net/wiringPiCD wiringPi./build
Une fois installé, configurez la broche GPIO 23 être une sortie.
Mode de GPIO 23 sur la
Maintenant, faire une analyse rapide de tous les ports pour confirmer
GPIO de ReadAll
Vous aurez quelque chose de semblable à cela, bien que le vôtre peut-être plus sur un modèle B + ou Pi2 car il a plus de broches GPIO:
Cela peut être un peu déroutant au début, mais la table est divisée par le milieu et l`ordre des colonnes est inversée sur chaque côté. A droite extrême gauche et est de loin le numéro d`identification du BCM. Comme nous utilisons 23, vous devriez voir le mode désormais répertorié comme OUT. Ceci est un peu utile commande juste pour obtenir une bonne idée de ce qui se passe avec toutes vos épingles à tout moment.
Pour écrire la broche haute ou basse, il suffit d`utiliser
GPIO -g écrire 23 1gpio -g écrire 23 0
Si tout va bien, si vous avez le relais correctement câblé, vous l`entendez en cliquant sur et en dehors. Dans le cas contraire, ne pas continuer jusqu`à ce que vous avez compris le câblage. Rappelez-vous, vous devrez peut-être une tension plus élevée pour activer le relais.
Une fois que vous avez confirmé le relais et GPIO travaille, ajoutez les modules Python pour GPIO.
sudo apt-get installer python-dev python-rpi.gpio
Maintenant, nous allons modifier notre application Python pour déclencher le relais ou quand est détecté le téléphone. Vous trouverez le code final à ce Contenu essentiel. Copiez le existant detect.py à une nouvelle lock.py, et ajoutez les commandes d`importation et d`installation suivantes:
importer RPi.GPIO comme GPIOGPIO.mode réglages(GPIO.BCM)RELAIS = 23GPIO.installer(RELAIS, GPIO.EN DEHORS)
Dans l`instruction IF, ajoutez une commande pour activer ou désactiver le relais. Notez que votre relais peut fonctionner soit avec un faible ou un signal élevé, donc ajuster après le test.
GPIO.sortie(RELAIS,1)
Pour exécuter cette nouvelle version, préfixe de commande sudo - l`accès aux GPIO requiert les privilèges root.
Accrocher It Up
Une fois que vous avez confirmé le relais est mise à feu avec votre capteur de proximité, ajoutez dans votre serrure électro-aimant. Du côté de relais, amener le positif dans la borne COM marqué 12 V (courant), alors la puissance d`entrée positive de l`électro-aimant à la borne N (normalement ouvert, à savoir. ce qui est normalement pas connecté à la borne commune, mais sera quand vous activez le relais).
Joignez-vous à la terre de l`alimentation et l`électro-aimant sur la borne GND.
Reportez-vous aux instructions de montage fourni avec votre lock- la porte doit être assez épais, et il est plus facile si elle ouvre loin du côté que vous voulez que le verrou soit sur. Le mien était à l`opposé, de sorte que je besoin le support de montage en forme de L, ainsi que d`un bit supplémentaire de bois pour augmenter l`épaisseur de la porte.
améliorations
Ce fut une preuve de concept pour moi de construire avec d`autres projets, et vraiment juste pour garder les regards indiscrets sur mon bureau quand je ne suis pas là - ce n`est pas conçu pour être un système de sécurité à toute épreuve. Pour cela, vous auriez besoin d`une batterie de secours pour la disponibilité d`énergie en cas d`être coupé.
Bien sûr, si quelqu`un pénètre par effraction dans votre maison et va à la peine de couper votre puissance, vous avez probablement le plus gros problème d`entre eux étant un psychopathe qui est à vous tuer, plutôt qu`un cambrioleur occasionnel. Vous souhaitez également voulez une serrure à pêne dormant physique en plus d`un système électronique, et un bâton vraiment grand.
Bien sûr, cette technique de détection de proximité via Bluetooth ne se limite pas à une serrure de porte automatique - vous pouvez aussi l`utiliser quand vous rentrez à la maison déclencher l`ouverture de votre porte de garage, ou allumez votre home cinéma avant de vous promener dans la porte.
Quelle fonction pensez-vous que je devrais ajouter ensuite? Avez-vous eu des problèmes de construction cela? Faites-moi savoir dans les commentaires et je ferai de mon mieux pour vous aider!