sábado, 25 de julho de 2015

Sensor de Presença no Raspberry Pi B+

São muitos os pequenos projetos que podem ser feitos na plataforma Raspberry. Já postamos tutoriais que vão desde a piscar um simples LED a até controlá-lo remotamente por meio de um computador. E uma coisa que acontece com bastante frequência é o pensamento de "eu já sei como usar tal periférico de tal forma, então já sei tudo sobre ele", e é aí que essas pessoas se enganam! Usando o conhecimento em uma área, é possível juntar com outra área e aumentar (e muito!) as possibildades de criação, e este tutorial servirá como base para que você, caro leitor, veja que as possibilidades são muito grandes caso você tenha vontade de criar coisas novas!

Ensinaremos agora como fazer um sensor de presença usando dois recursos que já postamos tutoriais sobre neste blog: piscar LED e usar o sensor de presença para medir distâncias. A ideia aqui é fazer um sensor que dada uma distância limite, caso um objeto esteja nesta distância ou mais próximo é passada essa informação de alguma forma para o usuário (no caso, o piscar de um LED). Escolhermos o LED arbitrariamente, mas como você só precisa passar essa informação de alguma forma isso pode ser feito de qualquer outro jeito. Você pode fazer ele emitir um som quando tiver que passar a informação.

Mas sem mais delongas, vamos ao tutorial! Que vai aparentemente ser curto, mas só aparentemente mesmo. Isso porque precisaremos dos conhecimentos e circuitos montados de dois tutoriais anteriores, que são:



Como é necessário que sejam feitos dois circuitos para executar as funções poderão ser usadas duas protoboards para facilitar o processo de montagem. Na foto abaixo mostramos o circuito que montamos, usando apenas uma protoboard para poder economizar espaço. Agora talvez isso não faça muito sentido já que são circuitos simples, mas lembre-se: quanto mais espaço for economizado mais bem otimizado e montado será o seu circuito elétrico. Chegará uma hora que suas protoboards vão acabar caso não saiba otimizar o espaço.

(circuito que usamos para a execução desse projeto)


Os circuitos estão montados no mesmo esquema dito nos tutoriais linkados, o único trabalho que tivemos (que nem foi tão difícil assim) foi encaixar esses dois circuitos na mesma protoboard. Com o circuito montado, é hora de partir para o código que será compilado.

O código que usaremos também segue a mesma ideia dos códigos dos tutoriais linkados, mas usaremos as informações que eles dão para poder fazer as modificações necessárias. O código do sensor ultrassônico mede distâncias, então podemos usar a distância medida em uma verificação para poder verificar se o objeto encontrado está ou não na distância limite. Caso esteja, o programa executará o piscar do led, do contrário ele não fará nada. E como é um programa que precisa estar constantemente em execução pusemos a verificação em um laço. Segue abaixo o código comentado (não esquecendo de habilitar a função “ssh” do Raspberry, que é o que possibilitará a comunicação entre o mesmo e o sensor ultrassônico).

import RPi.GPIO. as GPIO
import time
GPIO.setmode(GPIO.BCM)

TRIG = 23
ECHO = 24

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.setup(18,GPIO.OUT)

while(1):
GPIO.output(TRIG,False)
time.sleep(1.5)

GPIO.output(TRIG,True)
time.sleep(0.00001)
GPIO.output(TRIG,False)

while GPIO.input(ECHO)==0:
pulse_start = time.time()

while GPIO.input(ECHO)==1:
pulse_end = time.time()

pulse_duration = pulse_end - pulse_start

distance = pulse_duration * 17150

distamce = round(distance, 2)

if(distamce <= 20):
GPIO.output(18,True)
print "Objeto encontrado: ",distamce," cm"
else:
GPIO.output(18,False)


GPIO.cleanup()


(programa em funcionamento)

Lembrando que para parar a execução do programa é só pressionar as teclas Ctrl+C no terminal.
E esse foi o tutorial de hoje! Além de ensinar algo novo sobre o Raspberry, também foi feito para mostrar como você pode pegar algo que já sabe para aplicar de uma maneira nova. Não basta apenas reproduzir o que já está escrito e dito como funciona, mas sim inovar em novas funções que ainda não foram exploradas. Seja criativo!


Até a próxima, pessoal!

Nenhum comentário:

Postar um comentário