El siguiente programa a través de la rasberry pi 3 se pudo simular y calcular la velocidad de un objeto con ayuda del sensor HC-SR04, el cual manda pulsaciones de sonido y al rebotar con el objeto regresan a este mismo y dependiendo el tiempo en que tarden en regresar sera una distancia que este sensor nos proporcionara.
En pocas palabras el funcionamiento es muy sencillo al ejecutar el programa, el cual se presentara a continuación, obtendremos una distancia, entonces si medimos esa distancia cada cierto tiempo, y este lo vamos acumulando al final sabremos su velocidad, siempre y cuando existan rangos predefinidos.
Pines usados.
Vcc va al pin 1
Gnd al pin 6
Echo al 13 (gpio 27)
Triagger al 15 (gpio 22)
Programa
Con ayuda del modulo Turtle y la libreria de BOTBOOK la cual es importante tener en la carpeta donde se estará guardando el programa.
#hc-sr04.py - print distance to object in cm
#(c) BotBook.com - Karvinen, Karvinen, Valtokari
import time
import botbook_gpio as gpio
from turtle import *
def readDistanceCm():
triggerPin = 22 #<1>
echoPin = 27
v=(331.5+0.6*20) #m/s
gpio.mode(triggerPin, "out")
gpio.mode(echoPin, "in")
gpio.interruptMode(echoPin, "both")
gpio.write(triggerPin, gpio.LOW)
time.sleep(0.1)
gpio.write(triggerPin, gpio.HIGH)
time.sleep(1/1000.0/1000.0)
gpio.write(triggerPin, gpio.LOW)
t=gpio.pulseInHigh(echoPin) # s
d=t*v
d=d/2
return d*100 # cm
#tempo=0 #variable para contar el tiempo
try:
while True:
tempo=0
while True:
d=readDistanceCm() #<2>
print("Distance is %.2f cm" % d)
#time.sleep(2)
if d<=30 :
tempo=tempo+0.1
if d<=20:
break
print "Tiempo transcurrido",tempo
velocidad=(30-20)/tempo
velocidadD=round(velocidad,3)
print "velocidad redon",velocidadD
print "Velocidad es %.2f" % velocidadD
time.sleep(1)
t=Turtle()
screen=t.getscreen()
setup(700,700,0,0)
screensize(600,600)
colormode(255)
t.speed(0)
t.hideturtle()
t.fillcolor(47,53,51)
t.penup()
t.goto(220,120)
t.pendown()
t.begin_fill()
t.goto(220,-70)
t.goto(-220,-70)
t.goto(-220,120)
t.goto(220,120)
t.end_fill()
t.fillcolor(52,158,33)
t.penup()
t.goto(200,100)
t.begin_fill()
t.pendown()
t.goto(200,-50)
t.goto(-200,-50)
t.goto(-200,100)
t.goto(200,100)
t.end_fill()
t.penup()
t.goto(0,0)
#valor=25.53
t.write(str(velocidadD)+" cm/s",False,"center",("arial",40,"bold italic"))
#screen.exitonclick()
except KeyboardInterrupt:
print "saliste"
Fotos del circuito armado y una simulacion
Circuito Armado
Rango mayor de medida para detectar la velocidad (la caja esta en el rango mayor)
Rango menor de medida para detectar la velocidad (la caja esta en el rango menor)
Corrida en terminal da números grandes porque no detecta nada el sensor
Dos corridas simuladas con turtle
Por ultimo es importante mencionar que este programa se corre desde python2 ya que sus comandos y librerías son útiles en esta versión.
Comentarios
Publicar un comentario