文档章节

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

沉淀岁月
 沉淀岁月
发布于 2017/03/22 15:56
字数 798
阅读 158
收藏 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

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

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

金红
2017/03/09
0
0
用树莓派打造乐高机器人 可程序化控制

好消息,乐高迷们,你们可以利用树莓派电脑和一款新设备BrickPi制造出属于你自己的程序化乐高机器人了。 如果你们拥有一台树莓派电脑,那么BrickPi设备就可以使这种小电脑变成乐高机器人。大...

oschina
2013/05/19
8.6K
16
树莓派 3 或开启物联网革命的大门

如今距离2012年2月第一代树莓派诞生已经过去了四年,现在全新的树莓派3也已经来到了我们的身边。树莓派3采用了64位四核ARM Cortex 1.2GHz处理器,具有内置WiFi与蓝牙。使这款小型设备更为实用...

oschina
2016/03/08
8.1K
43
云中树莓派(4):利用声音传感器控制Led灯

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

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

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

金红
2017/02/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
8
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
3
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部