×

高尔夫球分配器开源分享

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

张旭

分享资料个

描述

介绍

您是否去过高尔夫球场或顶级高尔夫球场,在那里您所要做的就是在传感器前挥动您的高尔夫球杆,然后高尔夫球就会飞到您想要击打的位置?您是否厌倦了俯身拿起高尔夫球并将其放在您想要击打的位置?您是否懒惰,只想要最方便的东西?好吧,现在您可以在家中拥有像顶级高尔夫那样的高尔夫球分配器!

动机

作为一名高尔夫爱好者,我曾寻求为这个中期项目制作一个与高尔夫相关的项目。几周前,当我和一群朋友去顶级高尔夫球场时,我萌生了这个想法。在那一刻,我想,如果我自己拥有其中一个用于我的推杆练习,那该有多好?使用此设备,您可以通过在传感器前挥动高尔夫球杆来接收高尔夫球。该设备会发出一段叮当声,祝您推杆好运,然后将高尔夫球送出。

概述

这种独立的分配器对于高尔夫球手来说使用起来非常简单。第一步是将它放在你面前的地面上,或者只是在范围内。然后你所要做的就是在传感器前挥动你的球杆,你和你周围的每个人都会听到美妙的叮当声,通知每个人你即将击球,这样他们就可以看到你漂亮的高尔夫球了摇摆。

电子产品

除了 Pocketbeagle 本身,该设备还有其他三个主要组件:标准伺服系统PIR 运动传感器立体声封闭式扬声器。

如何连接标准舵机:

1) 将黄线连接到 pocket beagle 上的 PWM 引脚之一(我选择 P2_1)

2) 将黑线连接到面包板上的地(然后连接到 Pocketbeagle 上的地)

3) 将红线 (VCC) 连接到面包板上的 5V 电源轨(然后连接到 Pocketbeagle 上的 5V Vout)

如何连接 PIR 运动传感器:

1) 将黑线(接地)连接到面包板上的接地,就像伺服一样(然后连接到 Pocketbeagle 上的接地)

2) 将红线 (VCC) 连接到面包板上的 5V 电源轨,就像伺服一样(然后连接到 Pocketbeagle 上的 5V Vout)

3) 将黄色线连接到 Pocketbeagle 上的 GPIO 引脚(我选择 P2_4,在我的例子中,我必须将黄色线连接到面包板,并连接公/公跳线从面包板连接到 P2_4)

pYYBAGOSomSAHuP5AAKwYtM9Y_s013.jpg
面包板的照片,上面只有 PIR 传感器和伺服
 

如何连接立体声封闭式扬声器:

1) 用剪刀剪掉其中一个扬声器的一根红线和一根黑线,因为您将只使用一个。

poYBAGOSomqAUCt2AAI_tE_qvHQ748.jpg
切断两个扬声器之一!
 

2) 将剩余扬声器的红线 (PWM) 连接到 Pocketbeagle 上的 GPIO 引脚(我选择 P2_3)

3) 将黑线 (GND) 连接到面包板上的地(然后连接到 Pocketbeagle 上的 GND)

poYBAGOSom6AR2ZVAAIEAmj5sVs362.jpg
带有所有连接的面包板的粗略视图
 

将 Pocketbeagle 连接到 Internet

在我的电脑与 Pocketbeagle 共享互联网时遇到问题后,我的教授给了我一个完美的解决方案。使用无线 WiFi USB 适配器,我能够为 Pocketbeagle 提供 wifi,而无需从我的计算机共享它。(您需要访问互联网才能为 ADC、GPIO 和 PWM 导入 BBIO 库)我是这样做的:

1) 首先,您必须将 Pocketbeagle 本身的两个引脚焊接在一起两次。(见下图)

pYYBAGOSonKAJ_7-AAD_OSxyfT4541.jpg
 

要使用课堂上提供给我们的分线板,它也包含一个 USB 端口,我必须将最左边的两个引脚焊接在一起,并将最右边的两个引脚焊接在一起,因为分线板只有 4 个引脚。

2) 焊接好后,你可以将分线板连接到 Pocketbeagle,并将 WiFi USB 适配器连接到分线板。

3)完成后,按照本网站上的步骤操作:https ://www.teachmemicro.com/pocketbeagle-wifi/

该网站将向您展示您需要输入 cloud9 的代码,以便您可以无线连接到 WiFi。

更多有用链接:

PIR 运动传感器帮助:

https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/how-pirs-work

从扬声器播放音调:

https://www.arduino.cc/en/Tutorial/ToneMelody?from=Tutorial.Tone

外壳创建

pYYBAGOSoreAde5YABb7etqwOZo55.jpeg
这一切都始于一个纸板箱!
 

设备外壳从一个简单的纸板箱开始。把它改造成我漂亮的高尔夫球分配器,它由很多胶带和一把 exacto 刀组成。我开始切掉顶部的所有襟翼,然后稍微抬起底部的两个襟翼,这样一端就是一个供高尔夫球放置的斜坡,而在另一端,我可以把面包板和所有的接线放在一起在里面。

poYBAGOSoxCAKbDeABpFU_pNEYU05.jpeg
移除顶部襟翼后
 
poYBAGOSo3mADjvdABm5kxqpCvQ67.jpeg
完成的产品!
 

在为伺服系统添加一块硬纸板后,它可以更有效地将高尔夫球举过球洞,该项目取得了成功。我将扬声器贴在背面,并将 PIR 运动传感器放在设备最左边的孔中。(背面的胶带纯粹是为了装饰,所以它不仅仅是一个纸箱)。虽然这只是一个原型,但它为可能由木头制成的更精致/成品铺平了道路。

操作说明

1) 将 Pocketbeagle 插入电源(计算机)以启动它

2) Pocketbeagle 自动启动正确的程序 (Dispense2.py)

3) 确保盒子里有高尔夫球

3) 在设备上的 PIR 传感器前挥动您的高尔夫球杆(播放声音,然后分发高尔夫球)

4) 打出漂亮的一击!

 

未来的改进

1)更好看的接线和设备外壳(例如使用木头)

2)添加更多点胶时的声音

3) 无需重新装载盒子即可连续分配更多高尔夫球的能力。


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

评论(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);