文档章节

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

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

共有 人打赏支持
沉淀岁月
粉丝 25
博文 257
码字总数 91615
作品 0
朝阳
高级程序员
其他主流开源硬件简介BeagleBone Black快速入门

其他主流开源硬件简介BeagleBone Black快速入门 1.3 其他主流开源硬件简介 开源硬件种类繁多,但主要有两款开源硬件常与BeagleBone比较。它们就是Arduino和Raspberry Pi(即树莓派)。之所以...

大学霸
2015/02/13
0
0
[翻译完成] 用红外遥控器遥控树莓派

概述 本篇教程将会讲解如何用一部红外遥控器来遥控操作树莓派上安装的影音中心. 在开始之前, 你需要按此教程把树莓派搭建为影音中心. 需要的零件 在搭建好了影音中心之后, 你需要去买些零件....

八宝粥
2013/07/25
0
16
用树莓派通过Java实现远程控制电灯

用树莓派通过Java实现远程控制电灯 本文章由 亓根火柴 原创,转载请注明出处:http://blog.csdn.net/qigenhuochai/article/details/17661845 传说,女娲娘娘炼就七根火柴,来帮助人类度过第一个...

亓根火柴
2014/01/02
0
0
如何使用树莓派测定颗粒物(PM 2.5)

使用两个简单的硬件设备和几行代码构建一个空气质量探测器。 我们在东南亚的学校定期测定空气中的颗粒物。这里的测定值非常高,尤其是在二到五月之间,干燥炎热、土地干旱等各种因素都对空气...

作者: Stephan Tetzel
05/08
0
0
树莓派使用DHT11温湿度传感器

一、相关介绍 DHT11介绍: DHT11是一款比较便宜的温湿度传感器模块。读取数据只需要占用一个IO口。能够同时测量温度和相对湿度。 DHT11的数据手册可以看这里:http://wenku.baidu.com/view/1...

李鱼跃龙门
2014/06/07
0
18
树莓派pi3 串口问题的解决办法

转载: https://blog.csdn.net/aguangg6655la/article/details/54985423 其他参考1:https://blog.csdn.net/xukai871105/article/details/22713925 其他参考2:https://www.briandorey.com/......

zhenguo26
04/18
0
0
无显示器无路由器无键盘无鼠标,仅靠网线直连笔记本用最简单配置玩转树莓派

出差在外,想折腾树莓派耍下,但是不记得树莓派的ip地址,当然可以用扫描工具扫下,比如advanced ip scanner。但是嫌麻烦还是想折腾下仅靠网线直连笔记本用最简单配置玩转树莓派。 用网线直连...

quanpower
2014/04/14
0
0
树莓派3b连接串口类型GPS使用使用串口并关闭蓝牙板载方法

树莓派3上用户目前无法正常是使用GPIO中的UART串口(GPIO14&GPIO15),也就是说用户无论是想用串口来调试树莓派,还是想用GPIO中的串口来连接GPS,蓝牙,XBEE等等串口外设目前都是有问题的。 原因...

huazwz
04/11
0
0
利用树莓派和 Arduino开发机器人

导读 Thecorpora 的发布的 “Q.bo One” 机器人基于 RPi 3 和 Arduino,并提供立体相机、麦克风、扬声器,以及视觉和语言识别。 2010 年,作为一个开源概念验证和用于探索 AI 在多传感器、交...

问题终结者
2017/10/18
0
0
树莓派+一根网线直连笔记本电脑

用网线直连电脑,不经过路由器。这个方法最大的特点用最少的工具玩树莓派。 一、材料:树莓派一部、网线一根,笔记本电脑一台。 1、树莓派:带供电系统和烧好Raspbian系统的SD卡; 2、网线:...

maweitao
2014/07/31
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
14分钟前
0
0
Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
1
0
使用cookie技术 记住账号

1. 效果 2. 实现过程 2.1 前端 将用户的选中传递给后台 这个参数的获取是 参考:https://my.oschina.net/springMVCAndspring/blog/1860498 // var rememberLogin = $("#rememberLoginId").i...

Lucky_Me
今天
1
0
《趣谈网络协议》02之网络分层的真实含义

一、提出问题 1.提出问题 当你听到什么二层设备、三层设备、四层 LB 和七层 LB 中层的时候,是否有点一头雾水,不知道这些所谓的层,对应的各种协议具体要做什么“工作”? 2.这四个问题你弄...

aibinxiao
今天
2
0
Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
今天
0
0
adb 操作指令详解

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。...

孟飞阳
今天
0
0
nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
今天
1
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
今天
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
今天
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部