Faça uma porta do escritório com travamento automático com sensor de proximidade de smartphones

Pssst

- quer um pouco de proteção de alta tecnologia para o seu escritório em casa, ou um bloqueio segredo para o seu “atelier” (Ok, você me pegou, é realmente um calabouço / sala de jogos) que as crianças não será capaz de descobrir? Nós temos que cobertas. Vamos construir um bloqueio inteligente DIY que detecta automaticamente quando você está lá, e bloqueios quando você não está.

Como funciona? NINGUÉM SABE! Ou mais especificamente, Bluetooth.

O conceito

O smartphone é um poderoso dispositivo que está constantemente revelando informações sobre si mesmo para o exterior mundial de uma maneira que faz isso é Bluetooth.

Video: Sensores Utilizados nos Smartphones e Tablets

No modo de descoberta, ele transmite um número único de identificação - mas mesmo quando não especificamente permitindo-se a ser descoberto, qualquer coisa que sabe que o endereço pode tentar ping-lo. Se a resposta for ouvido, que indicam se é na faixa ou não.

Nós vamos ser a criação de um Raspberry Pi com um adaptador Bluetooth estar constantemente à procura de quando o smartphone está fora do intervalo, e quando é, o relé se encaixará em ação e trancar a porta.

Você vai precisar

  • Raspberry Pi - qualquer modelo deve funcionar uma vez que não é uma tarefa intensivo da CPU, mas eu estou usando um modelo mais antigo B, e o esquema de pinos GPIO podem ser ligeiramente diferentes do seu modelo. Veja a seção sobre o modo de bordo abaixo. Você também vai precisar de alguns princípios como uma conexão Ethernet com fio ou Wi-Fi configurado- além de cartão SD e cabo de alimentação USB micro.
  • adaptador USB Bluetooth. Adafruit vende um Bluetooth 4.0 módulo BLE confirmou trabalho (o que é Bluetooth 4.0?), Mas você deve testar qualquer que você já tem em torno de mentir antes de comprar um novo apenas para este projeto. Eu encontrei um velho mini-Bluetooth adaptador padrão que eu comprei no Japão, que parece funcionar bem. Não se preocupam com velocidades de transferência ou confiabilidade de conexão, como todos nós estamos fazendo está enviando um aperto de mão rápido para ver se um dispositivo está vivo e bem.
  • GPIO bordo de fuga ( “torta”) e cabos de ligação. Você poderia trabalhar diretamente dos pinos no Pi, mas é muito mais fácil se você tem rótulos em cada pino, e eles são apenas US $ 6 de qualquer maneira.
  • Placa de relés. Você tem uma grande variedade de opções aqui, e nada vai funcionar se ele é projetado para uso com um microcontrolador e pode dirigir pelo menos 12 volts em 5 amps. Eu usei uma placa de 4 canais genérico semelhante a este para cerca de US $ 5, mas eu estou indo supor que você sabe como trabalhar o seu.
  • 12 / 24V eletroímã de bloqueio, embora um bloqueio solenóide eletrônico também deve funcionar. O que eu comprado tem força de retenção 180KG e vem completo com placas de montagem e instruções, para cerca de US $ 35.
  • 12 / 24V. A fechadura magnética deve ter uma fonte de alimentação separada - o que você faz, não tente puxar o poder para ele do Pi.
  • Lock.py Python aplicativo, mas vamos escrever esta medida que avançamos.

Video: Lenovo Vibe K6 Plus - sensor de digital e mais bateria! - Análise

Trabalhando com Bluetooth

Bluetooth é central para este projeto, então vamos começar com a instalação de algum suporte Bluetooth e testar nosso adaptador. Você pode fazer isso diretamente do Pi, ou SSH em remotamente (como configurar o Windows para SSH em você Pi). Configurar o seu Raspberry Pi Para uso Headless Com SSH Configurar o seu Raspberry Pi Para uso Headless Com SSHO Raspberry Pi pode aceitar comandos SSH quando conectado a uma rede local (seja por Ethernet ou Wi-Fi), permitindo que você configurá-lo facilmente para cima. Os benefícios da SSH ir além de perturbar a triagem diária ...consulte Mais informação

sudo apt-get instalar bluez pitão-bluez

Insira o dongle se você não tiver já, e vamos dar uma olhada no que ele está relatando.

hcitool dev

Se você tem algo listado na saída, você está pronto para ir. Em seguida, vamos usar um script Python para pesquisar para dispositivos Bluetooth próximos, e pegar o endereço do dispositivo único. Nós só precisa fazer isso uma vez para cada dispositivo.

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

Se você ver “0 dispositivos encontrado”, você não quer ter um compatível dongle Bluetooth USB ou o smartphone não é detectável. Não se desespere, porém: eu descobri que eu tinha para realmente abrir a página de configurações de Bluetooth no meu iPhone para chutá-la em modo de descoberta, em seguida, isso aconteceu:

Bluetooth identificado

Ótimo, agora vamos criar a primeira etapa do nosso software que faz a detecção. Criar um aplicativo Python chamada detect.py, e abri-lo com Nano.

nano detect.py

Cole neste código de exemplo:

#! / Usr / bin / pythonimportar Bluetoothimportar Tempoenquanto Verdade:impressão "checagem " + Tempo.strftime("% A,% d% b% Y% H:% M:% S", Tempo.gmtime())resultado = Bluetooth.lookup_name(`78: 7F: 70: 38: 51: 1B`, tempo esgotado=5)E se (resultado != Nenhum):impressão "usuário presente"outro:impressão "Usuário fora da faixa"Tempo.dormir(10)

e ajustar a seguinte linha com o seu endereço de dispositivo Bluetooth:

resultado = Bluetooth.lookup_name(`78: 7F: 70: 38: 51: 1B`, tempo esgotado=5)

pressione CTRL-X e Y para fechar e salvar. Execute o mesmo código, e você vê algo como isto:

usuário presente detectpy

O código deve ser muito simples de entender, mesmo se você nunca tocou Python antes: é a verificação de um dispositivo Bluetooth especial a cada 10 segundos, e ele imprime uma mensagem diferente, dependendo se ele é encontrado ou não. Alternar o Bluetooth do seu telefone para simular entrando e saindo do intervalo (provavelmente cerca de 4m na realidade). Você pode aumentar ou diminuir o tempo entre as verificações, mas eu senti 10 segundos foi uma quantidade razoável de tempo para, potencialmente, ter que esperar para a porta para desbloquear, que é para onde estamos indo com todo este projecto depois de tudo.

Devo acrescentar, eu não sei sobre o consumo de energia de fazer isso, mas eu diria que o ping um dispositivo mais frequentemente seria necessariamente consomem mais energia. Eu não vi quaisquer problemas de desempenho óbvias em testes, mas se a vida da bateria é uma preocupação séria para você, considere ter um interruptor dentro de seu escritório, que ativa e desativa o ciclo de digitalização, de modo que uma vez que você está dentro, você pode pausar o bloqueio sistema, em seguida, re-ativar a varredura quando você sair.

Parabéns, você agora tem um aplicativo Python que sabe quando você está dentro do alcance, para que possamos começar a agir sobre isso.

Modos Board GPIO

Antes de continuar, você precisa descobrir qual o modo placa que você vai usar. Não há uma resposta certa ou errada, ele só afeta se você especificar o número de pinos literal ou o número GPIO pin virtual.

O padrão é usar o número pin literal ( “modo board”), começando com o pino 1 no canto inferior esquerdo (se olhando para o Pi com portas USB à direita). Pino 2 é um pouco acima disso.

No entanto, se tiver uma fuga GPIO ( “torta”) de bordo, as etiquetas que são têm de um modo alternativo, chamado “BCM” (Broadcom canal SOC), e são vulgarmente escritas com GPIO ou P prefixar o número. Você não precisa estritamente uma fuga GPIO - ele só faz as coisas mais fáceis. Se você não tem uma placa de desagregação e não quero comprar um, use este diagrama:

Pi framboesa modelo A e B, diagrama de pinagem RaspberryPi.org
Pi framboesa modelo A e B, diagrama de pinagem RaspberryPi.org

Note-se que o modelo original B revisão 1, revisão 2, e o modelo de B + e pi2 todos têm diferentes saídas do pino. Consulte esta questão Stackexchange para um diagrama correto para sua placa.

Neste código de projeto, eu estou usando o sistema de numeração BCM GPIO que corresponde à placa de fuga Adafruit eu tenho. são necessárias pequenas modificações, se quiser usar o modo pin literal.

Fio em um relé

Fixe a placa de fuga, assegurando que o fio dos pinos 1 e 2 (os do canto de sua Pi) anexar a 3v3 e 5V0 na fuga. Você pode querer tirar um testador de voltagem para verificar isso.

bloqueio inteligente RPI - GPIO



Antes de prosseguir, verifique se alguém tem usado o seu relé especial com o Raspberry Pi (ou encontrar um de antemão que você sabe que funciona). Alguns podem exigir 5V para ativar - mas o RPI só pode fornecer 3.3V sobre os pinos de saída GPIO. Por acaso, o que eu estou usando é feliz com 3.3V, então eu não precisa de nenhum circuito adicional, apenas o 5V0 para VCC, GND para GND, e GPIO pino 23 para a primeira entrada do relé.

