×

连接超声波传感器的开源项目

消耗积分:0 | 格式:zip | 大小:0.18 MB | 2022-12-02

韩刚龙

分享资料个

描述

介绍

在这个项目中,我们将用超声波传感器替换 PIR 传感器。PIR 传感器用于检测运动,而超声波传感器用于测量与传感器视野内物体的距离。超声波传感器在避障和其他需要距离作为变量的系统中很有用。

16x2 字符液晶屏

我们将在 LCD 上显示数据。请参阅我们的项目“Interface a 16x2 Character LCD”,了解如何将 LCD 连接到 Arduino Uno。您应该将 LCD 的引脚 4、6 和 11-14 分别连接到 Uno 引脚 2、3 和 4-7。您可以使用无焊面包板或 Modulus Canister 连接 LCD。下面显示了一个连接到 Modulus 的图像。

 
poYBAGNtnUaAIwfWAAEkK9lAn4s083.jpg
连接到模数的 16x2 字符 LCD
 

视差超声波传感器

Parallax 的超声波传感器由 3 个引脚组成:GND、5V 和 SIG。SIG 引脚用作输入和输出。当 Uno 发送一个 HIGH 脉冲以触发传感器进行测量时它是一个输入,当传感器发送一个 HIGH 脉冲时它是一个输出,其中脉冲的长度取决于传输声波所花费的时间返回。它可以测量到2厘米到3米范围内的物体的距离。规格表如下所示。

 
pYYBAGOI0nOAAgw-AACqGHDgi5I009.png
 

该传感器的工作原理是发射一波 40kHz 的超声波(人类听觉无法检测到),并测量波返回所需的时间(如果有可检测到的物体)。要启动突发,主机 (Uno) 必须发送一个 2 微秒的 HIGH 触发脉冲。然后,传感器通过空气发送一连串 8 个脉冲(啁啾),将 SIG 引脚设置为高电平,并等待波返回(回声)。当检测到回波时,传感器将 SIG 引脚设置为低电平。SIG 引脚上的这个 HIGH 脉冲的宽度对应于到目标距离的两倍,因为它测量的是波往返于物体的时间。

传感器的时序图如下所示。SIG 引脚波形的颜色差异表示哪个设备正在控制该引脚。例如,Uno 控制引脚发送触发脉冲(蓝色),然后传感器控制引脚发送 HIGH 脉冲(黑色)。

 
pYYBAGOI0naAPSEGAAEawaGFq0A188.png
超声波传感器时序图
 

由于从传感器接收到的脉冲是及时的,我们必须执行一些计算来将时间转换为距离。声速以每秒 1130 英尺或每秒 340 米的速度传播。首先,我们需要通过乘以 100 将 340m/s 转换为 cm/sec,即 34, 000cm/sec。然后,通过除以 0.034cm/μsec 的 1E6 将 cm/sec 转换为 cm/μsec。使用维度分析的结果如下所示。

 
poYBAGOI0niASCREAAA6ArwWz14828.png
从 m/sec 转换为 cm/usec
 

接下来,我们需要使用距离公式(d = r × t)。我们知道速率 r,它是 0.034cm/μsec,我们知道时间 t,它是通过使用pulseIn()函数获得的。

例如,假设我们从传感器获得一个 100 微秒的脉冲。使用距离公式,我们得到 d = 0.034cm/μsec × 100μsec = 3.4cm。但是,请记住,我们必须除以 2 ,因为返回的脉冲是声波往返物体所需的时间。结果,最终的答案是 3.4cm/2 = 1.7cm。

将超声波传感器连接到模数

如果您完成了上一个项目“PIR 传感器集成”,请移除 PIR 传感器并插入超声波传感器。您应该将 4 针 R/A 母头焊接到 Modulus,并且还应该有一个 4 针单排公头焊接到 R/A 母头附近。使用它是为了我们可以将 30 AWG 电线绕到引脚上。您必须在每个触点之间创建一个焊桥,以将母头上的相邻引脚连接到公头。接头、焊桥连接和安装的传感器的图像分别如下所示。

 
pYYBAGOI0pKAR9k0AAXX1QYI8-k050.png
与模数的公母接头连接
 

 

 
pYYBAGNtnVyAWtGoAAGaEmKKxoI953.jpg
公母头之间的焊桥
 

 

 
poYBAGOI0pmAa2jzAAJAmZ650_k141.jpg
安装在模数上的超声波传感器
 

焊接接头后,将 Modulus Canister 插入 FuelCan 上的 4×26 针连接器,然后插入超声波传感器,如上图所示。从最右边的公头针开始,将该针绕线到 GND,将右侧的第二个针绕到 4×26 针分接头上的 +5Vdc。接下来,使用 12 英寸 F/M 跳线将右侧的第三个引脚连接到 Uno 上的引脚 8。

无焊面包板

如果您使用的是无焊面包板,请使用下面的示意图进行必要的连接。

 
poYBAGOI0pyAX_N3AAGH_kb9yVQ568.png
面包板威廉希尔官方网站 原理图
 

燃料罐接线

如果您还没有将 Uno 安装到 FuelCan 的原型制作区域,请继续执行此操作。如果您使用的是面包板而不是 Modulus,请将面包板放在底部的储物箱中以限制跳线的长度。您需要使用提供的香蕉插孔来测试引线夹电缆,为面包板上的电源和接地轨提供 +5V 和 GND。您将需要两个公头针将测试引线夹安装在面包板一侧。将 USB 电缆的 A 型端插入 USB1 插座,将 B 型端插入 Uno 的插座。使用 AC-DC 电源适配器为 FuelCan 供电。

软件

一旦接线完成并且 FuelCan 通电,我们现在可以将草图加载到 Uno 上。草图如下。首先,引脚 8 设置为输出,因此我们可以向传感器发送触发脉冲并启动超声波脉冲串。引脚 8 设置为高电平 2 微秒,然后将引脚设置为低电平以产生脉冲。接下来,将引脚设置为输入以读取来自传感器的返回脉冲。为了测量返回脉冲的持续时间,我们使用函数pulseIn() ,它有两个参数——第一个参数是要读取脉冲的引脚号,第二个参数是要读取的脉冲类型(HIGH或低)。

一旦获得脉冲宽度(以微秒为单位返回时间),我们必须将时间转换为距离测量值。时间首先转换为厘米,然后以厘米为单位的计算测量值转换为英寸。两个距离测量值显示在 LCD 上,然后将引脚 8 设置为 OUTPUT 以触发下一次距离测量。

延伸阅读

超声波传感器的另一个替代品是 HC-SR04 模块。它不是 3 针,而是 4 针:VCC、TRIG、ECHO 和 GND。还记得我们如何必须将视差传感器的引脚模式从输出切换到输入吗?您不必对 HC-SR04 执行此操作,因为有单独的引脚 TRIG 和 ECHO。

您将在 TRIG 引脚上发送一个触发脉冲(这个脉冲至少为 10 微秒),然后在 ECHO 引脚上接收高电平定时脉冲。HC-SR04 模块的软件如下。TRIG 和 ECHO 引脚分别连接到 Uno 引脚 8 和 9。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'连接超声波传感器的开源项目',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);