Haga una puerta de oficina con cierre automático con sensor de proximidad de teléfono inteligente

  • William Charles
  • 0
  • 2935
  • 938
Anuncio

Pssst - quiere protección de alta tecnología para su oficina en casa o un candado secreto para su “taller” (ok, me tienes, en realidad es una mazmorra / sala de juegos) que los niños no podrán entender? Te tenemos cubierto. Construyamos una cerradura inteligente de bricolaje que detecte automáticamente cuando estás allí y se bloquee cuando no estés.

¿Como funciona? ¡NADIE LO SABE! O más específicamente, Bluetooth.

El concepto

Su teléfono inteligente es un dispositivo poderoso que constantemente revela información sobre sí mismo al mundo exterior; una forma de hacerlo es Bluetooth.

En el modo de descubrimiento, emite un número de identificación único, pero incluso cuando no se permite que se descubra específicamente, cualquier cosa que sepa esa dirección puede intentar hacer ping. Si se escucha una respuesta, eso indicaría si está dentro del rango o no.

Configuraremos una Raspberry Pi con un adaptador Bluetooth para estar constantemente alerta cuando su teléfono inteligente esté fuera de alcance, y cuando lo esté, el relé entrará en acción y bloqueará la puerta.

Necesitará

  • Raspberry Pi: cualquier modelo debería funcionar, ya que no es una tarea intensiva de CPU, pero estoy usando un modelo B más antiguo, y los pines GPIO pueden ser ligeramente diferentes en su modelo. Vea la sección a bordo del modo a continuación. También necesitará algunos conceptos básicos, como una conexión Ethernet por cable o una configuración Wi-Fi Configuración de redes inalámbricas en su Raspberry Pi Configuración de redes inalámbricas en su Raspberry Pi Prácticamente todos los proyectos de Raspberry Pi requerirán una conexión de red, y se puede obtener una flexibilidad considerable. ignorando el puerto Ethernet a favor de un dongle USB inalámbrico. ; más tarjeta SD y cable de alimentación micro USB.
  • Adaptador USB Bluetooth. Adafruit vende un módulo Bluetooth 4.0 BLE confirmado que funciona (¿qué es Bluetooth 4.0? ¿Cómo Bluetooth 4.0 está dando forma al futuro de la conectividad móvil? ¿Cómo Bluetooth 4.0 está dando forma al futuro de la conectividad móvil? Bluetooth es la estrella olvidada en la hoja de especificaciones del dispositivo), pero debe prueba cualquiera que ya tengas por ahí antes de comprar uno nuevo solo para este proyecto. Encontré un viejo mini adaptador Bluetooth estándar que compré en Japón que parece funcionar bien. No nos importan las velocidades de transferencia o la confiabilidad de la conexión, ya que todo lo que hacemos es enviar un apretón de manos rápido para ver si un dispositivo está vivo y bien.
  • Tablero de conexión GPIO (“zapatero”) y cables de puente. Puede trabajar directamente desde los pines en el Pi, pero es mucho más fácil si tiene etiquetas en cada pin, y de todos modos solo cuestan $ 6.
  • Placa de relé. Aquí tiene una amplia variedad de opciones, y cualquier cosa funcionará si está diseñado para usarse con un microcontrolador y puede manejar al menos 12 voltios a 5 amperios. He usado una placa genérica de 4 canales similar a esta por alrededor de $ 5, pero voy a suponer que sabes cómo trabajar con la tuya..
  • Cerradura de electroimán de 12 / 24V, aunque una cerradura electrónica de solenoide también debería funcionar. El que compré tiene una fuerza de retención de 180 kg y viene completo con placas de montaje e instrucciones, por aproximadamente $ 35.
  • Fuente de alimentación de 12 / 24V. El bloqueo del imán debe tener una fuente de alimentación separada; haga lo que haga, no intente extraer la energía del Pi.
  • Aplicación Python Lock.py, pero escribiremos esto a medida que avancemos.

Trabajando con Bluetooth

Bluetooth es fundamental para este proyecto, así que comencemos instalando algo de soporte Bluetooth y pruebe nuestro adaptador. Puede hacer esto directamente desde el Pi o SSH de forma remota (cómo configurar Windows en SSH en su Pi Configuración de su Raspberry Pi para uso sin cabeza con SSH Configuración de su Raspberry Pi para uso sin cabeza con SSH El Raspberry Pi puede aceptar Comandos SSH cuando está conectado a una red local (ya sea por Ethernet o Wi-Fi), lo que le permite configurarlo fácilmente. Los beneficios de SSH van más allá de alterar la detección diaria ...).

sudo apt-get install bluez python-bluez

