Créez une porte de bureau à verrouillage automatique avec un capteur de proximité pour smartphone

Créez une porte de bureau à verrouillage automatique avec un capteur de proximité pour smartphone / Maison intelligente

Pssst - voulez une protection de pointe pour votre bureau à domicile ou un verrou secret pour votre “atelier” (ok, tu m'as eu, c'est en fait un cachot / salle de jeux) que les enfants ne seront pas en mesure de comprendre? Nous vous avons couvert. Construisons un cadenas intelligent bricolage qui détecte automatiquement quand vous êtes là et se verrouille quand vous ne l'êtes pas.

Comment ça marche? PERSONNE NE SAIT! Ou plus précisément, Bluetooth.

Le concept

Votre smartphone est un appareil puissant qui révèle en permanence des informations sur lui-même au monde extérieur. une façon dont il fait c'est Bluetooth.

En mode découverte, un numéro d’identification unique est diffusé - mais même s’il ne se laisse pas spécifiquement découvrir, tout ce qui connaît cette adresse peut essayer de lui envoyer une requête ping. Si une réponse est entendue, cela indiquerait si c'est dans la plage ou pas.

Nous allons configurer un Raspberry Pi avec un adaptateur Bluetooth pour qu'il soit constamment à l'affût des situations où votre smartphone est hors de portée et, le cas échéant, le relais s'active et verrouille la porte..

Tu auras besoin de

  • Raspberry Pi - n’importe quel modèle devrait fonctionner car ce n’est pas une tâche gourmande en ressources processeur, mais j’utilise un modèle B plus ancien, et le brochage GPIO peut être légèrement différent sur votre modèle. Voir la section sur le mode carte ci-dessous. Vous aurez également besoin de notions de base, telles qu'une connexion Ethernet filaire ou une configuration Wi-Fi configurée. Configuration de la mise en réseau sans fil sur votre Raspberry Pi Configuration de la mise en réseau sans fil sur votre Raspberry Pi Pratiquement tous les projets Raspberry Pi nécessitent une connexion réseau. Vous gagnez ainsi en souplesse. en ignorant le port Ethernet en faveur d’un dongle USB sans fil. Lire la suite ; plus carte SD et câble d'alimentation micro USB.
  • Adaptateur USB Bluetooth. Adafruit vend un module Bluetooth 4.0 BLE qui a confirmé son bon fonctionnement (qu'est-ce que Bluetooth 4.0? Comment Bluetooth 4.0 façonne l'avenir de la connectivité mobile? Comment Bluetooth 4.0 façonne l'avenir de la connectivité mobile? Bluetooth est l'étoile oubliée sur la fiche technique de l'appareil. En savoir plus), mais testez ceux que vous avez déjà traînés avant d’en acheter un nouveau pour ce projet. J'ai trouvé un ancien adaptateur mini Bluetooth standard acheté au Japon qui semble bien fonctionner. Nous ne nous soucions pas des vitesses de transfert ou de la fiabilité de la connexion, car nous ne faisons qu’envoyer une poignée de main rapide pour savoir si un appareil est en vie et en bonne santé..
  • Tableau de bord GPIO (“cordonnier”) et des câbles de démarrage. Vous pouvez travailler directement depuis les pins du Pi, mais c'est beaucoup plus facile si vous avez des étiquettes sur chaque pin, et elles ne coûtent que 6 $ de toute façon..
  • Tableau de 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 supporter au moins 12 volts à 5 ampères. J'ai utilisé une carte générique à 4 canaux similaire à celle-ci pour environ 5 dollars, mais je vais supposer que vous savez comment utiliser la vôtre..
  • Verrou électroaimant 12 / 24V, même si un verrou électronique à solénoïde devrait également fonctionner. Celui que j'ai acheté a une force de maintien de 180 kg 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, n'essayez pas de tirer son alimentation du Pi.
  • L'application Lock.py Python, mais nous l'écrirons au fur et à mesure.

Travailler avec Bluetooth

Bluetooth étant au cœur de ce projet, commençons par installer un support Bluetooth et testons notre adaptateur. Vous pouvez le faire directement à partir du Pi ou de SSH à distance (comment configurer Windows en SSH dans votre Pi. Configuration de votre Raspberry Pi pour une utilisation sans tête avec SSH Configuration de votre Raspberry Pi pour une utilisation sans tête avec SSH Le Raspberry Pi peut accepter Commandes SSH lors de la connexion à un réseau local (via Ethernet ou Wi-Fi), ce qui vous permet de le configurer facilement. Les avantages de SSH vont au-delà de perturber le filtrage quotidien… En savoir plus).

sudo apt-get installer bluez python-bluez

Insérez votre dongle si vous ne l'avez pas déjà fait et regardons ce qu'il signale.

hcitool dev

Si vous avez quelque chose dans la sortie, vous pouvez y aller. Nous utiliserons ensuite un script Python pour rechercher les périphériques Bluetooth à proximité et saisir l'adresse unique du périphérique. Nous n'avons besoin de faire cela qu'une fois pour chaque appareil.

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

Si tu vois “0 appareils trouvés”, soit vous n’avez pas de clé USB Bluetooth compatible, soit votre smartphone n’est pas détectable. Ne désespérez pas cependant: je me suis rendu compte que je devais ouvrir la page des paramètres Bluetooth sur mon iPhone pour passer en mode découverte.

Génial, créons maintenant la première étape de notre logiciel qui effectue la détection. Créez une application Python appelée detect.py, et ouvrez-le avec Nano.

nano detect.py

Coller dans cet exemple de code:

#! / usr / bin / python importation heure Bluetooth lorsque True: affiche "Vérification" + time.strftime ("% a,% d% b% Y% H:% M:% S", time.gmtime ()) resultat = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', délai d'expiration = 5) if (result! = None): print "Utilisateur présent" else: print "Utilisateur hors plage" time.sleep ( dix) 

et ajustez la ligne suivante avec l'adresse de votre périphérique Bluetooth:

resultat = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', délai d'attente = 5)

