×

用于演示英特尔Edison和SparkFun的机器人

消耗积分:2 | 格式:zip | 大小:0.01 MB | 2022-10-20

姬盼希

分享资料个

描述

更新:好消息!现在有一个新版本的 EdiBot:EdiBot 2.0

EdiBot 是一款用于演示英特尔 Edison 和 SparkFun 模块的机器人。它依靠 Arduino Block 来控制电机,而 Edison 处理视觉处理任务。机器人找到任何红色物体并朝最大的那个行驶。如果红色物体在视野中​​太大,机器人会后退。

第 1 步:订购和构建电源板

您将需要一块可以将电池直接供电给 Rover 5 板(为电机供电)并将电压降到 4.2 V 为 Edison 和 Arduino 供电的板。我在 OSH Park 上创建了一个委员会来做到这一点:

https://oshpark.com/shared_projects/YDhDBhlM

您可以订购或创建自己的。原理图和布局 (Eagle) 可以在EdiBot 的 GitHub 存储库中找到

注意:VSEN 信号不起作用!这个想法是让 Arduino 感应 TL431 的 REF 引脚上的电压,并在电压达到一定水平时打开低电量 LED。但是,在没有电源的情况下,ADC 引脚会将 REF 处的电压拉到阻止 MOSFET 开启的水平,这意味着您没有获得电源!如果我将来对电源板进行修订,这将得到解决。

您将需要使用以下组件构建威廉希尔官方网站 板:

  • R1:200k
  • R2:130k
  • R_TRIM:1.65k 

您还需要通过一些电线将 Deans 连接器连接到电源板上的 VBATT 和 GND。这将允许机器人由锂聚合物电池供电。

 
 
 

第 2 步:准备 Arduino 模块

将一个 6 针直角接头焊接到 Arduino 模块侧面的 FTDI 端口中。使用3.3V FTDI 分线器,使用 StandardFirmata 使用此处的说明对 Arduino 块进行编程:

第 3 步:构建块堆栈

使用 Edison 硬件包(例如 M2 螺钉、螺母和支架),将 Edison 连接到 Arduino 块,然后连接到基块。堆栈应该是:

  • 爱迪生
  • Arduino块
  • 基块

注意:不要在 Arduino Block 上的 TX 引脚的安装孔上添加支架或螺母,否则您可能会将 RX 过孔短路到地并阻止 UART 通信。

第4步:制作盘子

您需要一些东西来将所有硬件安装到 Rover 5 底盘上。您可以在任何材料上钻孔,但如果您可以使用激光切割机,则可以更轻松地对齐安装孔。

下载以下矢量艺术文件(或 PDF)并在激光切割机上切割形状。

第 5 步:连接硬件

将 Rover 5 板、Edison Block 堆栈和机器人电源板安装到底板上。请注意,Rover 5 Board 使用其包装中的支架,Edison 堆栈使用“Edison Hardware Pack”中的 2 个支架,而电源板使用 #4-40 3/8 英寸塑料支架。

 
poYBAGNQxwSADafrABJjKf8Eq_0971.jpg
 

第 6 步:连接电线

将电源线从电源板上的 Vbatt 和 GND(螺丝端子)连接到 Rover 5 板的 Vbat 和 GND(螺丝端子)。我为每个连接使用了 2 根 22 AWG 绞合线,因为单个电机失速可以消耗几安培的电流。

使用 F/F 跳线,将以下从机器人电源板连接到 Arduino 模块:

  • VOUT → VIN
  • 地线→地线 

因为 VSEN 引脚不起作用,所以不要将任何东西连接到它或 WARN 引脚。为了将来参考,VSEN 应该转到 A0(Arduino 块),WARN 应该转到引脚 8(Arduino 引脚)。

再次使用 F/F 跳线,将以下从 Arduino Block 连接到 Rover 5 板:

  • 3V3 → VCC(任意)
  • GND → GND(任意)
  • 3 → CH1:PWM
  • 2 → CH1:目录
  • 9 → CH2:PWM
  • 4 → CH2:目录
  • 11 → CH3:PWM
  • 6 → CH3:目录
  • 10 → CH4:PWM
  • 5 → CH4:目录
 