Inserta tu dongle si aún no lo has hecho, y echemos un vistazo a lo que informa.

hcitool dev

Si tiene algo que figura en la salida, está listo para comenzar. A continuación, utilizaremos un script de Python para sondear dispositivos Bluetooth cercanos y tomar la dirección única del dispositivo. Solo necesitamos hacer esto una vez para cada dispositivo.

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

Si tú ves “0 dispositivos encontrados”, o no tiene un dongle USB Bluetooth compatible, o su teléfono inteligente no es reconocible. Sin embargo, no se desespere: descubrí que tenía que abrir la página de configuración de Bluetooth en mi iPhone para ponerlo en modo de descubrimiento, luego sucedió esto:

Genial, ahora creemos la primera etapa de nuestro software que realiza la detección. Crea una aplicación Python llamada detect.py, y ábrelo con Nano.

nano detect.py

Pegue este código de muestra:

#! / usr / bin / python import bluetooth import time while True: print "Checking" + time.strftime ("% a,% d% b% Y% H:% M:% S", time.gmtime ()) result = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', timeout = 5) if (result! = None): print "User present" else: print "User out of range" time.sleep ( 10) 

y ajuste la siguiente línea con la dirección de su dispositivo Bluetooth:

resultado = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', tiempo de espera = 5)

prensa CTRL-X y Y para cerrar y guardar. Ejecute el mismo código y verá algo como esto:

El código debe ser muy simple de entender, incluso si nunca antes ha tocado Python: está escaneando un dispositivo Bluetooth en particular cada 10 segundos, e imprime un mensaje diferente dependiendo de si se encuentra o no. Active el Bluetooth en su teléfono para simular el movimiento dentro y fuera del alcance (probablemente unos 4 m en realidad). Puede disminuir o aumentar el tiempo entre escaneos, pero sentí que 10 segundos era un tiempo razonable para tener que esperar a que se abriera la puerta, que es a donde vamos con todo este proyecto después de todo.

Debo agregar, no sé sobre el consumo de energía de hacer esto, pero supongo que hacer ping a un dispositivo con más frecuencia necesariamente consumiría más energía. No he visto ningún problema obvio de rendimiento en las pruebas, pero si la duración de la batería es una preocupación seria para usted, considere tener un interruptor dentro de su oficina que active y desactive el bucle de escaneo, por lo que una vez que esté dentro, puede pausar el bloqueo sistema, luego reactive el escaneo cuando salga.

Felicitaciones, ahora tiene una aplicación de Python que sabe cuándo está dentro del alcance, por lo que podemos comenzar a actuar sobre eso.

Modos de placa GPIO

Antes de continuar, debe averiguar qué modo de placa va a utilizar. No hay una respuesta correcta o incorrecta, solo afecta si especifica el número de pin literal o el número de pin virtual GPIO.

El valor predeterminado es usar el número de pin literal (“modo tablero”), comenzando con el pin 1 en la parte inferior izquierda (si mira hacia abajo al Pi con puertos USB a la derecha). El pin 2 está justo encima de eso.

Sin embargo, si tiene una ruptura de GPIO (“zapatero”), las etiquetas que tiene son de un modo alternativo, llamado “BCM” (Canal Broadcom SOC), y se escriben comúnmente con GPIO o P como prefijo del número. No necesita estrictamente una ruptura de GPIO, solo facilita las cosas. Si no tiene un tablero extraíble y no quiere comprar uno, use este diagrama:

Diagrama de pines de Raspberry Pi modelo A y B de RaspberryPi.org

Tenga en cuenta que el modelo B original, revisión 1, revisión 2, y el modelo B + y Pi2 tienen pin out diferentes. Consulte esta pregunta de StackExchange para obtener un diagrama correcto para su placa.

En este código de proyecto, estoy usando el sistema de numeración GPIO BCM que corresponde a la placa de conexiones Adafruit que tengo. Se necesitan modificaciones menores si desea utilizar el modo pin literal.

Cable en un relé

Conecte la placa de conexión, asegurándose de que el cable de los pines 1 y 2 (los que están en la esquina de su Pi) se conecte a 3v3 y 5V0 en la conexión. Es posible que desee sacar un probador de voltaje para verificar esto.

Antes de continuar, verifique si alguien más ha usado su relé particular con la Raspberry Pi (o encuentre uno de antemano que sepa que funciona). Algunos pueden requerir 5V para activarse, pero el RPi solo puede proporcionar 3.3V en los pines de salida GPIO. Por casualidad, el que estoy usando está contento con 3.3V, así que no necesitaba ningún circuito adicional, solo el 5V0 a VCC, GND a GND, y GPIO pin 23 para la primera entrada de relé.

