Descricão
O sensor ultrasónico HC-SR04 para Raspberry Pi é um sensor que, entre outras possiveis aplicações, serve para medir distâncias. Funciona ao enviar um emissor de ultrasons (inaudiveis para o ouvido humano devido à sua alta frequência) através de um dos cilindros que compõem o sensor e espera-se que o som ressalte num objeto e volte. A seguir o som é captado por outro cilindro do sensor.

Sabemos que a velocidade do som no ar é de 340 m/segundo por isso calculando o tempo decorrido entre o envio do emissor e a receção do sinal de retorno e aplicando uma simples fórmula matemática, obtemos a distância entre o sensor e o objecto que se encontra adiante.
Este módulo tem uma área de trabalho de 3cm por 3cm com uma precisão de 3mm e alimenta-se a 5V (15 ma) o que o torna ideal para projetos com Arduino ou Raspberry. Pode comprar o sensor HC-SR04 na ElectroFun.
Montagem e ligações
Para alimentar o sensor, liguei o pino VCC do módulo ao pino GPIO de 5V do Raspberry Pi e o pino GND a um pino GPIO GND, com isto ja temos um sensor alimentado. Para comunicar o sensor com o Raspberry, liguei o pino TRIGGER ao pino GPIO 25 e o pino ECHO ao pino GPIO 7. Coloquei uma resistência de 1Kohm entre o pino ECHO e o pino GPIO 7 porque os pinos GPIO funcionam a 3.3V e eu não os quero queimar.
Script no Python
Quando tivermos as ligações montadas, podemos iniciar este script em Python que irá imprimir no ecrã a distância entre o sensor e qualquer objeto que coloquemos diante dele.
import RPi.GPIO as GPIO #Importamos a libraria GPIO import time #Importamos time (time.sleep) GPIO.setmode(GPIO.BCM) #Colocamos a placa em modo BCM GPIO_TRIGGER = 25 #Usamos o pin GPIO 25 como TRIGGER GPIO_ECHO = 7 #Usamos o pin GPIO 7 como ECHO GPIO.setup(GPIO_TRIGGER,GPIO.OUT) #Configuramos Trigger como saída GPIO.setup(GPIO_ECHO,GPIO.IN) #Configuramos Echo como entrada GPIO.output(GPIO_TRIGGER,False) #Colocamos o pin 25 como LOW try: while True: #Iniciamos un loop infinito GPIO.output(GPIO_TRIGGER,True) #Enviamos uma pressão de ultrasonidos time.sleep(0.00001) #Uma pequena pausa GPIO.output(GPIO_TRIGGER,False) #Apagamos a pressão start = time.time() #Guarda o tempo atual mediante time.time() while GPIO.input(GPIO_ECHO)==0: #Enquanto o sensor não receba sinal... start = time.time() #Mantemos o tempo actual mediante time.time() while GPIO.input(GPIO_ECHO)==1: #Se o sensor recebe sinal... stop = time.time() #Guarda o tempo actual mediante time.time() noutra variavel elapsed = stop-start #Obtemos o tempo decorrido entre envío y receção distance = (elapsed * 34300)/2 #Distancia é igual ao tempo por velocidade partido por 2 D = (T x V)/2 print distance #Devolvemos a distancia (em centímetros) por ecrã time.sleep(1) #Pequena pausa para não saturar o procesador do Raspberry except KeyboardInterrupt: #Se o utilizador pressionar CONTROL+C... print "quit" #Avisamos do encerramento ao utilizaador GPIO.cleanup() #Limpamos os pinos GPIO e saimos
Gostaram deste artigo ? Deixem o vosso comentário no formulário a baixo.
Não se esqueçam de fazer like na nossa página no facebook.
Todos os produtos utilizados neste artigo podem ser encontrados na loja de componentes eletrónicos ElectroFun.