presse CTRL-X et Y fermer et sauvegarder. Exécutez le même code et vous verrez à peu près ceci:

Le code devrait être très simple à comprendre, même si vous n’avez jamais touché à Python: il recherche un périphérique Bluetooth particulier toutes les 10 secondes et affiche un message différent selon qu’il est détecté ou non. Basculez le Bluetooth sur votre téléphone pour simuler un déplacement dans et hors de portée (probablement environ 4 m en réalité). Vous pouvez réduire ou augmenter le temps entre les analyses, mais j’ai estimé qu’il était raisonnable d’attendre 10 secondes avant que la porte s’ouvre, ce qui est l’avancée de tout ce projet..

J'ajouterais que je ne connaissais pas la consommation d'énergie associée à cette opération, mais je suppose que les requêtes ping effectuées plus souvent sur un périphérique consomment nécessairement davantage d'énergie. Les tests n'ont mis en évidence aucun problème de performances évident, mais si la vie de la batterie est une préoccupation majeure pour vous, envisagez de placer un commutateur à l'intérieur de votre bureau qui active et désactive la boucle de numérisation. Ainsi, une fois à l'intérieur, vous pouvez suspendre le verrouillage. système, puis réactivez le balayage lorsque vous quittez.

Félicitations, vous avez maintenant une application Python qui sait quand vous êtes à portée, pour que nous puissions commencer à agir en conséquence..

Modes de la carte GPIO

Avant de continuer, vous devez déterminer le mode de forum que vous allez utiliser. Il n'y a pas de bonne ou de mauvaise réponse, cela a seulement une incidence sur si vous spécifiez le numéro d'identification personnel ou le numéro d'identification virtuelle GPIO..

La valeur par défaut consiste à utiliser le numéro d'identification personnel littéral (“mode conseil”), en commençant par la broche 1 en bas à gauche (si vous regardez le Pi avec les ports USB à droite). La broche 2 est juste au-dessus de ça.

Cependant, si vous avez une évasion GPIO (“cordonnier”), les étiquettes que vous avez proviennent d’un autre mode, appelé “BCM” (Canal SOC Broadcom), et sont généralement écrits avec GPIO ou P préfixant le numéro. Vous n'avez pas strictement besoin d'une évasion GPIO - cela simplifie les choses. Si vous n'avez pas de panneau de discussion et que vous ne voulez pas en acheter un, utilisez ce diagramme:

Schéma de connexion des modèles A et B de Raspberry Pi à partir de RaspberryPi.org

Notez que le modèle d'origine B révision 1, révision 2 et les modèles B + et Pi2 ont tous des broches différentes. Référez-vous à cette question StackExchange pour un schéma correct à votre forum..

Dans ce code de projet, j'utilise le système de numérotation BCM GPIO qui correspond à la carte de discussion Adafruit que j'ai. Des modifications mineures sont nécessaires si vous souhaitez utiliser le mode pin littéral.

Fil dans un relais

Fixez la carte épuratrice en veillant à ce que le fil des broches 1 et 2 (celles situées dans le coin de votre Pi) soit relié aux 3v3 et 5V0 de l’évasion. Vous voudrez peut-être sortir un testeur de tension pour vérifier cela.

Avant de commencer, vérifiez si quelqu'un d'autre a utilisé votre relais avec le Raspberry Pi (ou trouvez-en un auparavant qui fonctionne bien). Certains peuvent nécessiter une activation de 5 V - mais le RPi ne peut fournir que 3,3 V sur les broches de sortie GPIO. Par chance, celui que j’utilise est satisfait de 3,3V, je n’ai donc pas besoin de circuit supplémentaire, seulement du 5V0 à VCC, GND à GND, et Broche GPIO 23 pour la première entrée de relais.