Mi tutorial anterior sobre GPIO Comenzando con GPIO en una Raspberry Pi Comenzando con GPIO en una Raspberry Pi Si pensabas que el Arduino era genial, solo espera hasta que tengas una Raspberry Pi, estas cosas son increíbles. Además de ser una computadora totalmente funcional, también tienen una ... muestra cómo conectar un circuito de transistor para escalar 3.3V a un total de 5V si es necesario (de hecho, utilicé la misma placa de relés para ese tutorial, pero Resulta que no necesitaba 5V después de todo).

Todavía no es necesario conectar el electroimán, ya que podrá escuchar un clic audible cuando se dispare el relé.

A continuación, tomemos un código para interactuar con los puertos GPIO.

Comenzaremos probando fuera de Python para confirmar que todo funciona en los puertos. Instale cableadoPi, que le brinda algunas herramientas útiles de línea de comandos.

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

Una vez instalado, configure GPIO pin 23 para que sea una salida.

gpio -g modo 23 fuera

Ahora, haga un escaneo rápido de todos los puertos para confirmar

gpio -g readall

Tendrá algo similar a esto, aunque el suyo puede ser más largo en un modelo B + o Pi2 ya que tiene más pines GPIO:

Esto puede ser un poco confuso al principio, pero la tabla se divide por la mitad y el orden de las columnas se invierte a cada lado. En el extremo izquierdo y extremo derecho está el número de pin BCM. Como estamos usando 23, debería ver el modo que aparece ahora como OUT. Este es un pequeño comando útil solo para tener una buena idea de lo que está sucediendo con todos sus pines en cualquier momento.

Para escribir el pin alto o bajo, solo use

gpio -g escribe 23 1 gpio -g escribe 23 0

Con suerte, si tiene el relé conectado correctamente, lo escuchará haciendo clic dentro y fuera. Si no, no continúes hasta que hayas descubierto el cableado. Recuerde, es posible que necesite un voltaje más alto para activar el relé..

Una vez que haya confirmado que el relé y GPIO están funcionando, agregue los módulos de Python para GPIO.

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

Ahora modifiquemos nuestra aplicación Python para activar o desactivar el relé cuando se detecte el teléfono. Encontrarás el código final en este Gist. Copie el existente detect.py a un nuevo lock.py, y agregue los siguientes comandos de importación y configuración:

importar RPi.GPIO como GPIO GPIO.setmode (GPIO.BCM) RELAY = 23 GPIO.setup (RELAY, GPIO.OUT)

En la instrucción IF, agregue un comando para activar o desactivar el relé. Tenga en cuenta que su relé puede funcionar con una señal baja o alta, así que ajústelo en consecuencia después de probar.

GPIO.output (RELÉ, 1)

Para ejecutar esta nueva versión, prefija el comando con sudo - el acceso a GPIO requiere privilegios de root.

Enganchándolo

Una vez que haya confirmado que el relé está disparando con su sensor de proximidad, agregue su bloqueo de electroimán. En el lado del relé, coloque el positivo de 12V en el terminal etiquetado como COM (común), luego la entrada de energía positiva del electroimán al terminal NO (normalmente abierto, es decir. normalmente no está conectado al terminal común, pero lo estará cuando active el relé).

Unir la tierra desde la fuente de alimentación y el electroimán en el terminal GND.

Consulte las instrucciones de ajuste que vienen con su cerradura; la puerta debe ser bastante gruesa, y es más fácil si se abre desde el lado donde desea que esté la cerradura. El mío era todo lo contrario, así que necesito el soporte de montaje en forma de L, así como un poco de madera adicional para aumentar el grosor de la puerta..

Mejoras

Esto fue una prueba de concepto para mí para construir con otros proyectos, y realmente solo para mantener las miradas indiscretas fuera de mi oficina cuando no estoy allí; no está diseñado para ser un sistema de seguridad infalible. Para eso, necesitaría una batería de respaldo para mantener el flujo de energía en caso de corte..

Por supuesto, si alguien irrumpe en su casa y se toma la molestia de cortar su poder, probablemente tenga el problema más grande de que es un psicópata que intenta matarlo, en lugar de un ladrón casual. También querrás un cerrojo de seguridad físico además de uno electrónico, y un palo realmente grande.

Por supuesto, esta técnica de detección de proximidad que usa Bluetooth no solo se limita a una cerradura de puerta automática: también puede usarla para activar la apertura de la puerta de su garaje cuando llegue a casa, o encender su cine en casa antes de entrar por la puerta.

¿Qué característica crees que debería agregar a continuación?? ¿Tuviste algún problema para construir esto? Déjame saber en los comentarios y haré todo lo posible para ayudar!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.