Minhas tutorial anterior sobre GPIO mostrou como conectar um circuito de transistor de ampliar 3.3V a um 5V completo se você precisa (na verdade, eu usei a mesma placa de relé para esse tutorial, mas acontece que eu não precisava de 5V depois de tudo).Começando com GPIO Em um Raspberry PiComeçando com GPIO Em um Raspberry PiSe você embora o Arduino foi legal, é só esperar até chegar em suas mãos um Raspberry Pi - essas coisas são surpreendentes. Bem como sendo um computador totalmente funcional, eles também têm uma ...consulte Mais informação

Não há necessidade de fios no eletroímã ainda, como você vai ser capaz de ouvir um estalo quando os fogos de relé.

Em seguida, vamos pegar algum código para interagir com as portas GPIO.

Vamos começar a testar fora do Python para confirmar que tudo está funcionando nas próprias portas. Instale wiringPi, que lhe dá algumas ferramentas de linha de comando úteis.

git clone git: //git.drogon.net/wiringPiCD wiringPi./build

Uma vez instalado, configurar GPIO pin 23 para ser uma saída.

GPIO -g fora modo de 23

Agora, fazer uma varredura rápida de todos os portos para confirmar

GPIO -g ReadAll

Você vai ter algo semelhante a este, embora seu pode ser mais longo em um modelo de B + ou PI2 uma vez que tem mais pinos GPIO:

GPIO ReadAll

Isto pode ser um pouco confusa em primeiro lugar, mas a tabela está dividida ao meio e o fim da coluna é invertida de cada lado. Na direita extrema esquerda e extrema é o número BCM pinos. Como estamos utilizando 23, você deve ver o modo listado agora como OUT. Este é um comando pouco útil apenas para obter uma boa idéia do que está acontecendo com todos os seus pinos em qualquer ponto.

Para escrever o pino de alta ou baixa, basta usar

GPIO -g Escreva 23 1gpio -g Escreva 23 0

Esperemos que, se você tiver o relé conectado corretamente, você vai ouvi-lo clicando ligado e desligado. Se não, não continue até que você descobriu a fiação. Lembre-se, você pode precisar de uma tensão mais alta para ativar o relé.

Depois de confirmar o relé e GPIO está funcionando, adicionar os módulos Python para GPIO.

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

Agora vamos modificar nosso aplicativo Python para acionar o relé ligado ou desligado quando o telefone é detectado. Você vai encontrar o código final neste Gist. Copie o existente detect.py para um novo lock.py, e adicionar os seguintes comandos de importação e configuração:

importar RPI.GPIO Como GPIOGPIO.setmode(GPIO.BCM)RETRANSMISSÃO = 23GPIO.configuração(RETRANSMISSÃO, GPIO.FORA)

Na declaração IF, adicionar um comando que quer activar ou desactivar o relé. Note que o relé pode funcionar tanto com um baixo ou um sinal de alta, então ajustar em conformidade após o teste.

GPIO.saída(RETRANSMISSÃO,1)

Para executar esta nova versão, prefixar o comando com sudo - acesso a GPIO exige privilégios de root.

Ligando-o

Depois de confirmar o relé está disparando com o sensor de proximidade, adicionar em seu bloqueio eletroímã. No lado do relé, trazer a 12V positivo no terminal COM marcado (comum), em seguida, a entrada de energia positiva do electroan ao terminal NO (normalmente aberto, isto é. isso normalmente não é conectado ao terminal comum, mas vai ser quando você ativar o relé).

Junte-se à terra da fonte de alimentação e o eletroímã no terminal GND.

bloqueio inteligente RPI - relé

Consulte as instruções de montagem que acompanham o lock a porta precisa ser muito grosso, e é mais fácil se ele abre longe do lado que deseja o bloqueio para ser ligado. Mina foi o oposto, de modo preciso o suporte de montagem em forma de L, bem como um bit adicional de madeira para aumentar a espessura da porta.

bloqueio inteligente RPI - eletroímã

melhorias

Esta foi uma prova de conceito para mim para construir com outros projetos, e realmente apenas para manter olhos curiosos fora do meu escritório quando eu não estou lá - não é projetado para ser um sistema de segurança infalível. Para isso, você precisará de uma bateria de backup para manter o poder fluindo em caso de ser cortado.

Claro, se alguém invade sua casa e vai para o trabalho de cortar seu poder, você provavelmente tem o maior problema deles sendo um psicopata que está fora de matá-lo, ao invés de um ladrão casual. Você também iria querer um bloqueio físico trava além de um eletrônico, e realmente um grande porrete.

Naturalmente, esta técnica de detecção de proximidade usando Bluetooth não se limita apenas a uma fechadura da porta automática - você também pode usá-lo para provocar a sua abertura da porta da garagem, quando você chegar em casa, ou ligue o seu cinema em casa antes de você anda na porta.

O recurso que você acha que devo acrescentar a seguir? Você teve algum problema construindo isso? Deixe-me saber nos comentários e eu vou fazer o meu melhor para ajudar!


Artigos relacionados