Hacer una puerta de la oficina de bloqueo automático con el sensor de proximidad teléfono inteligente
Pssst - ¿Quieres un poco de protección alta tecnología para su oficina en casa, o una cerradura secreta para su “taller” (Ok, me tienes, que es en realidad una habitación mazmorra / juegos) que los niños no serán capaces de averiguar? Te tenemos cubierto. Vamos a construir una cerradura inteligente bricolaje que detecta automáticamente cuando estás allí, y se bloquea cuando no estás.
¿Como funciona? ¡NADIE LO SABE! O más específicamente, Bluetooth.
El concepto
El teléfono inteligente es un potente dispositivo que está constantemente revelando información sobre sí mismo hacia el exterior mundial de una manera que lo hace es Bluetooth.
En el modo de descubrimiento, se difunde un número de identificación único - pero incluso cuando no permitir concretamente a ser descubierto, cualquier cosa que se sabe que dirección se puede tratar de hacer ping. Si se escucha una respuesta, eso indicaría si está en rango o no.
Vamos a la creación de un Frambuesa Pi con un adaptador Bluetooth que estar constantemente en la búsqueda de su teléfono inteligente cuando está fuera de rango, y cuando lo es, el relé se ajustará a la acción y cerrar la puerta.
Necesitará
- Frambuesa Pi - cualquier modelo debe trabajar ya que no es una tarea intensivo de la CPU, pero estoy usando un modelo más antiguo B, y los pines GPIO puede ser ligeramente diferente en su modelo. Vea la sección sobre el modo de tabla de abajo. Usted también necesitará algunos conceptos básicos como una conexión Ethernet cableada o Wi-Fi configurado- además de tarjetas SD y micro cable de alimentación USB.
- Adaptador USB Bluetooth. Adafruit vende un módulo Bluetooth 4.0 BLE confirmó trabajo (¿cuál es Bluetooth 4.0?), Pero debe probar cualquiera que ya tiene por ahí antes de comprar uno nuevo sólo para este proyecto. He encontrado un adaptador de mini Bluetooth estándar de edad que compré en Japón que parece funcionar bien. No importa la velocidad de transferencia o fiabilidad de la conexión, ya que todo lo que estamos haciendo es el envío de un rápido apretón de manos para ver si un dispositivo está vivo y bien.
- GPIO junta de ruptura ( “zapatero”) y cables de puente. Se podría trabajar directamente desde las clavijas del Pi, pero es mucho más fácil si usted tiene etiquetas en cada pin, y son sólo $ 6 modos.
- tablero de relés. Tienes una amplia variedad de opciones aquí, y nada va a funcionar si está diseñado para su uso con un microcontrolador y puede conducir al menos 12 voltios a 5 amperios. He utilizado un tablero de 4 canales genérico similar a éste por alrededor de $ 5, pero voy a asumir que usted sabe cómo trabajar la suya.
- 12 / 24V bloqueo electroimán, a pesar de un bloqueo de solenoide electrónico también debería funcionar. El que compré tiene 180 Kg fuerza de sujeción y se completa con placas de montaje e instrucciones, por alrededor de $ 35.
- 12 / 24V fuente de alimentación. El bloqueo del imán debe tener una fuente de alimentación independiente - lo que sea que hagas, no intenta tirar de la energía para que desde el Pi.
- Lock.py Python aplicación, pero vamos a escribir esto a medida que avanzamos.
Trabajar con Bluetooth
Bluetooth es fundamental para este proyecto, así que vamos a empezar con la instalación de algún tipo de apoyo Bluetooth y probar nuestro adaptador. Usted puede hacer esto directamente desde el Pi, o SSH de forma remota (cómo configurar Windows para SSH en que Pi). Configuración de la Frambuesa Pi Para uso sin cabeza Con SSH Configuración de la Frambuesa Pi Para uso sin cabeza Con SSHLa Raspberry Pi puede aceptar comandos SSH cuando se conecta a una red local (ya sea por Ethernet o Wi-Fi), lo que le permite fácil instalarlo. Los beneficios de SSH van más allá de alterar la proyección diaria ...Lee mas
sudo apt-get instalar bluez pitón-bluez
Inserte la mochila si no tiene ya, y vamos a echar un vistazo a lo que es la presentación de informes.
hcitool dev
Si usted tiene algo que aparece en la salida, ya está bueno para ir. A continuación vamos a utilizar una secuencia de comandos de Python para sondear los dispositivos Bluetooth cercanos, y apoderarse de la dirección del dispositivo único. Tan sólo hay que hacer esto una vez para cada dispositivo.
wget https://raw.githubusercontent.com/karulis/pybluez/master/examples/simple/inquiry.pypython inquiry.py
Si ve “0 dispositivos encontrados”, que significa que no tiene un adaptador Bluetooth USB compatible o teléfono inteligente no se puede detectar. No se desespere sin embargo: me encontré con que tenía que en realidad abrir la página de configuración de Bluetooth en mi iPhone para poner en modo de detección, entonces esto ocurrió:
Bien, ahora vamos a crear la primera etapa de nuestro software que hacer la detección. Crear una aplicación de Python llamada detect.py, y abrirlo con Nano.
nano detect.py
Pegado en este código de ejemplo:
#! / Usr / bin / pythonimportar Bluetoothimportar horamientras Cierto:impresión "Comprobación " + hora.strftime("% De A,% d% b% Y% H:% M:% S", hora.gmtime())resultado = Bluetooth.lookup_name(`78: 7F: 70: 38: 51: 1B`, se acabó el tiempo=5)Si (resultado != Ninguna):impresión "usuario actual"más:impresión "Usuario fuera de rango"hora.dormir(10)
y ajustar la línea siguiente con la dirección del dispositivo Bluetooth:
resultado = Bluetooth.lookup_name(`78: 7F: 70: 38: 51: 1B`, se acabó el tiempo=5)
prensa CTRL-X y Y para cerrar y guardar. Ejecutar el mismo código, y se ve algo como esto:
El código debe ser muy sencillo de entender, incluso si nunca has tocado antes Python: es la exploración de un dispositivo Bluetooth particular, cada 10 segundos, y se imprime un mensaje diferente dependiendo de si se encuentra o no. Alternar el Bluetooth en su teléfono para simular movimiento dentro y fuera de rango (probablemente alrededor de 4 m en la realidad). Se puede disminuir o aumentar el tiempo entre las exploraciones, pero sentí 10 segundos era una cantidad razonable de tiempo para tener, potencialmente, para esperar a que la puerta se desbloquee, que es a donde vamos con todo este proyecto después de todo.
Debo añadir, no sé sobre el consumo de energía de hacer esto, pero yo supongo ping a un dispositivo con más frecuencia consumiría necesariamente más energía. No he visto ningún problema de rendimiento en las pruebas evidentes, pero si la batería es una gran preocupación para usted, considere que tiene un interruptor dentro de su oficina, que activa y desactiva el circuito de barrido, por lo que una vez que estás dentro, se puede hacer una pausa en la cerradura sistema, a continuación, volver a activar el escaneo cuando se vaya.
Felicitaciones, ahora tienen una aplicación Python que sabe cuando está dentro del rango, por lo que pueden comenzar a actuar sobre eso.
Modos de mesa GPIO
Antes de continuar, es necesario averiguar qué modo de placa que se va a utilizar. No hay una respuesta correcta o incorrecta, que sólo afecta a si se especifica el número de pin literal o el número de pin GPIO virtual.
El valor predeterminado es utilizar el número de pin literal ( “modo de tablero”), comenzando con el pin 1 en la parte inferior izquierda (si mirando hacia abajo en el Pi con puertos USB a la derecha). Pin 2 es justo por encima de eso.
Sin embargo, si tiene una ruptura GPIO ( “zapatero”) de planchar, las etiquetas que tienen son de un modo alternativo, llamado “BCM” (Broadcom canal SOC), y son comúnmente escrito con GPIO o P prefijar el número. No es necesario estrictamente una ruptura GPIO - que sólo hace las cosas más fáciles. Si usted no tiene un tablero de arranque y no quiere comprar uno, use el siguiente diagrama:
Tenga en cuenta que el modelo original B revisión 1, revisión 2, y el modelo B + y Pi2 todos tienen diferentes salidas de pines. Referirse a esta pregunta StackExchange para ver un diagrama correcto para su tablero.
En este código de proyecto, estoy usando el sistema de numeración BCM GPIO que corresponde al tablero del desbloqueo Adafruit tengo. Se necesitan modificaciones menores si desea utilizar el modo de pin literal.
Alambre en un relé
Una el tablero del desbloqueo, lo que garantiza que el alambre de las patas 1 y 2 (los que están en la esquina de su Pi) adjuntar a 3v3 y 5V0 en la ruptura. Es posible que desee sacar un voltímetro para comprobar esto.
Antes de continuar, compruebe si alguien más ha usado su repetidor particular con la Frambuesa Pi (o encontrar uno de antemano que sepa que funciona). Algunos pueden requerir 5V para activar - pero el IPC sólo puede proporcionar 3,3 V en los pines de salida GPIO. Por casualidad, el que estoy usando es feliz con 3,3 V, por lo que no necesita ningún circuito adicional, sólo el 5V0 a VCC, GND a GND, y GPIO pasador 23 para la primera entrada del relé.
Mi tutorial anterior en GPIO mostró cómo cablear un circuito de transistor para escalar hasta 3,3 V a 5 V completo si es necesario (de hecho, he utilizado la misma placa de relé para ese tutorial, pero resulta que no necesitaba 5V después de todo).Primeros pasos con GPIO En un Frambuesa PiPrimeros pasos con GPIO En un Frambuesa PiSi bien el Arduino era fresco, sólo tiene que esperar hasta que usted consigue sus manos en un Frambuesa Pi - estas cosas son increíbles. Además de ser un equipo totalmente funcional, sino que también tienen un ...Lee mas
No hay necesidad de alambre en el electroimán sin embargo, como usted será capaz de oír un clic audible cuando se dispara el relé.
Vídeo: Cómo despertar a tu Android usando el sensor de proximidad
El siguiente, vamos a agarrar algo de código para interactuar con los puertos GPIO.
Vamos a empezar por probar fuera del pitón para confirmar que todo está funcionando en los propios puertos. Instalar wiringPi, que le da algunas herramientas útiles línea de comandos.
Git clone git: //git.drogon.net/wiringPidiscos compactos wiringPi./build
Una vez instalado, configurar GPIO pasador 23 para ser una salida.
Vídeo: Puerta Automatica con control de tiempo Arduino
GPIO -g modo de salir 23
Ahora, hacer una exploración rápida de todos los puertos para confirmar
ReadAll GPIO -g
Vas a tener algo similar a esto, aunque la suya pueden ser más largos en un modelo de B + o Pi2 ya que cuenta con más pines GPIO:
Esto puede ser un poco confuso al principio, pero la mesa está dividido por la mitad y el orden de las columnas se invierte en cada lado. A la derecha de la izquierda y ahora es el número de pin BCM. Puesto que estamos utilizando 23, debería ver el modo de la lista ahora como OUT. Este es un pequeño comando útil sólo para obtener una buena idea de lo que está pasando con todos sus pines en cualquier punto.
Para escribir el PIN de alto o bajo, sólo tiene que utilizar
-g GPIO escribir 23 1gpio -g escribir 23 0
Con suerte, si se ha conectado correctamente el relé, se escucha que al hacer clic en y fuera. Si no es así, no continúe hasta que haya descubierto el cableado. Recuerde, es posible que tenga un voltaje más alto para activar el relé.
Una vez que haya confirmado el relé y GPIO está trabajando, añadir los módulos de Python para GPIO.
sudo apt-get instalar python-dev-python rpi.gpio
Ahora vamos a modificar nuestra aplicación Python para activar el relé de encendido o apagado cuando se detecta el teléfono. Encontrará el código final en este Gist. Copiar el vigente detect.py a un nuevo lock.py, y añadir los siguientes comandos de importación y de configuración:
importar RP _.GPIO como GPIOGPIO.modo de ajuste(GPIO.BCM)RELÉ = 23GPIO.preparar(RELÉ, GPIO.FUERA)
En la instrucción IF, añadir un comando para activar o desactivar el relé. Tenga en cuenta que el relé puede funcionar ya sea con una baja o una señal de alto, por lo que ajustar en consecuencia después de la prueba.
GPIO.salida(RELÉ,1)
Para ejecutar esta nueva versión, el comando con el prefijo sudo - acceso a GPIO requiere privilegios de root.
Conectarlo
Una vez que haya confirmado que el relé está disparando con su sensor de proximidad, añadir en su cerradura electroimán. En el lado de relé, llevar el 12V positivo en el COM marcado terminal (común), entonces la potencia de entrada positiva del electroimán para el NO terminal (normalmente abierto, es decir. esto normalmente no está conectado al terminal común pero será cuando se activa el relé).
Unirse a la tierra de la fuente de alimentación y el electroimán en el terminal GND.
Consulte las instrucciones de instalación que venía con el lock-la puerta tiene que ser bastante grueso, y es más fácil si se abre hacia el lado contrario desea que el bloqueo sea sucesivamente. El mío era el opuesto, por lo que necesitan el soporte de montaje en forma de L, así como un bit adicional de la madera para aumentar el espesor de la puerta.
mejoras
Esta fue una prueba de concepto para mí para construir con otros proyectos, y realmente sólo para mantener los ojos curiosos de mi oficina cuando no estoy allí - que no está diseñado para ser un sistema de seguridad a prueba de tontos. Para ello, se necesitaría una batería de reserva para mantener el flujo de energía en caso de ser cortado.
Por supuesto, si alguien irrumpe en su casa y se toma la molestia de cortar el poder, usted probablemente tiene el problema más grande de los cuales es un psicópata que está fuera a matar, en lugar de un ladrón ocasional. También querría un bloqueo físico cerrojo de seguridad, además de uno electrónico, y una muy gran palo.
Por supuesto, esta técnica de detección de proximidad a través de Bluetooth no se limita sólo a un bloqueo automático de la puerta - también se podría utilizar para desencadenar la apertura de su puerta de garaje cuando llega a casa, o encender el cine en casa antes de entrar en la puerta.
Vídeo: El Sensor de Proximidad. ¿Para qué sirve?
¿Qué función cree usted que debo añadir a continuación? ¿Ha tenido problemas de la construcción de esta? Déjame saber en los comentarios y voy a hacer mi mejor esfuerzo para ayudar!