基于nRF52840的章鱼形状柔性PCB项目
这个晃动的装置是什么?
乍一看,你可能会以为我们造了一个复杂的纸笔筒,但实际上它可能连这么重都不够。这是我们和朋友们第一次尝试设计MCU电路板,当然我们不得不过度设计,让它变得尽可能复杂。但做简单的事,又有什么乐趣呢?
这个装置并非为了某个特定用途而设计,而是用来教我们PCB设计和项目实践的。它最终变成了一款炫酷的桌面玩具,只要轻微晃动就会摇晃,同时还能通过让人困惑的方式吸引周围人的注意。
故事
故事始于我躺在沙发上望着天花板时,萌生了制作一个可弯曲的PCB并使其具有三维立体感的想法。这个形状很简单,因为我当时在一家名为Qalmari的公司工作,他们的吉祥物是一只章鱼,正好适合这个项目(也正合适让公司为这个昂贵的项目买单 :D)。
第一步是制作一张纸剪影,并通知我的朋友是否愿意参与这个项目。我拿了一些便宜的威士忌,准备了威士忌酸酒的材料(第一次做),然后开始设计这个项目。
我们原本想加蓝牙功能,但用nRF芯片做的学校项目出了大问题,我们开始讨厌它和Zephyr。不过,最终还是决定再试一次,选择使用nRF52840作为MCU。
我喜欢做各种奇怪又没用的项目,这个项目让我特别自豪。它教会了我们很多东西,为我们制作了出色的项目作品集/简历,还让我们在办公桌上有了一个实际的设备作为提醒。
原型1
第一个原型是在学习制作威士忌酸时设计的,结果并不理想(谁能想到呢)。由于我们没有设定任何设计规则,且公差过小,导致出现了大量DRC错误,其中就有一个关键问题:3V3直接连接到GND,意外形成了一条走线。
收到原型机时,我们并不知道这一点,也没有工具可以找到它,于是我们只是通入了一些电流,发现其中一条腿的整个轨道都变黑了。但这个原型机证明了机械概念是成立的。
原型2
在第二个版本中,我们把颜色从黄色改为黑色/蓝色,以与公司配色形成对比,整体看起来比第一个原型好得多。这一次,我们追踪并解决了所有DRC错误,使设备成功运行。这也是我们测试最小蓝牙天线的版本,而且它确实有效(别问效率如何了!)
但这个过程并非没有问题。结果发现,将调试引脚固定在柔性PCB上最终导致这些引脚损坏,我们失去了对许多设备进行调试的权限。此外,我们还进行了大量应力测试,通过将设备压扁来检查其承受能力,结果是:它能承受……一段时间。经过一段时间的应力测试后,我们发现MCU的一些引脚从PCB上脱落,若不按压芯片,设备便无法正常工作。
原型3
在拆解完所有第二阶段的原型后,我们决定将最终批次制作成“已准备就绪”的设备。我们固定了调试引脚,并在MCU另一侧加装了加强筋以保护引脚。此外,我们还发现振动电机无法按预期工作,因此未将其装配到最终设备上。
硬件
如果你足够疯狂,想要自己制作一个昂贵且无用的设备,那么硬件文件(包括Gerber图和电路图)可免费在我的git上获取。这个设计是使用EasyEDA完成的,目的是方便我们不必自行构建组件库,但这也使得发布CAD项目变得困难……
* CPU:nRF52840-QIAA 微控制器(位于柔性PCB上)。
* 传感器:ICM-20602 IMU 和 XYC-ALS21C-K1 I2C 环境光传感器,蓝牙 PCB 天线。
* 有趣的小配件:2个WS2812B RGB LED灯(眼睛)、8个蓝色指示LED、蜂鸣器/振动电机支架、2个用户按钮。
电源:TP4054电池充电器,两个独立的LDO(3V3和3.6V)。
结构:两个定制柔性PCB(头部和腿部)连接在主FR4基板上。
组装:尽管PCB由JLCPCB制造和组装,但由于JLC目前尚未提供八爪鱼式组装(?),因此仍需人工进行焊接。我们最初设计时,将磁铁安装在PCB和支架上,但纸质版本中这种设计无法实现,因为支架总是相互缠绕。在第二和第三个原型中,我们决定采用带针孔的焊盘来实现对准和组装,这一方案在大部分情况下效果良好。不过,部分组装好的器件仍然略显歪斜,即使轻微的错位也会在直立时被放大明显。
底座:我们设计了一个3D打印的支架,可固定在底座上,留有空间放置小型电池,虽然功能简单,但使用效果良好,最终组装后外观也很好看。
一个统管万物的框架——ZephyrRTOS
如前所述,我们在一个学校项目中接触到了nRF和Zephyr,当时只需熟悉并用`nrf52840-dk`完成一个小项目。Zephyr的开发进展非常快,导致我们不得不寻找正确的文档,因为所有找到的内容都已被弃用。此外,Zephyr还使用devicetree和kconfig来配置硬件,而这些对我们来说都是新知识,因此在这一方面也遇到了困难。
自从第二个原型以来,zephyr版本几乎翻了一番,这说明了开发的活跃程度,也反映出我们进展得有多慢。
如今,我尽量在所有项目中都使用 Zephyr。它无需为每个微控制器(MCU)学习新的框架,这使得 Zephyr 成为测试和开发的强大工具。此外,Zephyr 对各种硬件都有广泛的支持(甚至可以在 Cortex-A 核心上运行),只需在设备树中配置硬件,并在内核中使用驱动程序即可轻松实现。Zephyr 还支持“开箱即用”的 MCUboot,只需通过少量的 kconfig 配置即可完成启动加载。
现在,Zephyr 并不完美,仍然存在不断变更事物的问题,这给开发者带来了困难。但为了整体利益,让 Zephyr 变得更好并快速改进,这是更好的选择。
结论
这是我最喜欢的项目之一。尽管它是个无用却酷炫的科技小玩意,但我还是抽空找到了它的用途。过去几个月里,我一直在努力开发(在透支精力后)可能唯一能派上用场的应用程序。这是一款类似“番茄钟”的应用,会先加载X分钟,然后通过LED灯亮起,并闪烁Y秒的“眼睛”指示灯,提示你该停下来休息了,因为长时间盯着屏幕。这个应用在我的放松项目仓库中可以找到。
本文编译自hackster.io





