所购买的HC-SR04的超声波模块介绍如下:
1、典型工作用电压:5V。
2、超小静态工作电流:小于 2mA。
3、感应角度:不大于 15 度 。
4、探测距离:2cm-400cm
5、高精度:可达 0.3cm。
6、盲区(2cm)超近。
实测raspberry pi电压4.7V。所以直接测试一下,但是需要获取系统时间和系统处理耗时,测试结果精度不高,可以区三次平均数。
代码如下:
#!/bin/env python
# -*- coding:utf-8 -*-
# -------------------------------
# Revision:
# Date: 2012-12-11
# Author: simonzhang
# Email: simon-zzm@163.com
# Web: www.simonzhang.net
# -------------------------------
import time
import RPi.GPIO as GPIO
import datetime as dt
# 初始化
# 需要注意输出与输入的接口
# 17为发射,18为接收
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(18, GPIO.IN)
GPIO.output(17, False)
while 1:
time.sleep(1)
# IO 触发,给10us的高电平
# 模块自动发送8个40khz的方波
GPIO.output(17, GPIO.HIGH)
time.sleep(0.00001)
GPIO.output(17, GPIO.LOW)
# 获取发射完毕时间
t1 = time.time()
# 未接收为False,循环检查开始接受点
# 转为True为开始接受
while GPIO.input(18) == False:
pass
# 循环检查开始接收,转为False。则为接受完毕
while GPIO.input(18):
pass
# 获取接受完毕时间
t2 = time.time()
# 计算发送与接收时间差
t3 = t2-t1
print t3
# 空气中1个标准大气压在温度15度时速度为340m/s
# 25度为346m/s
# 所以按照一秒钟34000厘米计算
# 根据硬件文档,该模块探测距离在2-400cm之间
# 测试范围的时间间隔应该为0.000117到0.023529
# 为了方便取值自行变化一点
if 0.0235 > t3 > 0.00015:
distance = t3*34000/2
print 'Distance: %f cm' % distance
else:
print 'Null'



