文档章节

树莓派B+实战之一 超声波测距传感器HC-SR04

沉淀岁月
 沉淀岁月
发布于 2017/03/22 15:56
字数 798
阅读 142
收藏 0

超声波测距应用广泛,本次实战通过树莓派B+连接HC-SR04超声波测距传感器,用Python GPIO控制传感器完成距离测定,并将距离显示在屏幕上。

硬件部分:

1,HC-SR04超声波测距传感器

       1.1 HC-SR04超声波测距传感器硬件如下图

      

该传感器有4个引脚:

VCC,超声波模块电源脚,接5V电源即可

Trig,超声波发送脚,高电平时发送出40KHZ出超声波

Echo,超声波接收检测脚,当接收到返回的超声波时,输出高电平

GND,超声波模块GND

 

 

1.2 HC-SR04超声波模块工作原理:

1)采用IO口TRIG触发测距,给至少10us的高电平信号;
2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

 

 

 

1.3 HC-SR04超声波模块使用方法

 

初始化时将trig和echo端口都置低,首先向给 trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S))/2 就可以算出超声波到障碍物的距离。

 

 

2、树莓派B+ 引脚

 

3.  树莓派与超声波模块连线图

 

 

     HC-SR04                     

    Raspberry Pi B+ Physical                 

     说明            

VCC

2

+5V

Trig

38

GPIO.20

Echo

40

GPIO.21

GND

39

GND

 

 

 

 

软件部分:

1、确认python,python GPIO库是否正确安装

 在Raspbian中已经预装了Python2.7.9,直接在命令行输入python即可看到如下信息
pi@raspberrypi:~ $ python
Python 2.7.9 (default, Mar  8 2015, 00:52:26)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

 

使用Python控制GPIO时,常用的是raspberry-gpio-python模块,在2016-05-27-raspbian-jessie版本的系统镜像中,预装了最新的版本v0.6.2,可以在Python中输入下列命令查看:
>>> import RPi.GPIO as GPIO
>>> GPIO.VERSION
'0.6.2'
>>>

 

2、创建一个目录hcsr04

pi@raspberrypi:~ $ cd /home/pi
pi@raspberrypi:~ $ mkdir hcsr04

 

pi@raspberrypi:~ $ cd hcsr04


3、创建python程序

在hcsr04目录下创建一个名为hcsr04.py 的程序文件:

 

import RPi.GPIO as GPIO
import time

Trig_Pin = 20
Echo_Pin = 21

GPIO.setmode(GPIO.BCM)
GPIO.setup(Trig_Pin, GPIO.OUT, initial = GPIO.LOW)
GPIO.setup(Echo_Pin, GPIO.IN)

time.sleep(2)

def checkdist():
    GPIO.output(Trig_Pin, GPIO.HIGH)
    time.sleep(0.00015)
    GPIO.output(Trig_Pin, GPIO.LOW)
    while not GPIO.input(Echo_Pin):
        pass
    t1 = time.time()
    while GPIO.input(Echo_Pin):
        pass
    t2 = time.time()
    return (t2-t1)*340*100/2

try:
    while True:
        print 'Distance:%0.2f cm' % checkdist()
        time.sleep(1)
except KeyboardInterrupt:
    GPIO.cleanup()

 

然后执行该程序
pi@raspberrypi:~ $  python hcsr04.py

 

验证测试

如图在超声波测距仪前放在障碍物,前后移动超声波测距仪,电脑屏幕上会显示测得的距离,与直尺量的距离对比,可发现误差不大。完全可以胜任小车壁障等用途。

 

本文转载自:http://blog.csdn.net/pkokocl/article/details/52563700

共有 人打赏支持
沉淀岁月
粉丝 26
博文 257
码字总数 91615
作品 0
朝阳
高级程序员
私信 提问
基于树莓派如何开发机器人(附PPT+视频) | 硬创公开课

导语:树莓派是为学习计算机编程教育而设计的一种微型电脑,其系统是基于Linux的, 虽然只有信用卡大小,但视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。因此自问世以来,受到了...

金红
2017/03/09
0
0
云中树莓派(4):利用声音传感器控制Led灯

云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感器控制Led...

SammyLiu
08/12
0
0
预告:基于树莓派如何开发机器人 | 硬创公开课

此前我们收到读者反馈,想听一节关于如何用树莓派开发机器人。树莓派为学习计算机编程教育设计的一种微型电脑,其系统基于Linux, 只有信用卡大小但视频、音频等功能通通皆有,可谓是“麻雀虽...

金红
2017/02/16
0
0
云上树莓派(2):将传感器数据上传到 AWS IoT 并利用Kibana进行展示

云上树莓派(1):环境准备 云上树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 1. 传感器安装及配置 1.1 DHT22 安装 DHT22 是一款温度与湿度传感器,它有3个针脚,左边的第一...

SammyLiu
08/09
0
0
用树莓派和DS18B20做个汽车温度记录仪[原创]

用树莓派和DS18B20做个汽车温度记录仪[原创] 很想知道夏日阳光暴晒下,汽车内的最高温度以及温度的变化情况。觉得用树莓派和DS18B20来实现应该很简单,于是就尝试捣鼓了一下,半天时间就搞定...

helesheng
08/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JVisualVM监控远程jar包运行情况

1.准备一个jar文件,需要放到服务器上有运行 tuyou-user-SNAPSHOT-0.0.1.jar 2.上传至服务器,启动jar文件: nohup java -Djava.rmi.server.hostname=192.168.104.135 -Dcom.sun.management...

日落北极
26分钟前
2
0
ReentrantReadWriteLock 源码

ReentrantReadWriteLock有五个内部类,五个内部类之间也是相互关联的。内部类的关系如下图所示。 如上图所示,Sync继承自AQS、NonfairSync继承自Sync类、FairSync继承自Sync类;ReadLock实现...

狼王黄师傅
27分钟前
3
0
详解netty原理分析

Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动...

小刀爱编程
34分钟前
2
0
Vue props用法小结

Vue props用法详解 组件接受的选项之一 props 是 Vue 中非常重要的一个选项。父子组件的关系可以总结为: props down, events up 父组件通过 props 向下传递数据给子组件;子组件通过 events...

peakedness丶
37分钟前
5
0
pycharm 教程(一)安装和首次使用

pycharm 教程(一)安装和首次使用 2017-12-05 09:19 by 菜鸟飞呀飞, 134207 阅读, 1 评论, 收藏, 编辑 PyCharm 是我用过的python编辑器中,比较顺手的一个。而且可以跨平台,在macos和windo...

linjin200
38分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部