×

DIY空中足球开源

消耗积分:0 | 格式:zip | 大小:1.33 MB | 2022-10-21

殷谷光

分享资料个

描述

介绍

作为我在荷兰萨克森大学创意设计与技术交流项目的一部分,我创造了一个空中足球。该产品是 8 周项目的结果,我选择将我的展示作为一个完整的 DIY 教程,最终出现在这篇文章中。

该项目的目的是扩展我前任所做的创造性和技术技能。研究、构思、开发概念、用户测试、学习 SolidWorks、学习如何使用 Nextion 显示器,并进一步扩展我在 3D打印、激光切割、在 Arduino IDE 中编程等方面的技能。

产品还有改进的地方。这方面的一个例子是在 Arduino 代码中使用延迟,导致灯光秀和动画不能同时显示。

如果您知道如何解决此类问题或考虑过其他可以改进的事情,我们非常欢迎您发表评论建议、解决方案或将帖子用作您自己的项目/产品帖子的基础。

分步指南

第 1 步:下载

首先下载页面底部提供的 zip 文件。这些分为四个主题:

  • 技术图纸- 为想要自己绘制或修改零件的有经验用户提供的文件。
  • 3D 打印- 准备 3D 打印的 STL 文件。
  • 激光切割- 准备进行激光切割的 SVG 文件。
  • Nextion 设置- 上传到 Nextion 屏幕以显示乐谱和动画的文件。

此外,您需要下载 Nextion Editor。这是一个开源软件,用于设置和上传代码到 Nextion 显示器。您可以通过以下链接下载它:

2 步:3D打印

根据您的 3D 打印机类型(例如 Ultimaker Cura 或 PrusaSlicer),通过将 STL 文件导入匹配的切片机,准备用于 3D 打印的 STL 文件,然后导出 g 代码,以便将它们放置在 SD 卡上。

所有文件都已制作,因此不需要任何支持,但请确保以适合 3D 打印的方式定位 STL 文件。对于某些文件,您可能必须添加边缘以确保零件在打印过程中不会翻倒(例如边界 2 和 3 以及角落)。

3 步:激光切割

在矢量图形编辑器(例如 Adob​​e Illustrator 或 Inkscape)中打开 SVG 文件并将它们发送到您的激光切割机。确保将文件修改为激光切割机的首选设置(例如线条颜色和线条粗细)。

