Faça uma porta de escritório com travamento automático com sensor de proximidade para smartphone
Pssst - deseja alguma proteção de alta tecnologia para seu escritório em casa ou uma fechadura secreta para sua “oficina” (ok, você me pegou, na verdade é uma masmorra / sala de jogos) que as crianças não serão capazes de descobrir? Estamos protegendo você. Vamos construir um bloqueio inteligente DIY que detecta automaticamente quando você está lá e bloqueia quando você não está.
Como funciona? NINGUÉM SABE! Ou mais especificamente, Bluetooth.
O conceito
Seu smartphone é um dispositivo poderoso que está constantemente revelando informações sobre si mesmo para o mundo exterior; uma forma de fazer isso é o Bluetooth.
No modo de descoberta, ele transmite um número de identificação exclusivo - mas mesmo quando não se permite especificamente ser descoberto, qualquer coisa que conheça esse endereço pode tentar fazer o ping. Se uma resposta for ouvida, isso indicaria se está dentro do alcance ou não.
Estaremos configurando um Raspberry Pi com um adaptador Bluetooth para ficar constantemente alerta quando seu smartphone estiver fora de alcance e, quando estiver, o relé entrará em ação e trancará a porta.
Você precisará
- Raspberry Pi - qualquer modelo deve funcionar, uma vez que não é uma tarefa intensiva da CPU, mas estou usando um modelo B mais antigo e as pinagens GPIO podem ser ligeiramente diferentes no seu modelo. Veja a seção modo de bordo abaixo. Você também precisará de alguns princípios básicos, como uma conexão Ethernet com fio ou Wi-Fi configurado; além de cartão SD e cabo de alimentação micro USB.
- Adaptador USB Bluetooth. A Adafruit vende um módulo Bluetooth 4.0 BLE com funcionamento confirmado (o que é Bluetooth 4.0?), Mas você deve testar qualquer um que já tenha antes de comprar um novo apenas para este projeto. Encontrei um mini adaptador Bluetooth padrão antigo que comprei no Japão que parece funcionar bem. Não nos importamos com as velocidades de transferência ou confiabilidade da conexão, pois tudo o que estamos fazendo é enviar um aperto de mão rápido para ver se um dispositivo está funcionando e bem.
- placa de breakout GPIO (“cobbler”) e cabos jumper. Você poderia trabalhar diretamente com os pinos no Pi, mas é muito mais fácil se você tiver etiquetas em cada pino, e eles custam apenas US $ 6, de qualquer maneira.
- Placa de retransmissão. Você tem uma grande variedade de opções aqui, e qualquer coisa funcionará se for projetada para uso com um microcontrolador e puder acionar pelo menos 12 volts a 5 amperes. Usei uma placa genérica de 4 canais semelhante a esta por cerca de US $ 5, mas presumo que você saiba como trabalhar a sua.
- Bloqueio de eletroímã 12/24 V, embora um bloqueio de solenóide eletrônico também deva funcionar. O que comprei tem 180 kg de força de retenção e vem completo com placas de montagem e instruções, por cerca de US $ 35.
- Fonte de alimentação 12/24 V. O bloqueio magnético deve ter uma fonte de alimentação separada - faça o que fizer, não tente puxar a energia para ele do Pi.
- aplicativo Lock.py Python, mas vamos escrever isso à medida que avançarmos.
Trabalhando com Bluetooth
O Bluetooth é fundamental para este projeto, então vamos começar instalando algum suporte para Bluetooth e testar nosso adaptador. Você pode fazer isso diretamente do Pi ou SSH remotamente (como configurar o Windows para SSH em seu Pi).
sudo apt-get install bluez python-bluez
Insira seu dongle, se ainda não o fez, e vamos dar uma olhada no que ele está relatando.
hcitool dev
Se você tiver algo listado na saída, está pronto para ir. A seguir, usaremos um script Python para pesquisar dispositivos Bluetooth próximos e obter o endereço exclusivo do dispositivo. Precisamos fazer isso apenas uma vez para cada dispositivo.
wget https://pybluez.googlecode.com/svn/trunk/examples/simple/inquiry.py python inquérito.py
Se você vir “0 dispositivos encontrados”, você não tem um dongle USB Bluetooth compatível ou seu smartphone não está detectável. Mas não se desespere:descobri que precisava realmente abrir a página de configurações do Bluetooth no meu iPhone para colocá-lo no modo de descoberta, então aconteceu o seguinte:
Ótimo, agora vamos criar o primeiro estágio do nosso software que faz a detecção. Crie um aplicativo Python chamado detect.py e abra-o com o Nano.
nano detect.py
Cole este código de amostra:
#! / usr / bin / python importar tempo de importação de bluetooth enquanto True:print "Checking" + time.strftime ("% a,% d % b% Y% H:% M:% S ", time.gmtime ()) resultado =bluetooth.lookup_name ('78:7F:70:38:51:1B ', tempo limite =5) if (resultado! =Nenhum ):imprimir "Usuário presente" else:imprimir "Usuário fora do intervalo" time.sleep (10)
e ajuste a seguinte linha com o endereço do seu dispositivo Bluetooth:
result =bluetooth.lookup_name ('78:7F:70:38:51:1B ', tempo limite =5)
Pressione CTRL-X e Y para fechar e salvar. Execute o mesmo código e você verá algo assim:
O código deve ser muito simples de entender, mesmo se você nunca tocou em Python antes:ele verifica um dispositivo Bluetooth específico a cada 10 segundos e imprime uma mensagem diferente, dependendo se for encontrado ou não. Alterne o Bluetooth em seu telefone para simular o movimento dentro e fora do alcance (provavelmente cerca de 4 m na realidade). Você pode diminuir ou aumentar o tempo entre as varreduras, mas eu senti que 10 segundos era uma quantidade razoável de tempo para potencialmente ter que esperar a porta destravar, que é para onde estamos indo com todo esse projeto afinal.
Devo acrescentar, não sei sobre o consumo de energia de fazer isso, mas presumo que o ping de um dispositivo com mais frequência necessariamente consome mais energia. Não vi nenhum problema de desempenho óbvio nos testes, mas se a vida da bateria for uma preocupação séria para você, considere ter um interruptor dentro do seu escritório que ativa e desativa o loop de varredura, então, quando você estiver dentro, pode pausar a fechadura sistema e, em seguida, reative a verificação ao sair.
Parabéns, agora você tem um aplicativo Python que sabe quando você está dentro do alcance, então podemos começar a agir sobre isso.
Modos da placa GPIO
Antes de continuar, você precisa descobrir qual modo de placa irá usar. Não há resposta certa ou errada, apenas afeta se você especifica o número do pino literal ou o número do pino GPIO virtual.
O padrão é usar o número de pino literal (“modo de placa”), começando com o pino 1 no canto inferior esquerdo (se estiver olhando para o Pi com portas USB à direita). O pino 2 está logo acima disso.
No entanto, se você tiver uma placa de breakout GPIO (“cobbler”), os rótulos que você tem são de um modo alternativo, chamado “BCM” (canal Broadcom SOC), e são comumente escritos com GPIO ou P como prefixo do número. Você não precisa estritamente de um breakout GPIO - isso apenas torna as coisas mais fáceis. Se você não tem uma placa de breakout e não quer comprar uma, use este diagrama:
Observe que o modelo B original, revisão 1, revisão 2 e o modelo B + e Pi2, todos têm pinos diferentes. Consulte esta pergunta StackExchange para um diagrama correto para sua placa.
Neste código de projeto, estou usando o sistema de numeração BCM GPIO que corresponde à placa de breakout Adafruit que tenho. Pequenas modificações são necessárias se você deseja usar o modo de pino literal.
Conecte em um relé
Prenda a placa de breakout, certificando-se de que o fio dos pinos 1 e 2 (aqueles no canto do seu Pi) se fixem em 3v3 e 5V0 no breakout. Você pode querer puxar um testador de voltagem para verificar isso.
Antes de prosseguir, verifique se alguém mais usou o seu relé específico com o Raspberry Pi (ou encontre de antemão um que você saiba que funciona). Alguns podem exigir 5 V para ativar - mas o RPi só pode fornecer 3,3 V nos pinos de saída GPIO. Por acaso, o que estou usando está satisfeito com 3,3 V, então não precisei de nenhum circuito adicional, apenas o 5V0 para VCC , GND para GND e GPIO pino 23 para a primeira entrada de relé .
Meu tutorial anterior sobre GPIO mostrou como conectar um circuito de transistor para aumentar 3,3 V a 5 V se você precisar (na verdade, usei a mesma placa de relé para aquele tutorial, mas descobri que não precisava de 5 V depois de tudo).
Não há necessidade de conectar o eletroímã ainda, pois você poderá ouvir um clique audível quando o relé disparar.
A seguir, vamos pegar um código para interagir com as portas GPIO.
Começaremos testando fora do Python para confirmar se tudo está funcionando nas próprias portas. Instale o wiringPi, que oferece algumas ferramentas úteis de linha de comando.
git clone git://git.drogon.net/wiringPi cd wiringPi ./build
Uma vez instalado, configure GPIO pino 23 para ser uma saída.
gpio -g modo 23 out
Agora, faça uma verificação rápida de todas as portas para confirmar
gpio -g readall
Você terá algo semelhante a isso, embora o seu possa ser mais longo em um modelo B + ou Pi2, pois tem mais pinos GPIO:
Para obter mais detalhes:Faça uma porta de escritório com travamento automático com sensor de proximidade para smartphone
Processo de manufatura
- Bank Vault
- Circuito sensor de proximidade simples e trabalho com aplicativos
- Considere o problema nº 1 com redes de sensores inteligentes baseadas em Bluetooth
- Cypress:MCUs Bluetooth fornecem rede mesh com conectividade onipresente de smartphone
- Sensor de rastreamento de linha com RPi
- API do sensor ambiental com um RPi
- Um sensor de proximidade analógico simples com interface digital (para Raspberry Pi) [última atualização:7 de fevereiro de 2014]
- Sensor Portenta e Termopar (com MAX6675)
- Monitoramento de CO2 com Sensor K30
- Arduino com Bluetooth para controlar um LED!