×

BeagleBone Blue距离传感器

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

陈丽

分享资料个

描述

该项目的最终结果如下:

poYBAGOX5E-AJaAAABEhQMKF9zY623.jpg
带有 HC-SR04 超声波传感器的 BeagleBone Blue
 

请注意,面包板仅用于将电阻器连接到 HC-SR04 传感器的回波通道。只要使用 1.0 至 1.2 K-OHM 电阻器保护 BeagleBone,您就可以从项目中完全移除面包板。

该项目的封面图片显示了添加到EduMIP平台的超声波 HC-SR04 传感器。如果您的目标只是让距离传感器与 BeagleBone Blue 配合使用,您可能希望完全跳过最后的 EduMIP 部分。如果您想将距离传感器添加到现有的 BluPants 爪/抓爪机器人,请按照本教程“ BluPants 爪/抓爪机器人”部分的所有说明进行操作。

连接 HC-SR04 模块

使用 6 针 JST 跳线并将其连接到 BeagleBone Blue 中的“GP0”插座。

 
 
 
pYYBAGOX5GyAE-CWAATrBlw76x0831.jpg
 
1 / 3
 

使用 4 针 JST 跳线并将其连接到 BeagleBone 中的“Power out”插座。

 
 
 
poYBAGOX5JaAGnZVAATqGkSmhIw237.jpg
 
1 / 3
 

请在下面找到 BeagleBone Blue 引脚图。尝试识别板上的“GP0”和“Power out”连接器时可能会有所帮助:

pYYBAGOX5KOADEwvAAIfJcuBWyI335.jpg
 

有关 BeagleBone Blue 引脚排列的更多详细信息,请参阅此链接:

https://groups.google.com/forum/#!category-topic/beagleboard/ZXSTPIcV4OU

正确连接 JST 电缆后,使用一些跳线将 HC-SR04 连接到 JST 母连接器。确保为您的回声跳线使用 1K-OHM 电阻(此项目的蓝线)。如有必要,请使用面包板:

 
 
 
poYBAGOX5PKAe_2GAAxbwjAFUcs166.jpg
 
1 / 3
 

完成接线后,您的项目应类似于下图:

pYYBAGOX5QaAaClLAANrw6tUqfc114.png
 

用 Python 测量距离

请在 Github 上找到示例 Python3 模块hcsr04.py以测试您的项目:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import Adafruit_BBIO.GPIO as GPIO
import time

# HC-SR04 connection
# red wire
vcc = "5V"

# white wire
trigger = "GPIO1_25"

# blue wire using resistor
echo = "P9_23" #echo = "GPIO1_17"

# black wire
gnd = "GND"


GPIO.cleanup()
time.sleep(2)


def distance_measurement(TRIG,ECHO):
    GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)
    pulseStart = time.time()
    pulseEnd = time.time()
    counter = 0
    while GPIO.input(ECHO) == 0:
        pulseStart = time.time()
        counter += 1
    while GPIO.input(ECHO) == 1:
        pulseEnd = time.time()

    pulseDuration = pulseEnd - pulseStart
    distance = pulseDuration * 17150
    distance = round(distance, 2)
    return distance


# Configuration
print("trigger: [{}]".format(trigger))
GPIO.setup(trigger, GPIO.OUT) #Trigger
print("echo: [{}]".format(echo))
GPIO.setup(echo, GPIO.IN)  #Echo
GPIO.output(trigger, False)
print("Setup completed!")

# Security
GPIO.output(trigger, False)
time.sleep(0.5)

distance = distance_measurement(trigger, echo)
while True:
    print("Distance: [{}] cm.".format(distance))
    time.sleep(2)
    if distance <= 5:
        print("Too close! Exiting...")
        break
    else:
        distance = distance_measurement(trigger, echo)

GPIO.cleanup()
print("Done")

演示

hcsr04.py模块将每 2 秒打印一次以厘米为单位的距离。如果物体离传感器太近(5厘米或更小),它将中断执行并退出。

 

BluPants 爪/抓爪机器人

组装机器人

我建议使用这两个教程来组装您的基础抓手机器人,这样您就可以将距离传感器安装在它的顶部:

准备好基爪机器人后,您可以向其添加距离传感器。你可以通过许多不同的方式来做到这一点。例如,您可以使用胶带将其连接到爪式伺服系统(就像我们为Raspberry Pi 机器人所做的那样),或者使用这样的支架

 
 
 
poYBAGOX5VSANeazAA2xnaStyf8281.png
 
1 / 6安装 HC-SR04 传感器
 

所示的 HC-SR04 传感器固定在机器人的前部。未使用添加伺服器以平移传感器的部分。如果您希望能够平移距离传感器,可以随意添加它。

将 HC-SR04 连接到机器人后的最终结果应该与此类似:

pYYBAGOX5ZmAYjaaAAwCCK6HIbE573.png
安装在机器人底盘上的 HC-SR04 传感器
 

另一个建议是使用迷你面包板来节省机箱上的空间,以便将来可能要添加的附加组件。

pYYBAGOYtxKACr7WAAur_QaUKtU664.png
用于连接 Echo 跳线电阻的迷你面包板

将距离传感器添加到 MVP 或爪式机器人后,您就可以使用BluPants Studio编写一些代码了

 

EduMIP

组装机器人

我强烈推荐使用这个很棒的教程来组装你的 EduMIP:

EduMIP:使用 HC-SR04 传感器避开障碍物

如果您想让距离传感器与您的 EduMIP 一起工作,请在Github上找到此示例代码,以让您的机器人随机驾驶避开障碍物。它基于 BluPants 项目,可以安装到您现有的 BeagleBone Blue 映像中。有关更多详细信息,请参阅Github repo 上的说明

或者,您可以简单地安装 BluPants映像,这样您就不必担心所有的软件依赖性。要安装 BluPants 映像,请从此链接下载blupants_beagleboneblue.img.xz 映像,然后根据 BeagleBone 官方入门指南中的文档将其刷入您的机器人启动映像后,您需要在 Beaglebone 中编辑两个文件:

/etc/robotcontrol/start.sh

取消注释行:

/usr/bin/rc_balance_dstr -i dstr &

/root/blupants.json

将 robot_id 设置为 1:

"robot_id": 1,

编辑文件后,重新启动 Beaglebone,或重新启动 BluPants 服务:

sudo service blupants 重启

一旦服务再次运行,您应该能够平衡您的机器人并使用基于 Blockly 的编程平台BluPants Studio来控制它。


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

评论(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.lene-v.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:'BeagleBone Blue距离传感器',//标题 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.lene-v.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);