今天分享的项目详细介绍了一个酷炫发光的 Magic LED Cube的完整制作步骤,并开源了所有必要的设计文件。如果感兴趣的话,可以动手做一个,还可以自定义灯光动画展示方式,可作为一个独特的装饰摆件用。
(补充一个视频)
在这个项目中,因为丰富项目中涉及的知识领域,你可以体验作为结构工程师的建模的乐趣、硬件工程师绘制电路原理图与PCB的乐趣、软件工程师写代码的乐趣。使用了树莓派卡片电脑用于单片机的开发过程,没有使用集成的IDE工具。因此,你可以深入理解计算机的编译过程。除此之外,还要了解一些基本的硬件知识,比如单片机IO翻转频率,这样可以帮助你选择合适的单片机 。然后,这里我们使用了RP2040一个特殊功能的引脚,可编程的IO,类似FPGA的功能,这里你可以了解一下FPGA相关的知识,以及FPGA所具备的一些优势。
当然,这个项目还在持续增加一些新的功能。比如手机控制的功能等等,可以学习一下安卓的开发过程。项目存在问题或者缺陷可以直接给我留言,感谢。
所需知识:
- 数字电路基础
- PCB 设计基础
- 三维建模基础
- 计算机编程基础
所需软件:
- 立创EDA用于原理图与PCB
- Solidworks 用于结构件设计
- 树莓派4B上的pico所需编译环境
所需硬件:
- 树莓派4B
- 一台Windows电脑
第一步:电路设计
最重要的选择是合适的组件来创建电路设计。树莓派基金会自研的首款芯片RP2040,采用Arm Cortex M0+处理器架构,运行频率为133 MHz,拥有264K SRAM,2MB板载存储空间。
该项目的驱动的目标器件是WS2812。通过数据手册可以了解到该器件需要精准的时序控制才能保证其可靠,其时序误差应该小于150ns。
项目选择RP2040的可编程IO功能。其时间的可确定性,与FPGA的非常相似,为我们提供了驱动的目标器件提供了准确的时序(该部分需要详细了解RP2040芯片)。
按照推荐的电路设置,创建电路图:
原理图分为四个板块:
1)RP2040 :
这个板块可以看到PR2040所需的外围组件,MCU 电源线的去耦电容要尽量的靠近 PCB 设计中的电源引脚(推荐 100nF每个电源引脚电容) 。
2)内存芯片:
RP2040与其他微控制器有点不同,需要一个外部存储芯片来加载程序代码,这个项目中使用的是 QSPI 存储芯片(推荐W25Q128JVS)。
3)电源:
该 MCU 需要 MCU 自身内部生成的 1.1V,以及还必须通过稳压器从外部提供的3.3V。
4)USB Type C接口。
5)25 个WS2812
下面就是要将 25 个WS2812类型的 RGB LED 串联起来,并配有一些 100nF 去耦电容。现在你可能会有疑问,为什么有的配备了去耦电容,而有的没有。这是由于我们的电路板设计,一些正面穿孔下来的器件导致无法每个LED上都配置去耦电容。
第二步:PCB设计
如图摆放,布线即可。
正面:
反面:
第三步:硬件加工
嘉立创免费打样。
1)PCB 打样
2)备料或者SMT
ID | Name | Designator | Footprint | Quantity | Manufacturer Part | Manufacturer | Supplier | Supplier Part | Price |
1 | TYPE-C-31-M-12 | USBC1 | USB-C_SMD-TYPE-C-31-M-12 | 1 | TYPE-C-31-M-12 | Rectangular Connectors - Contacts | LCSC | C165948 | 1.7262 |
2 | TS-1145A-B-A | SW2,SW1 | SW-SMD_4P-L4.2-W3.2-P2.15-LS5.2 | 2 | TS-1145A-B-A | XKB Enterprise | LCSC | C318904 | 0.3359 |
3 | W25Q128JVSIQTR | U3 | SOIC-8_L5.3-W5.3-P1.27-LS8.0-BL | 1 | W25Q128JVSIQTR | WINBOND | LCSC | C97521 | 8.41 |
4 | 100nF | C2,C7,C1,C4,C5,C6,C8,C9,C10,C14,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34 | C0402 | 28 | FH | ||||
5 | RP2040 | U1 | LQFN-56_L7.0-W7.0-P0.4-EP | 1 | RP2040 | Raspberry Pi(树莓派) | LCSC | C2040 | 9.43 |
6 | 1uF | C3,C11 | C0603 | 2 | AVX | ||||
7 | 27pF | C12,C13 | C0603 | 2 | FH | ||||
8 | 10uF | C15 | C0805 | 1 | |||||
9 | 10uF | C16 | C0805 | 1 | FH | ||||
10 | SS13 | D1 | SMA_L4.3-W2.6-LS5.2-RD | 1 | SS13 | DIYI Elec Tech | LCSC | C215972 | 0.1098 |
11 | F1 | F1 | F1206 | 1 | Littelfuse | LCSC | C99540 | 0.8871 | |
12 | HDR-M-2.54_1x2 | J1 | HDR-M-2.54_1X2 | 1 | LCSC | C124375 | 0.156 | ||
13 | 27.4 | R1,R2 | R0603 | 2 | Tyohm | ||||
14 | 1k | R3,R5,R6,R7 | R0603 | 4 | YAGEO | ||||
15 | 10k | R4 | R0603 | 1 | ResistorToday | ||||
16 | 5.1k | R8,R9 | R0402 | 2 | Tyohm | ||||
17 | 12MHz | X1 | OSC-SMD_4P-L3.2-W2.5-BL | 1 | TAITIEN Elec | LCSC | C295522 | 5.53 | |
18 | NCP1117ST33T3G | U2 | SOT-223-3_L6.5-W3.4-P2.30-LS7.0-BR | 1 | NCP1117ST33T3G | ON | LCSC | C26537 | 2.67 |
19 | WS2812B | LED1,LED2,LED3,LED4,LED5,LED6,LED7,LED8,LED9,LED11,LED12,LED13,LED14,LED15,LED16,LED17,LED18,LED19,LED20,LED21,LED22,LED23,LED24,LED25,LED10 | LED-SMD_4P-L5.0-W5.0-TL | 25 | WS2812B | Worldsemi | LCSC | C114585 | 0.6561 |
第四步:硬件焊接
如果你选择了嘉力创SMT可以忽略该步骤。
第四步:结构件设计
使用建模软件绘制一个底座。
第五步:结构件加工
嘉立创3D打印,成本6元。
第六步:代码准备
1)在树莓派4B上构建开发环境
https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf
2)找到WS2812驱动源码
在树莓派派的驱动例程中提供了相关源码,打开其目录。
cd pico/pico-examples/build/pio
3)编译
$ cmake ..
$ make
4)烧录
树莓派 Pico 中文站 提供了烧录方法的动画。
第七步:测试
通电测试。