除了游戏板顶部之外,您可以用木材(例如胶合板或 MDF)切割所有部件。游戏板顶部需要是表面更光滑的材料,以提供良好的冰球“浮动”(例如 PMMA(丙烯酸)或 PC(聚碳酸酯)。

此外,您需要检查技术图纸,以便将零件切割成合适的厚度。您也可以多次切割一些零件,然后将它们粘合在一起以达到合适的厚度(例如游戏板列表)。

 
 
 
pYYBAGNOS2OAY1ZoAANy6pHUyyE77.jpeg
 
1 / 6激光切割面。
 

4 步:打印贴纸

如果您可以使用 Roland 贴纸机,您可以将 eps 文件直接发送到机器并立即打印。如果没有,您需要在矢量图形编辑器中打开文件并将它们调整为贴纸机的设置。

如果您根本无法使用贴纸机,您也可以通过 ex 自己个性化框架。画框或用激光切割机雕刻一些东西。

 
 
 
poYBAGNOS2eAIyTYAAOXlLo-CLU10.jpeg
 
1 / 4在 Roland Truvis SG2-300 上打印。
 

5步:绘画

下一步是以足球主题绘制游戏板。如果你用胶合板或 MDF 切割游戏板,你可以使用丙烯酸涂料。

首先将游戏板涂成绿色,然后画出白线。使用油漆工胶带画出直线,您可能需要在绿场和白线上涂几次才能完全覆盖木头,但请确保在其间让它充分干燥。油漆后,如果油漆覆盖了一些孔,您可能需要将钉子穿过一些孔。

如果您有经验并且可以使用贴纸机,您还可以尝试为游戏板制作一个贴纸而不是对其进行涂漆 - 但请确保对齐游戏板上的所有孔以保持足够的气流。

 
 
 
poYBAGNOS2qAL8HhAAGqVwy9rzc611.png
 
1 / 5用绿色丙烯酸涂料绘制游戏板。
 

6步:组装游戏

要组装游戏板,您需要以下部件:

  • 游戏板顶部
  • 彩绘游戏板
  • 清单 1、2 和 3
  • 游戏板底部

如果您将列表切割成多块以达到合适的厚度,请先用木胶将它们粘合在一起。当它们干燥时,将它们粘在游戏板底部。如果你的游戏板有点弯曲,你必须在中间贴上小块木头,这样游戏表面才能保持水平。

此后,您必须将游戏板粘在列表顶部,因此边缘周围的空气空间被密封。为确保这一点,晚上在上面放一些重物。

 
 
 
poYBAGNOS26AaXuLAAHRzc_cJtA409.png
 
1 / 4将列表粘合在一起。
 

7 步:组装框架

要组装框架,您需要以下零件:

  • 2x 侧 1
  • 2x 侧面 2
  • 4倍角

首先用强力胶将角粘到第 2 面,然后将第 1 面粘上。在开始粘合之前,请检查您的角和侧面是否正确,以及游戏板是否可以放入框架内。

 
 
 
pYYBAGNOS3GAYCFSAAGeyrIz21A147.png
 
1 / 3胶合框
 

8步:焊接

现在是焊接以下组件的时候了,因此连接变得永久:

  • 电池座 (8xAA) 至风扇
  • (如果您没有预组装的 Arduino 盾牌,请使用 Arduino 盾牌)
  • 线路跟踪器
  • 瞬时开关
  • LED灯条和外接电源

请注意,在将排针和外部电源焊接到 LED 灯条之前,您必须将边界 1 连接到侧面 1 并拉出电线,因此最终看起来如下图所示。

 
 
 
pYYBAGNOS3OAIVnqAAGkm9eMzd4354.png
 
1 / 2LED 带状线穿过侧面
 

之后焊接其余提到的组件。帮自己一个忙,使用不同且一致的电线颜色(例如,红色表示 5V,黑色表示 GND)——这使得以后组装威廉希尔官方网站 时变得容易得多。此外使用一些热缩管来保护焊接。

 
 
 
poYBAGNOS3eAShN3AAKcwEH5eh4158.png
 
1 / 4将电池座焊接到风扇上。
 

9 步:连接LED 灯边界

首先将边界 1、2 和 3 安装到框架上,但不要使用胶水。使用前。双面胶带,因此如果出现问题,您始终可以访问 LED 灯条。

然后,将框架翻转过来,小心地将 LED 灯条放在框架周围的间隙中,并通过撕下胶带将其粘贴到边界上。完成后,您可以再次将框架翻转并附加边界 4 以完成边界。

 
 
 
poYBAGNOS3uAceLBAAIPAUxdoDM586.png
 
1 / 3附加边界 1、2 和 3。
 

10 步:组装框架游戏板

首先将游戏板顶部放在游戏板顶部,然后用 ex 修复它。钉子,所以当你转动它时它不会滑落。现在,转动游戏板并将其放在框架中,使其位于边界的下侧。

以后找一些废木头,清单或类似的东西,将它们粘在框架和游戏板底部,这样当产品再次转动时,它可以充当“架子支撑”。在翻转产品之前,请确保至少让它干燥 24 小时。

 
 
 
pYYBAGNOS32AOkctAAJoyjuJG0M264.png
 
1 / 3用钉子固定游戏板顶部。
 

11 步:贴上贴纸

组装好桌子后,您现在可以将贴纸贴在框架的两侧。在这样做之前,请确保附近有可以用来抚平贴纸的东西,这样贴合性就很好。(例如信用卡)。

 
 
 
poYBAGNOS4GAXNmfAALwsXSNyNQ991.png
 
1 / 4在第 2 面粘贴贴纸。
 

12 步:连接电子元件

是时候将以下组件放入其安装座中了:

  • 显示器支架中的 Nextion 屏幕
  • 显示器支架中的瞬时开关
  • 目标滑道中的线跟踪器

安装 Nextion 显示器时小心不要制动卡扣,推入时不要损坏线路跟踪器。

 
 
 
poYBAGNOS4SAQj7rAAMlfUHHFnk568.png
 
1 / 3在目标滑道中安装线路跟踪器。
 

13 步:上传代码

首先将 Nextion 设置上传到显示器。这可以通过两种方式完成,由您选择。第一个速度很快,但需要 micro-SD,而另一个速度较慢,但​​只需要您的 Arduino:

1. 将 Nextion 设置导出为 tft 文件,将其放在 EMPTY micro-SD 上,将其插入 Nextion 显示器,通过 ex 打开显示器电源。使用您的 Arduino,上传将在不久后开始。

2. 将空代码上传到您的Arduino,将显示器连接到Arduino上的TX和RX端口,打开电源,然后通过Nextion Editor中的上传选项上传设置。

 
 
 
pYYBAGNOS4eAGEOqAAJjttc-WFw505.png
 
1 / 5第一种方法:导出 tft 文件。
 

Nextion 准备好后,您可以将 Arduino IDE 代码上传到您的 Arduino。如果您使用上述第二种方法,请确保断开 Nextion 显示器与端口 TX 和 RX 的连接,因为这些端口用于将代码上传到 Arduino。

14 步:连接缺失的组件组装威廉希尔官方网站

首先将风扇及其电池座安装到游戏板按钮上。现在,转动产品并将球门滑道和球门盖连接到框架上。与边界一样,不要永久执行此操作,因此您始终可以访问线路跟踪器。

 
 
 
poYBAGNOS4uALxqDAALRz8fNR6M953.png
 
1 / 3用螺丝固定风扇。
 

您现在可以将防护罩放在 Arduino 上并连接组件的电线。请记住检查 Arduino 代码或原理图,以便连接到正确的端口。

 
 
 
pYYBAGNOS46AK4WyAAI4cIOhbV0373.png
 
1 / 2将组件连接到屏蔽层。
 

15 步:玩得开心!

你做到了!感到自豪,玩得开心。

感谢您关注本教程。

 
 
 
poYBAGNOS5iALtNlAASfUu3NEck00.jpeg
 
1 / 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:'DIY空中足球开源',//标题 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);