×

发光魔法LED立方体开源分享

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

李梅

分享资料个

描述

我完全从零开始设计了这个项目的每一个部分,创造了一个很酷的发光魔法 LED 立方体,主要用于灯光动画,基本上可以用于电子实验室的装饰。

围绕令人敬畏的RP2040微控制器设计,并充满电子热情

所有使用过的项目都通过这篇文章完整记录,并且您拥有重建此项目所需的所有必要文件,因此只需按照步骤操作即可。

如果您不喜欢阅读,那么视频可能是一个不错的选择:)

您将在这里学到什么:

  • RP2040 MCU的基本威廉希尔官方网站 设置
  • 一些电子组装技巧
  • 使用 WS28xx LED 的优势
  • 当然,你会从这个项目中获得更多的创意灵感

从所需用品开始

 
poYBAGNYq8uAJGAUAANEI8DaZxk016.jpg
 
1 / 2
 

所需工具:

  • 焊盘(您可以使用 Uyue 948S+ 型号)
  • 烙铁
  • 低温型材焊膏
  • 锡膏沉积刮刀

所需软件:

  • Altium 设计师作为 ECAD 用于 PCB 绘图
  • Solidworks 作为 CAD 用于房屋设计
  • Cura 作为 3D 打印的切片机
  • Arduino IDE
注意:您可以从文章链接下载必要的 CAD 文件

威廉希尔官方网站 设计

poYBAGNYq86AWTbDAANw2D7669E673.png
 

第一步也是最重要的一步是选择合适的组件来建立工作威廉希尔官方网站 设计。因为我正在处理 RaspberryPi 基金会的 RP2040 MCU,所以我转到他们的网站,在那里我找到了一个有趣的链接文档,指向推荐的威廉希尔官方网站 设置,您可以通过单击此链接查看文档链接。

然后我按照推荐的设置在 Altium Designer 上创建了一个威廉希尔官方网站 设计(我附上了原理图的屏幕截图),下面提供了威廉希尔官方网站 原理图的支持 PDF 文件。

我将原理图分为四个主要块:

  • RP2040 设置:

在这个模块中,您可以可视化微控制器周围所需的组件,我强烈建议您不要忽略 MCU 电源线的去耦电容,并使其更靠近 PCB 设计中的电源引脚(推荐 100nF每个电源引脚电容) 。

  • 内存芯片:

也许这个微控制器看起来与其他微控制器有点不同,因为它需要一个外部存储芯片来加载程序代码,这就是我使用 QSPI 存储芯片(推荐W25Q128JVS设备)的原因。

  • 电压调节器:

该 MCU 需要 MCU 自身内部生成的 1、1V 和必须通过稳压器从外部提供的 3、3V,这就是我原理图中使用稳压器的方法。

  • USB C:

我收到了几个关于“用于串行编程的 USB C 连接器的最佳设置是什么”的请求,在这里我使用了 Type C 连接器,因此如果您愿意在您的任何设计设计中使用此连接器,那么您可以按照设置我原理图中的 USB C 块。

poYBAGNYq9GAVx6NAANFIYJXB44398.png
 

然后我将 25 个WS2812类型的 RGB LED 串联起来,并配有一些 100nF 去耦电容。

 
 
 
pYYBAGNYq9SAbBu-AAExqhqO3yo496.png
 
1 / 3
 

关于 PCB 设计,您可以决定您选择的形状,在我的情况下,它是立方体形状,这就是为什么所有 Cube 部件都必须具有矩形形状(40mm x 40mm),您可以选择更大的尺寸,但 40x40mm 是合适的尺寸以均匀分布 RGB LED。

注意:您可以从此链接下载 PCB 设计 GERBER 文件

零件组装

 

 
 
 
poYBAGNYq9eAcloaAARCUG3MrYo363.jpg
 
1 / 6
 

 

pYYBAGNYq92AK3FEAAchJBRctr0762.jpg
 

在生产和交付 PCB 设计后,我所需要的就是将电子元件焊接到一个单件的顶部和底部,然后我只在五件的底部焊接 RGB LED,总共有六件创建立方体形状。我使用了与 PCB 一起订购的模板,这将有助于在 PCB 点上均匀分布焊膏。

可能你们中的一些人不熟悉 PCB 组装,这不是问题,因为您可以订购由您选择的任何 PCB 制造商完全组装的设计,只要您有我已经添加到此项目中的 GERBER 文件 BOM 和 P&P 文件. (GERBER 可通过此链接下载)

我使用热板组装立方体部件,由于我的热板温度低,我使用了低温焊膏。

注意:完成组装后不要忘记清洁组装板上的助焊剂

 

代码准备

使用这款 RP2040 MCU 的最大优势是您可以通过 Arduino IDE 对其进行编程(除了其便宜的价格),所以我搬到了 Arduino IDE 并带来了 Neopixel 库,它允许我探索一些预设的 API 来控制 WS2812 LED 通过一个输出引脚,是的,这是使用这些 RGB LED 类型的积极点,您可以将它们串联在一起并通过单个输出控制它们(意味着仅使用一个引脚控制 150 个 LED)。

我创建了一些轻动画并通过一些功能对其进行排序,然后我通过板管理器将 Raspberry Pi Pico 板添加到我的 IDE,因为该 Raspberry 板具有与我正在使用的相同的 MCU。

您可以通过该项目的文件下载我在 Cube 上运行的代码。

注意:在第一次运行时,当您通过 USB 连接板时,板不会出现在 Arduino 的端口列表中,但只需单击上传,它将接受代码,然后它将出现在端口列表中

 

CAD设计

 
 
 
pYYBAGNYq9-ANoGnAAB9P3_HQWc280.png
 
1 / 4
 

组装好立方体后,我们必须将它们连接在一起以完成立方体形状,我设计了一个组装辅助工具并 3D 打印了它以帮助我实现立方体碎片的组装(查看附件图像,粉红色的立方体)

然后,我使用 Solidworks 为 Cube 设计了一个好的支架,我将在组装后设置我的 Cube。

设计零件的所有 STL 文件均可下载。

 

组装和测试

 
 
 
poYBAGNYq-KAS0BUAAMKI6Qr4yU222.jpg
 
1 / 6
 

由于我们制作的 PCB 设计有一个用于 VDD、VSS、Din 和 Dout 的侧引脚,因此我们可以使用这些侧引脚将立方体块连接在一起,如下所示:

第一件| 第二件

VDD ----> VDD

VSS ----> VSS

嘟嘟---->

然后通过将一块的 One Dout 侧连接到下一块的 Din 侧来继续其他部分

注意:第一块是有微控制器的。
 
 
 
pYYBAGNYq-iAJo5VAAdJnlEeQZE458.jpg
 
1 / 5

然后,我在 3D 打印支架上添加了一个电源开关和电源插孔连接器,并将电源线连接到我的 Cube 的 VDD 和 VSS。

确保您使用的电源适配器能够提供 5V 和高达 2A 的电流,因为这些 LED 在全亮度运行时可能会下降至 1.3A。

一旦我打开电源开关,立方体就会发光,我的 RGB LED 会通过一些美妙的彩色动画跳舞。

 
pYYBAGNYq-2AZdQ-AAbXfn4PMao085.jpg
 
1 / 4

而已!也许我可以改进这个项目,所以我指望你的创造性思维,随时通过评论部分给我写你的建议。

感谢您的阅读!


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

评论(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:'发光魔法LED立方体开源分享',//标题 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);