Os sensores PIR (Passive infrared sensor) captam como o próprio nome diz, luz infravermelha. Eles utilizam a variação dessa radiação no ambiente para identificar quando há movimentos. Por serem passivos eles não emitem nenhum tipo de energia para detecção.
Embora de fácil utilização os sensores PIR utilizam tecnologias mais complicadas que alguns outros. Esses sensores são construídos com materiais chamados cristais piroelétricos e contém inclusive uma Lente de Fresnel geralmente de plástico (que alguns devem ter pensado ser somente uma
proteção).
Esse sensor pode ser encontrado à venda nesse link.
Na imagem acima é possível ver as conexões. O chip BISS0001 atua como amplificador e comparador. Ele irá interpretar o retorno do sensor na imagem abaixo, que fica sob a Lente de Fresnel e enviar o resultado na saída OUT.
A ilustração abaixo demonstra o funcionamento do sensor:
Créditos: machinedesign.com |
Ao final da comparação de variação infravermelha a saída do sensor irá permanecer em HIGH por um período de tempo (regulável) indicando efetivamente que houve algum movimento.
Apesar de muitas aplicações com esse sensor utilizarem circuitos mais simples, a leitura de sua saída pelo Raspberry Pi pode ser interessante para uma variedade de projetos.
Conexão elétrica do sensor PIR HC-SR501 ao Raspberry Pi
A ligação elétrica do sensor PIR é uma das mais simples. Temos os pinos VCC, GND e OUT. Eles são ligados ao 5V, GND e GPIO17 do Raspberry Pi. A conexão é a mesma em qualquer modelo da placa e o GPIO pode ser trocado por outro caso queira (sendo necessário a alteração no programa é claro). Lembrando que a saída do pino OUT no caso desse modelo de sensor é 3.3v por isso ligaremos diretamente ao Raspberry Pi (caso for comprar outro modelo de PIR é sempre bom verificar as tensões).
Software para comunicação entre o sensor PIR e o Raspberry Pi
Dessa vez utilizaremos uma IRQ (interrupção) utilizando a biblioteca wiringPi para identificar quando o pino OUT estiver em HIGH.
Baixe a lib utilizando o GIT:
$ git clone git://git.drogon.net/wiringPi
Caso não tenha o git instalado:
$ sudo apt-get install git-core
Entre no diretório da wiringPi e rode como root ou sudo:
$ ./build
Esse comando irá compilar e instalar automaticamente a biblioteca.
Copie o código abaixo e nomeie para pir.c
Compile da seguinte forma:
$ gcc pir.c -o pir -lwiringPi -lpthread
E rode com sudo:
$ sudo ./pir
Movimento
O código genérico deverá ser modificado à cada necessidade.
Ajuste da sensibilidade e tempo do sensor PIR
Existem dois trimpots na placa que se destinam ao ajuste da sensibilidade e tempo de pulso.
O ajuste do trimpot esquerdo refere-se a sensibilidade do PIR. O número 105 é referente à 1Mohm. Quanto mais ao sentido horário, maior a sensibilidade. Nos meus testes quanto mais sensível mais facilmente era detectado pequenos movimentos.
O trimpot direito é referente ao tempo de pulso. Quando há movimento o OUT do PIR se torna HIGH, o tempo em que essa saída permanecerá HIGH até voltar a ser LOW novamente é definido por esse ajuste. Lembrando que caso o movimento permaneça constante a saída também permanecerá HIGH constantemente. Quanto mais ao sentido horário, maior é o tempo.
Segundo alguns cálculos em um sensor similar realizados pelo pessoal da Adafruit, o tempo mínimo ficaria em torno de 2,5 segundos.
Como o tempo em que há o movimento também pode influenciar nesse valor, geralmente ele é maior que isso mesmo que ajustado para o mínimo. Os testes que que realizei com movimentos rápidos manteram o HIGH entre cerca de 3 à 6 segundos.
Conclusão
O sensor PIR pode ser utilizado para uma variedade de situações como alarmes, acionamento de cargas (luzes por exemplo) ao movimento entre várias situações que envolvem automação.
Vimos que sua utilização com o Raspberry Pi é bem fácil por sua saída manter somente dois estados, HIGH ou LOW que indicam o movimento.
Imagem ilustrativa: http://machinedesign.com/news/sensor-sense-passive-infrared-motion-sensors
Nenhum comentário:
Postar um comentário