poYBAGNQxw6AaZpYABQtjhEBAik942.jpg
 

第 7 步:连接网络摄像头

用 1/4 英寸螺钉将网络摄像头连接到板上。

在 Rover 5 Board 的侧面添加 4 个支架,然后连接网络摄像头板。使用 Rover 5 Board 随附的长支架。

通过 USB micro-A 适配器将网络摄像头连接到 Edison 的 OTG 端口。

 
poYBAGNQxxaACTw5AA0ixRF86ng823.jpg
 

第 8 步:将硬件安装到 Rover

将 LiPo 电池(或 Rover 5 随附的电池组)放入 Rover 5 机箱中。

 
poYBAGNQxyCANRgAAA5rNv5gjmo438.jpg
 

使用一些 #4-40 螺钉将硬件安装到机箱上。您可能需要卸下电源板才能找到背面的螺丝孔。

将电机电缆穿过板两侧的半圆形开口。将电机连接到 Rover 5 板上的以下部件:

  • 右前电机→CH1
  • 左前电机 → CH2
  • 右后电机 → CH3
  • 左后电机 → CH4

将电池电缆穿过板背面的半圆形开口。

 
poYBAGNQxyeAfUSWAA_FbH03bJI192.jpg
 

第 9 步:安装 Ubilinux

按照以下链接中的说明在您的 Edison 上安装 Ubilinux。安装后不要忘记等待至少 2 分钟!

第 10 步:安装库

通过串行控制台或 SSH 使用凭据登录 Edison:

用户名:爱迪生

密码:爱迪生

获得超级用户权限:

密码:爱迪生

按照 Ubilinux 教程中的说明启用 WiFi:

更新apt-get:

apt-get 更新

安装必备库:

apt-get install libopencv-* apt-get install python-opencv apt-get install python-pygame apt-get install python-scipy apt-get install python-serial apt-get install python-setuptools apt-get install python-pip

安装 Python 模块:

点安装 svgwrite

安装SimpleCV

git clone https://github.com/sightmachine/simplecv cd simplecv python  setup.py  install cd ..

清理包以释放一些空间:

apt-get 自动清理 apt-get clean apt-get 自动删除

第 11 步:运行 EdiBot 代码

下载存储库:

git clone https://github.com/ShawnHymel/EdiBot cd EdiBot

运行 Python 程序:

python Ball_Chase.py

您需要将电池插入电源板并将开关打开。这为电机提供动力。

第 12 步:玩你的机器人

将任何红色物体举到机器人的网络摄像头上。机器人将尝试追逐物体!

 
pYYBAGNQxy2AaOoDAAwkKRjqNMs339.jpg
 

奖励:让代码在启动时运行

如果您希望 Ball_Chase.py 程序在启动时运行,我们需要在运行脚本之前将 uvcvideo 模块列入黑名单并加载它(否则,网络摄像头无法正常运行):

纳米 /etc/modprobe.d/fbdev-blacklist.conf

在文件底部添加以下行:

黑名单uvcvideo

修改 rc.local 以加载 uvcvideo 模块并在启动时运行 Ball Chase 程序。打开 rc.local 文件:

纳米 /etc/rc.local

在“exit 0”行之前添加以下行:

/sbin/modprobe uvcvideo python  /home/edison/EdiBot/Ball_Chase.py  &

'&' 允许脚本在后台运行。重新启动爱迪生,让它去追逐红色的东西!

注意:您将需要执行硬重启(移除电源并重新打开)。否则,将不会加载网络摄像头 USB 驱动程序。此外,Linux 启动可能需要一段时间。为 EdiBot 供电后,等待大约 30 秒,让网络摄像头指示灯亮起。


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

评论(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:'用于演示英特尔Edison和SparkFun的机器人',//标题 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);