Mon précédent tutoriel sur GPIO Premiers pas avec GPIO sur un Raspberry Pi Premiers pas avec GPIO sur un Raspberry Pi Si l'Arduino était cool, attendez simplement de mettre la main sur un Raspberry Pi - ces choses sont extraordinaires. En plus d'être un ordinateur entièrement fonctionnel, ils ont… Read More a montré comment câbler un circuit de transistor pour passer de 3,3 V à 5 V si vous en avez besoin (en fait, j'ai utilisé la même carte de relais pour ce tutoriel. , mais il s’est avéré que je n’avais pas besoin de 5V après tout).

Pas besoin de câbler l'électroaimant pour le moment, vous entendrez un clic audible lors du déclenchement du relais.

Ensuite, récupérons du code pour interagir avec les ports GPIO.

Nous allons commencer par tester en dehors de Python pour confirmer que tout fonctionne sur les ports eux-mêmes. Installez le câblage, qui vous donne quelques outils utiles en ligne de commande.

git clone git: //git.drogon.net/wiringPi cd câblagePi ./build

Une fois installé, configurez la broche 23 de GPIO comme une sortie..

mode gpio -g 23 sorties

Maintenant, faites une analyse rapide de tous les ports pour confirmer

gpio -g readall

Vous aurez quelque chose de similaire à cela, bien que le vôtre puisse être plus long sur un modèle B + ou Pi2 puisqu'il contient plus de broches GPIO:

Cela peut paraître un peu déroutant au début, mais le tableau est divisé en deux et l’ordre des colonnes est inversé de chaque côté. À l'extrême gauche et à l'extrême droite se trouve le numéro de broche du BCM. Étant donné que nous en utilisons 23, le mode indiqué maintenant devrait être OUT. C'est une petite commande utile juste pour avoir une bonne idée de ce qui se passe avec toutes vos broches à tout moment..

Pour écrire la broche haute ou basse, utilisez simplement

gpio -g écrire 23 1 gpio -g écrire 23 0

Si tout va bien, si le relais est câblé correctement, vous entendrez un déclic. Sinon, ne continuez pas tant que vous n'avez pas compris le câblage. N'oubliez pas que vous aurez peut-être besoin d'une tension plus élevée pour activer le relais..

Une fois que vous avez confirmé le relais et que GPIO fonctionne, ajoutez les modules Python pour GPIO..

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

Modifions maintenant notre application Python pour activer ou désactiver le relais lorsque le téléphone est détecté. Vous trouverez le code final sur ce Gist. Copier l'existant detect.py à un nouveau lock.py, et ajoutez les commandes d'importation et de configuration suivantes:

importer RPi.GPIO en tant que GPIO GPIO.setmode (GPIO.BCM) RELAY = 23 GPIO.setup (RELAY, GPIO.OUT)

Dans l'instruction IF, ajoutez une commande pour activer ou désactiver le relais. Notez que votre relais peut fonctionner avec un signal faible ou élevé. Réglez-le en conséquence après le test..

GPIO.output (RELAY, 1)

Pour exécuter cette nouvelle version, préfixez la commande avec sudo - l'accès à GPIO nécessite des privilèges root.

Accrocher

Une fois que vous avez confirmé que le relais se déclenche avec votre capteur de proximité, ajoutez votre verrou électro-aimant. Du côté du relais, amenez le positif 12V dans la borne étiquetée COM (commune), puis la puissance positive fournie par l’électroaimant à la borne NO (normalement ouvert, c.-à-d. ceci n’est normalement pas connecté au terminal commun mais le sera lorsque vous activez le relais).

Joindre la terre de l’alimentation et de l’électroaimant sur la borne GND.

Reportez-vous aux instructions de montage fournies avec votre verrou. la porte doit être assez épaisse, et c'est plus facile si elle s'ouvre du côté où vous souhaitez que le verrou soit activé. Le mien était à l'opposé, donc j'ai besoin du support de montage en forme de L, ainsi que d'un morceau de bois supplémentaire pour augmenter l'épaisseur de la porte.

Améliorations

C’était une preuve de concept sur laquelle je pouvais me baser pour d’autres projets et qui visait simplement à ne pas laisser passer les yeux indiscrets de mon bureau lorsque je n’étais pas là. Il n’est pas conçu pour être un système de sécurité à toute épreuve. Pour cela, vous aurez besoin d’une batterie de secours pour que l’énergie continue de circuler en cas de coupure..

Bien sûr, si quelqu'un s'introduit chez vous par effraction et cherche à vous couper le courant, vous avez probablement pour problème principal de devenir un psychopathe qui est prêt à vous tuer, plutôt qu'un cambrioleur occasionnel. Vous voudriez aussi un verrou physique en plus d'un verrou électronique et un très gros bâton.

Bien sûr, cette technique de détection de proximité utilisant Bluetooth ne se limite pas à un verrouillage automatique de la porte. Vous pouvez également l'utiliser pour déclencher l'ouverture de la porte de votre garage lorsque vous rentrez chez vous ou allumer votre home cinéma avant de franchir la porte..

Quelle fonctionnalité pensez-vous que je devrais ajouter ensuite? Avez-vous eu des problèmes pour construire cela? Laissez-moi savoir dans les commentaires et je ferai de mon mieux pour vous aider!

Explorez plus sur: Home Security, Smart Locks.