jueves, 23 de marzo de 2017

Prender un LED con Sensor de Movimiento Ultrasonico HC-SR04 en Raspberry Pi


En la entrada anterior vimos como controlar un LED con GPIO en la RaspBerry Pi: https://redes-seguridad.blogspot.com.ar/2017/03/controlando-un-led-con-raspberry-pi-en.html

Ahora vamos a explicar como prender el led utilizando el sensor de movimiento HC-SR04.

Materiales que utilizaremos son los mismos elementos que en el link de arriba, pero agregando el sensor que se puede conseguir por cualquier lado.


Pasos para la conexión:

Voy a explicar lo mejor posible, utilizando la terminología de filas A, B, C, etc y columnas 0, 1, 2, al mejor estilo batalla naval.

Los pines del Raspberry los enumeraré teniendo la tarjeta SD hacia la izquierda y el puerto USB hacia la derecha, el de abajo a la izquierda sería el PIN_1, el de arriba PIN_2, e ir contando de abajo hacia arriba y de izquierda a derecha PIN_3 sería el segundo de abajo de izq a der y así sucesivamente.

Lo que está en letra negrita es del raspberry y lo que está en letra azul es el protoboard:

1) Conectamos el PIN_2 de las raspberry al positivo => +59 (la primer linea de abajo del protoboard).

2) PIN_6 al negativo => -55 (la segunda linea de abajo del protoboard).

3) PIN_10 al J50

4) PIN_11 al J51

5) PIN_16 al H33

6) +53 al J49

7) -52 al J52 

8) Conectamos una resistencia del -35 al J35

9) Conectamos el LED de 5volts: El negativo (lado más corto) del LED lo conectamos al G35 del proto y el positivo (lado más largo) al G33

10) El sensor ultrasónico lo conectamos desde el F49 al F52. IMPORTANTE!! El GND del sensor debe ir en el F52 y el vCC del sensor al F49 del protoboard.


Ya finalizadas las conexiones les pongo el código para que generen el python:

vi /var/www/html/sensorProximidad.py

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
Trigger = 10
Echo = 12
GPIO.setup(Trigger,GPIO.OUT)
GPIO.setup(Echo,GPIO.IN)
print "Sensor Ultrasonico"
try:
        while True:
                GPIO.output(Trigger,False)
                time.sleep(0.5)
                GPIO.output(Trigger,True)
                time.sleep(0.00001)
                GPIO.output(Trigger,False)
                inicio=time.time()
                while GPIO.input(Echo)==0:
                        inicio=time.time()
                while GPIO.input(Echo)==1:
                        final=time.time()
                t_transcurrido=final-inicio
                distancia=t_transcurrido*34000
                distancia=distancia/2
                if distancia < 10:
                        GPIO.setmode(GPIO.BOARD)
                        GPIO.setwarnings(False)
                        GPIO.setup(16, GPIO.OUT)
                        GPIO.output(16,1)
                else:
                        GPIO.setmode(GPIO.BOARD)
                        GPIO.setwarnings(False)
                        GPIO.setup(16, GPIO.OUT)
                        GPIO.output(16,0)
except KeyBoardInterrupt:
        GPIO.cleanup()

Le damos permisos al script de ejecución y lo ejecutamos, ponemos la mano a menos de 10 centímetros del sensor y si está todo bien conectado se encenderá el LED.

Acá les dejo el planito que hice:



Les dejo también un video del enano jugando con el sensor:



No hay comentarios: