Python与硬件学习笔记:超声波

超声波

        超声波是一种频率高于20000赫兹的声波,它的方向性好,穿透能力强,易于获得较集中的声能,在水中传播距离远,可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。在医学、军事、工业、农业上有很多的应用。超声波因其频率下限大于人的听觉上限而得名。下图就是一个超声波模块,超声波模块就是可以发射和接收超声波的模块,今年我们就介绍一种超声波模块HC-SR04。

Python与硬件学习笔记:超声波_第1张图片

管脚介绍:

    VCC —超声波模块电源脚,接5V电源即可
    Trig—超声波发送脚,高电平时发送出40KHZ出超声波
    Echo—超声波接收检测脚,当接收到返回的超声波时,输出高电平
    GND —超声波模块接地脚GND

了解了基本知识后我就需要进行编程实现使用超声波模块来进行距离测量了。超声波测距的原理比较简单,利用超声波模块发射超声波,当遇到障碍物时声音就会被反弹回来被超声波模块接收到,记录发射和接收之间的时间间隔,然后乘以声速(340m/)除以2就是发射地到障碍物之间的距离了。

超声波测距

1、所需材料:

• 超声波模块一个

• 树莓派

• 杜邦线数根

 

2、引脚连接说明:

 

树莓派 超声波模块
5V VCC
GPIO 23 TRIG
GPIO 24 ECHO
GND GND


3、程序编写

ultrasonic.py

#!/usr/bin/python
#-*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM) #使用BCM编码方式
#定义引脚
GPIO_TRIGGER = 23
GPIO_ECHO    = 24
#设置引脚为输入和输出
GPIO.setwarnings(False)
GPIO.setup(GPIO_TRIGGER,GPIO.OUT)  # Trigger
GPIO.setup(GPIO_ECHO,GPIO.IN)      # Echo

def dis():  #测距函数
	GPIO.output(GPIO_TRIGGER, False) #设置trigger为低电平
	time.sleep(0.5)
	GPIO.output(GPIO_TRIGGER, True) #设置trigger为高电平
	time.sleep(0.00001)
	GPIO.output(GPIO_TRIGGER, False)
	start = time.time()  #记录发射超声波开始时间

	while GPIO.input(GPIO_ECHO)==0:
		start = time.time()

	while GPIO.input(GPIO_ECHO)==1:
		stop = time.time()  #记录接收到超声波时间
	
	elapsed = stop-start   #计算一共花费多长时间
 	distance = elapsed * 34300  #计算距离,就是时间乘以声速
	distance = distance / 2  #除以2得到一次的距离而不是来回的距离
	print "Distance : %.1fcm" % distance

try:  #用于捕捉异常
        while True:
                dis()   #调用测距函数
                time.sleep(0.5)
except KeyboardInterrupt:
        GPIO.cleanup()

保存代码,执行程序 sudo python ultrasonic.py 在这里我们是测量了一本20cm长的书,结果如下:

Python与硬件学习笔记:超声波_第2张图片



你可能感兴趣的:(传感器,python,硬件,超声波)