基于Adafruit CPX的可穿戴决策装置:从硬件集成到手工缝合的跨界实践

Adafruit Circuit Playground Express可穿戴设备微控制器
于 2026-05-28 13:30:42 修改
·本内容遵循CC 4.0 BY-SA版权协议

1. 项目概述:一个帮你做决定的“魔法口袋”

你有没有过这样的时刻?中午吃什么、周末去哪儿玩、该不该买那件衣服……面对生活中无数个微不足道却又让人纠结的小选择,总希望有个东西能帮你“拍板”。今天分享的这个项目,就是我用一块小小的开源硬件Adafruit Circuit Playground Express(简称CPX),结合一点手工缝纫,做出来的一个“决策手机袋”。它不仅仅是一个装手机的布袋,更是一个有趣的交互式可穿戴设备。当你摇晃它时,袋子上的一圈LED灯会像轮盘一样转动,最终随机停在红、黄、绿中的一个颜色上,分别代表“不应该”、“可能”和“应该”,用这种略带仪式感又充满趣味的方式,帮你做出那个小小的决定。

这个项目的核心魅力在于它的跨界融合。它不像传统的电子项目那样只关注电路和代码,也不像纯粹的手工那样只注重外观。它将微控制器的智能感知能力(通过内置的加速度计)与纺织品的柔软和可穿戴性结合了起来。你不需要是电子专家或编程高手,CPX的图形化编程环境让代码逻辑变得直观;你也不需要是裁缝大师,基础的缝纫技巧就足够完成。整个过程,从构思、编程到裁剪、缝合,是一个完整的“从想法到实物”的创造过程,非常适合作为可穿戴设备或互动艺术的入门项目。无论你是创客爱好者、手工达人,还是想找一个有趣的亲子或教学项目,这个“决策手机袋”都能让你在动手实践中,真切地感受到科技与生活碰撞出的火花。

2. 核心硬件解析:为什么是Adafruit Circuit Playground Express?

在开始动手之前,我们得先搞清楚手中的“大脑”——Adafruit Circuit Playground Express(CPX)。市面上微控制器那么多,比如经典的Arduino Uno,或者更小巧的ESP32,为什么这个项目特别适合CPX呢?这得从它的设计哲学和硬件特性说起。

2.1 CPX的“开箱即用”优势

CPX被设计为一款“全功能”的教育和原型开发板。这意味着它把许多在别的板子上需要额外焊接、连接才能使用的传感器和输出设备,都集成在了一块圆形的板子上。对于我们这个项目,最核心的几个集成模块包括:

  1. 10颗可编程NeoPixel RGB LED灯:它们均匀分布在板子周围,形成一个彩色的圆环。这正是我们实现红、黄、绿灯轮盘效果的硬件基础。如果使用普通Arduino,你需要额外购买LED灯环并学习复杂的接线和库函数,而CPX上这些灯已经焊好,并通过专用库轻松控制。
  2. 三轴加速度计:这是实现“摇晃触发”功能的关键传感器。它可以检测板子在X、Y、Z三个方向上的移动和倾斜。我们编程时,只需要判断加速度的数值是否超过某个阈值,就能知道设备是否被摇晃了,无需任何外部接线。
  3. 板载按钮与触摸感应引脚:除了摇晃,你还可以通过按动板载的A/B按钮,或者触摸特定的引脚(它们被设计成可以缝上导电线程作为触摸点)来触发交互,为项目扩展提供了多种可能。
  4. 内置USB接口与电池接口:通过USB线可以直接连接电脑进行编程和供电。同时,它有一个标准的JST PH电池接口,可以轻松连接一个3.7V的锂聚合物电池或我们项目中将使用的3节AAA电池盒,实现完全无线便携。

正是这些高度集成的特性,让我们可以抛开繁琐的电路焊接,专注于创意逻辑的实现和外观制作,极大地降低了入门门槛。

2.2 项目硬件清单与选型考量

原教程的清单非常精简,这里我结合自己的制作经验,补充一份更详细、更可靠的清单,并解释每一项的选择理由:

物品 规格/建议 数量 备注与选型理由
核心控制器 Adafruit Circuit Playground Express 1块 项目核心,务必确认是“Express”版本,它支持图形化MakeCode和CircuitPython。
供电系统 3节AAA电池盒(带开关) 1个 选择带开关的型号方便随时断电。3节AAA电池(4.5V)在CPX的安全电压范围内,且容量和易得性平衡。
电池 AAA碱性电池或可充电电池 3节 建议使用可充电电池,更环保且长期成本低。
主体材料 旧手套、毛毡布、帆布或结实的棉布 1只/块 旧手套创意独特,但不易获得。毛毡布无毛边、易裁剪缝合,是绝佳替代品。厚度要能支撑手机重量。
缝合线 普通缝纫线(与布料颜色搭配) 1卷 用于缝合袋身、口袋和肩带。强度要足够。
固定线 蜡线、 embroidery floss(绣花线)或结实的棉线 若干 关键材料!用于将CPX缝在布袋上。需要足够结实且能穿过CPX的缝纫孔。绣花线颜色多且结实,推荐。
缝纫针 手缝针,针眼要能穿过固定线 1根 确保针足够细,能轻松穿过CPX板上的小孔。
装饰按钮 小型纽扣 2-4颗 可选,用于装饰肩带或袋口。避免金属扣,以防意外短路(虽然概率极低)。
工具 剪刀、尺子、水消笔或划粉 各1 用于精确裁剪和画线。

注意:关于“缝纫”电子元件:这是可穿戴电子项目的常见做法。CPX板边缘有一圈较大的孔,就是专门为缝纫或系带固定设计的。我们不是要缝合电路,而是像缝纽扣一样把板子物理固定在布料上。电源和信号通过板载的电池接口和无线方式(如果有)传输,不需要缝合电线,因此对线和针法没有导电性要求,只需牢固即可。

3. 手工制作详解:从零缝制你的专属手机袋

有了硬件,我们就要为它打造一个“家”。手工部分是这个项目充满个性和成就感的一环。我们目标是制作一个带肩带、有一个前袋用来固定CPX和电池的手机袋。

3.1 袋身制作:选择合适的材料与版型

原教程使用了旧手套,这是一个非常有创意但可复制性不高的选择。我更推荐使用毛毡布作为主要材料。原因有三:第一,毛毡布由纤维压制而成,裁剪后边缘不会散开,无需锁边,对新手极其友好;第二,它有一定厚度和挺括感,能很好地保持形状并保护手机;第三,质地柔软,易于手缝。

制作步骤:

  1. 确定尺寸:测量你的手机。假设手机尺寸为长16cm x 宽8cm x 厚1cm。我们需要预留空间,所以裁剪两块长方形毛毡布作为袋身的前片和后片。建议尺寸为:(手机长 + 3cm) x (手机宽 x 2 + 厚 + 4cm)。以上述手机为例,即 (16+3)=19cm 长, (8*2+1+4)=21cm 宽。这个宽度保证了手机放入后,两侧还有空间缝合。
  2. 裁剪与缝合
    • 将两块毛毡布正面相对(如果一面有纹理,纹理面朝内)叠放。
    • 用夹子或珠针固定三边(左、右、下),顶部开口处不缝。
    • 使用平针缝或回针缝(更牢固)沿固定好的三边缝合,留出大约1cm的缝份。缝到角落时,可以多缝一针加固。
    • 缝合完成后,将布袋从顶部开口处翻出来,此时毛毡布的正面朝外,缝合线藏在内部。用指甲或笔杆轻轻将角落捅平整。

实操心得:缝份与翻面:使用毛毡布时,缝份可以留小一些(0.5-0.8cm),因为它不散边。翻面时如果觉得角落困难,可以先不翻,用剪刀在缝份的角落处斜着剪掉一个小三角(注意不要剪到缝线),这样翻过来后角落会更平整。

3.2 前袋与CPX固定位:功能分区的关键

前袋用于容纳电池盒,并作为CPX的“底座”。我们需要在袋身的前片(即将安装CPX的那一面)外部增加一个口袋。

  1. 裁剪口袋布:裁剪一块长方形毛毡布,宽度略大于电池盒(约多2cm),高度为电池盒高度的1.5倍。例如电池盒8cm x 5cm,口袋布可裁10cm x 7.5cm。
  2. 定位与缝合:将这块口袋布放置在前片外侧偏下的位置(为上方安装CPX留出空间)。用珠针固定其左、右、下三边。然后,同样用平针缝或回针缝缝合这三边,一个上方开口的小口袋就做好了。电池盒可以轻松放入取出。
  3. 标记CPX位置:将CPX板放在前片上方、口袋的正上方。用水消笔轻轻沿着板子边缘画个圆,并点出几个关键的缝纫孔位置(比如均匀选4-6个孔)。这个圆环标记有助于我们后续对齐。

3.3 缝制肩带与整体组装

  1. 制作肩带:裁剪一条长条形的毛毡布或结实的织带。长度根据个人喜好(单肩或斜挎),通常在100cm到120cm之间。宽度2-3cm即可。如果使用毛毡布条,将其对折(正面朝外),然后沿长边缝合,形成一个结实的管状肩带。
  2. 安装肩带:这是承重的关键点。将肩带的两端分别放在袋身顶部开口的内侧(即前后片之间),确保两端对称。用珠针固定。然后,在缝合袋身顶部边缘时(见下一步),将肩带末端一并缝进去。为了更牢固,可以在肩带连接处内侧再缝上一个小布条进行加固,形状类似一个“小耳朵”包住肩带端部和袋身,多缝几道线。
  3. 完成袋口:最后,处理手机袋的顶部开口。可以将前后片和肩带一起,用一道缝线简单缝合固定边缘。也可以将开口处的毛毡布向内折约1cm,缝一道明线,看起来更精致。至此,布袋主体完成。

4. 核心编程逻辑:让灯光“随机”舞动起来

硬件安家落户后,就要赋予它灵魂——程序。我们将使用Microsoft MakeCode for Adafruit(https://makecode.adafruit.com/)这个图形化编程平台。它像拼图一样,即使没有编程基础,也能轻松理解逻辑。

4.1 编程环境搭建与基础逻辑

打开MakeCode网站,新建一个项目。你会看到两个虚拟的“角色”:一个代表CPX板,另一个是代码积木区。我们的程序逻辑可以分解为以下几个部分:

  1. 初始化设置:当板子启动时,我们需要设定一些初始状态。例如,关闭所有LED灯,设定一个变量来记录当前选中的颜色状态。
  2. 摇晃检测:持续检查加速度计的数据。当检测到剧烈的晃动(加速度值突然增大)时,触发“选择开始”事件。
  3. 灯光轮盘效果:被触发后,让环形LED灯依次快速点亮,模拟轮盘转动。
  4. 随机停止与结果展示:转动一段时间后,随机停止在某一盏灯上,并让该灯保持亮起(红色、黄色或绿色),持续几秒钟,代表决策结果。
  5. 复位:结果展示完毕后,复位到初始状态,等待下一次摇晃。

4.2 MakeCode积木程序详解

下面我将用文字描述核心积木的拼接逻辑,你可以据此在MakeCode中操作:

  1. “当开机时”积木块

    • 拖入 设置所有灯环颜色为 关闭。这是初始状态。
    • 创建一个变量,命名为 isSpinning,并将其设置为 false。这个变量是程序状态的“开关”,防止在转动过程中重复触发。
  2. “永久循环”积木块

    • 在这个循环里,放入一个 如果...那么... 积木。
    • 条件判断是:加速度 强度 > 1500 (这个值可以根据你摇晃的力度调整,1500是个中等敏感的值,可以先试用再微调)。
    • 在“那么”里面,再嵌套一个 如果...那么...,条件是 isSpinning = false。这确保了只有当前不在转动时,摇晃才有效。
    • 在内层的“那么”里,做三件事: a. 将 isSpinning 设置为 true。表示进入转动状态。 b. 使用 重复执行 10 次 积木来模拟转动。在循环体内:设置所有灯环颜色为 蓝色(或任何你喜欢的转动时的颜色) -> 暂停 100 毫秒 -> 设置所有灯环颜色为 关闭 -> 暂停 50 毫秒。这个“亮-灭”的快速循环形成了视觉上的转动感。 c. 转动结束后,进行随机选择。
  3. 随机选择逻辑

    • 转动循环结束后,创建一个变量 choice,使用 随机取数 从 0 到 2 为其赋值。这里0、1、2分别对应我们定义的三种结果。
    • 使用 如果...那么...否则如果... 积木链:
      • 如果 choice = 0设置所有灯环颜色为 红色。代表“不应该”。
      • 否则如果 choice = 1设置所有灯环颜色为 黄色。代表“可能”。
      • 否则设置所有灯环颜色为 绿色。代表“应该”。
    • 让结果颜色保持亮起:暂停 3000 毫秒(3秒)。
    • 复位:设置所有灯环颜色为 关闭,并将 isSpinning 变量重新设置为 false。程序回到初始状态,等待下一次摇晃。

注意事项:防抖与灵敏度调整:在实际测试中,你可能会发现稍微一动就触发了。这是因为加速度计非常灵敏。除了调整阈值(1500这个数值),更常见的做法是加入“防抖”逻辑。例如,在触发条件里,可以要求高强度加速度持续超过一个很短的时间(比如50毫秒),而不是瞬间超过。在MakeCode中,可以通过记录时间戳的变量来实现,稍微复杂一些。对于初学者,先调整阈值是一个简单有效的方法。

4.3 代码下载与烧录

程序编写完成后,点击编辑器左下角的下载按钮,会保存一个.uf2格式的文件到你的电脑。然后用USB线将CPX连接到电脑。此时,CPX会以一个名为CPLAYBOOT的U盘形式出现。直接将下载好的.uf2文件拖入这个U盘。U盘会自动弹出,CPX板上的红色小灯会闪烁几下,程序就烧录完成了!断开USB线,装上电池,你的代码就开始在板子上独立运行了。

5. 最终整合与调试:让硬件与软件合二为一

这是最后一步,也是将创意变为现实的关键一步。

5.1 安全固定CPX与布线

  1. 缝合CPX:将烧录好程序的CPX板,按照之前画好的标记位置,放在布袋前片。使用蜡线或绣花线,像缝纽扣一样,穿过板子上的缝纫孔和下面的毛毡布。建议至少固定4个对称的点(如上、下、左、右),确保板子平整牢固,不会晃动。线在背面打结要结实,可以多打几次。
  2. 放置电池盒:将3节AAA电池装入电池盒,打开开关。把电池盒放入我们缝制的前袋中。将电池盒的JST插头,从口袋上方轻轻拉出,连接到CPX板侧面的电池接口。注意理顺电线,避免过度弯折或拉扯。
  3. 收纳与美观:多余的连接线可以塞进前袋里,和电池盒放在一起。确保开关露在口袋外或容易触及的地方,方便开关机。

5.2 功能测试与优化

  1. 基础测试:打开电池盒开关。CPX板上的电源灯(红色)应亮起。此时所有LED灯应处于熄灭状态(我们的程序设定)。用力摇晃手机袋,观察灯环是否开始蓝色闪烁(转动),并在几秒后随机停止在红、黄或绿色上,并保持几秒。
  2. 问题排查
    • 无任何反应:首先检查电池盒开关是否打开,电池电量是否充足,JST插头是否插紧。可以重新插拔一下。如果还不行,用USB线连接电脑,看MakeCode的串口监视器是否有错误信息(这需要稍微进阶的知识)。
    • 灯光不转或直接显示结果:检查摇晃检测的阈值。可能是阈值太高(摇不动)或太低(太敏感)。回到MakeCode中,调整 加速度 强度 > XXX 中的XXX数值,重新下载程序测试。
    • 灯光效果异常:检查程序中的颜色设置积木是否正确。确保“关闭”所有灯和“设置所有灯环颜色”的积木使用正确。
  3. 个性化优化
    • 调整速度:修改转动循环中的 暂停 时间,可以改变灯光轮盘的旋转速度。
    • 增加音效:CPX有板载蜂鸣器!你可以在转动开始时加入 播放音调 中音C 持续 100毫秒,在停止时加入一个提示音,体验更丰富。
    • 改变触发方式:除了摇晃,你可以尝试用 当按钮A被按下时 积木块来触发决策,这样就是一个“按钮式决策器”了。

6. 项目延伸思考与更多可能性

这个“决策手机袋”是一个完美的起点,它展示了可穿戴设备的核心闭环:感知(加速度计)-> 处理(CPX微控制器)-> 反馈(LED灯环)。基于这个框架,你可以发挥想象,创造出更多有趣的应用:

  1. 情绪指示袋:利用CPX上的麦克风(声音传感器)或光线传感器。根据环境噪音大小或光线明暗,让LED灯环显示不同的颜色模式,比如安静时蓝色、嘈杂时红色,变成一个环境情绪可视化配饰。
  2. 社交距离提示器(概念性):结合另一个CPX和无线电功能(CPX Express支持蓝牙,但MakeCode中简化了),可以尝试制作成对的设备,当两个设备靠近时,灯光显示友好绿色,远离时显示蓝色。这需要更复杂的编程和通信协议学习。
  3. 可穿戴游戏控制器:将手机袋变成游戏方向控制器。通过加速度计检测倾斜方向,映射为游戏中的上下左右指令,通过蓝牙与手机或电脑上的游戏连接(需要学习Adafruit Bluefruit LE相关库)。
  4. 材料与工艺升级:使用导电缝纫线代替普通线,将CPX的触摸引脚(如A1、A2等)用导电线程引到布袋的其他位置(比如肩带上缝一个导电布贴)。这样,触摸肩带就能触发灯光变化,实现更隐秘、更自然的交互。

这个项目的价值,远不止于做出一个帮你决定吃面条还是米饭的小工具。它是一次完整的“造物”体验,让你亲自动手,将抽象的代码逻辑和冰冷的电子元件,封装进一个温暖、柔软、可随身携带的织物之中。它提醒我们,技术可以不是坚硬的、疏离的,而是可以融入日常,充满趣味和个性的。当你下次为选择而犹豫时,不妨拿起这个自己亲手做的袋子摇一摇,无论结果如何,这个过程本身,就已经充满了创造的确定性和乐趣。