基于声音传感器的可穿戴互动口罩制作:从MakeCode编程到硬件集成
2026/5/16 5:47:07 网站建设 项目流程

1. 项目概述与核心价值

你有没有想过,一个普通的口罩,除了提供防护,还能成为你表达情绪的“第二张脸”?今天要分享的这个项目,就源于这样一个有趣的念头:让口罩在你说话时,自动亮起一个闪烁的“微笑”。这不仅仅是一个手工与电子的结合,更是一个绝佳的入门项目,能让你亲手触摸到嵌入式系统、传感器交互和可穿戴设备设计的核心脉络。项目的核心硬件是Adafruit的Circuit Playground Express(简称CPX)开发板,它内置了麦克风(声音传感器)、10颗可编程RGB LED、运动传感器等多种外设,堪称“口袋里的微型实验室”。而编程部分,我们使用微软的MakeCode,一种基于图形化积木块的编程环境,即使你一行代码都没写过,也能轻松上手,实现“说话即亮灯”的互动效果。

这个项目的魅力在于它的多维度融合。从动手层面,你需要完成从裁剪布料、手工缝制到电子元件安装的全过程;从思维层面,你需要理解传感器如何“听见”声音、微控制器如何“思考”并“指挥”LED做出响应。它非常适合作为STEM教育、创客工作坊或个人兴趣项目,无论是想带孩子体验科技手工的家长,还是希望寻找一个有趣切入点学习物联网和嵌入式开发的爱好者,都能从中获得扎实的收获。接下来,我将拆解整个制作流程,不仅告诉你每一步怎么做,更会深入解释背后的“为什么”,并分享我在实际制作中踩过的坑和总结出的技巧。

2. 核心硬件与材料深度解析

2.1 Circuit Playground Express开发板详解

Circuit Playground Express是本次项目的“大脑”。选择它,而非更常见的Arduino Uno或Micro:bit,主要基于几个关键考量。首先,高度集成化。CPX板载了10颗NeoPixel RGB LED、运动传感器(加速度计)、温度传感器、光线传感器、声音传感器(麦克风)以及两个可编程按钮。这意味着我们无需焊接任何额外的LED或麦克风模块,极大降低了硬件门槛和出错概率。其次,极佳的可编程性。它支持MakeCode(图形化)、CircuitPython(基于Python)和Arduino IDE(C/C++)三种开发方式,为从图形化入门到代码进阶提供了平滑的路径。最后,坚固的设计与金盘焊盘。其环形布局的LED和坚固的构造非常适合可穿戴项目,周围的多个金盘焊盘方便连接外部设备,比如我们项目中用到的电池扩展线。

注意:市面上有“Circuit Playground Classic”和“Express”两个版本。务必确认你拿到的是“Express”版本,因为只有它原生支持MakeCode图形化编程和更强大的处理器,这是项目顺利进行的基础。

2.2 电源方案的选择与安全考量

项目要求使用3节AAA电池盒配合JST-PH接口的延长线供电。这个方案看似简单,但背后的安全与稳定性考量至关重要。为什么不使用更紧凑的锂聚合物电池(LiPo)直接插在CPX上?核心原因是安全距离。可穿戴设备,尤其是靠近口鼻的面部设备,必须将发热元件和电池与人体隔离。AAA电池盒能量密度相对较低,发热风险小,且可以通过延长线将其放置在口袋或腰间,确保电池远离面部。JST-PH接口具有防反插设计,比普通的杜邦线连接更可靠,适合在活动中使用。

关于电池,我强烈建议使用全新的碱性电池。可充电镍氢电池虽然环保,但其标称电压(1.2V)略低于碱性电池(1.5V),三节串联后电压分别为3.6V和4.5V。CPX虽然能在3V-6V宽电压下工作,但电压处于下限时,LED的亮度和色彩饱和度可能会打折扣。实测中,使用新碱性电池能获得最稳定的光效。

2.3 面料与辅料的准备要点

原教程建议使用8x16英寸的密织棉布(如绗缝布)。这里有几个细节需要展开:

  1. 颜色选择深色布料是首选,尤其是黑色或深蓝色。这是因为CPX的LED光线非常亮,如果使用浅色或白色面料,光线会过度扩散,导致“微笑”的嘴型轮廓模糊不清,更像一整片光晕。深色面料能更好地衬托和限定光线的形状。
  2. 布料厚度与密度:选择中等厚度、编织紧密的棉布。太薄(如纱布)会导致LED灯珠的轮廓过于清晰,失去柔和感,且结构支撑性差;太厚或太疏松(如帆布或毛衣料)则可能完全遮挡光线,或让光线形成难看的星点。棉质绗缝布或牛津布是平衡透光性与遮光性的理想选择。
  3. 束带材料:T恤纱线(将旧T恤剪成条并拉伸卷曲而成)是个好主意,因为它有弹性、不勒耳朵。但如果你没有,可以用圆形弹力绳宽松紧带代替。长度方面,28英寸(约71厘米)是针对脑后系带设计的。如果你想做成耳挂式,每条绳长大约需要12-15英寸(30-38厘米),并且一定要有足够弹性。
  4. 鼻梁条:4英寸的扭扭棒(管道疏通条)或专用的口罩鼻梁铝条都能用。关键处理步骤:用尖嘴钳将两端尖锐处向内弯折成一个小环,或者用一小块胶带包裹,绝对避免金属丝头刺穿布料划伤皮肤。这是穿戴舒适性的关键。

3. 口罩本体的缝制工艺与改良

3.1 版型理解与尺寸调整

这个口罩的版型本质上是一个对折的长方形,通过上下折边和侧边缝合,形成一个带有夹层(滤芯袋)和束带通道的口袋。成品宽度约7.5英寸(19厘米),这是一个通用成人尺寸。如何为不同脸型调整?核心是调整初始布料的宽度。对于脸型较小者(或儿童),可以将布料宽度从16英寸减少到14甚至13英寸。长度(8英寸)影响口罩的覆盖高度,一般无需调整。在缝合侧边前,最好用珠针固定后粗略戴一下,确认覆盖范围从鼻梁到下巴且贴合脸颊。

一个重要的改良点是:在底部缝线中预留一个半英寸(约1.3厘米)的缺口。原教程对此一笔带过,但这是电源线进入的“生命通道”。我的经验是,在缝合底部时,从距离一侧约2-3厘米处开始缝,缝到距离另一侧同样距离时停止,中间空出的部分不要缝合。这个缺口最终会位于下巴下方,比较隐蔽。

3.2 分步缝制技巧与避坑指南

缝制顶部鼻梁通道:将顶部向下折3/4英寸并压平,然后沿折边边缘缝一条线,形成一个通道。这里容易犯的错误是缝线太靠近布边,导致通道太窄,鼻梁条塞不进去。确保你的缝线距离布边有足够的距离(约6-8毫米),形成一条宽度足以轻松插入鼻梁条的管道。

缝合侧边与翻转:将布反面朝外对折,沿边缘缝合两侧。这里的关键是缝份要一致且牢固。使用缝纫机时,建议使用直线缝或之字形缝防止布边 fraying(散边)。手工缝制则推荐回针缝,比平针缝牢固得多。缝合后,从底部预留的缺口处将口罩整体翻到正面,这是一个需要耐心的小步骤,可以用铅笔的橡皮头辅助顶出角落。

制作束带通道:这是最具技巧性的一步。你需要将T恤纱绳预先放入侧边,然后沿着绳子外侧缝一条线,形成包裹绳子的通道。核心技巧

  1. 先用珠针将绳子大致固定在布料上,确保绳子平直且位于你想要的最终位置。
  2. 缝纫时,针脚要紧贴绳子但绝不能缝到绳子本身。如果缝线把绳子固定死了,它就无法抽动来调节松紧了。手工缝制时,可以稍微用手指将绳子拨开。
  3. 两条通道缝完后,再缝合底部除预留缺口外的部分。此时,两条束带应该被完整地封装在口罩两侧,只有绳头露在外面。

鼻梁条安装与束带收尾:将处理好的鼻梁条从顶部通道的开口塞入,置于中央。束带末端打结即可。如果想使用珠子作为束带锁扣,如教程提到的串珠,务必选择孔洞足够大的塑料珠或木珠。穿绳时,可以将两根绳头并拢,用一段细铁丝或解开的曲别针做引线,会轻松很多。

4. MakeCode图形化编程逻辑深度剖析

4.1 编程环境搭建与项目初始化

访问Adafruit的MakeCode网站,选择“New Project”并为你的项目命名。界面分为三块:左侧的模拟器实时显示CPX板状态,中间的积木块分类区,右侧的编程工作区。将CPX通过USB线连接电脑,它会显示为一个名为“CPLAYBOOT”的U盘。编程完成后,只需将编译好的.uf2文件拖入该U盘,程序就自动上传了,无需任何驱动或复杂设置,这是CPX+MakeCode组合的巨大优势。

4.2 “微笑”与“张嘴”灯光模式构建

我们的目标是创造两个灯光状态:全部LED点亮模拟“张嘴”,仅底部部分LED点亮模拟“微笑”。关键在于理解CPX上10颗LED的编号顺序。它们按顺时针编号为0到9。当你将板子横向放置(USB口朝左)时,LED 0在左上角,LED 4和5在底部中央,LED 9在右上角。

在MakeCode中,我们使用Light类别下的show ring积木来控制LED。点击积木中间的彩色圆盘,可以调出LED环形图,点击图中的每个LED可以单独设置其颜色或关闭它。

构建“张嘴”动画

  1. Loops中拖出forever块(程序启动后永久循环)。
  2. forever内,先放入一个show ring,点击环形图,将所有10个LED设置为白色(或你喜欢的颜色)。
  3. 紧接着放入第二个show ring,点击环形图将所有LED关闭(设为黑色)。
  4. 此时模拟器中,灯光会快速闪烁。为了形成清晰的“张嘴-闭嘴”效果,我们需要控制节奏。在两个show ring块之间以及之后,插入pause (ms) 100积木(在Loops里),设置一个合适的延时,比如200毫秒。这样就会形成“亮起-暂停-熄灭-暂停”的节奏。

构建“微笑”动画: “微笑”只需点亮底部的LED。通常我们点亮编号为3, 4, 5, 6的LED(形成一个弧形)。在forever循环内,在“闭嘴”状态后:

  1. 放入一个show ring,仅将LED 3,4,5,6设置为白色,其他为黑色。
  2. 之后加入一个较长的pause,比如500毫秒,让微笑保持。
  3. 最后再加入一个show ring关闭所有灯,完成一个循环。

此时,你的forever循环内的逻辑是:张嘴(全亮)-> 闭嘴(全灭)-> 微笑(底部亮)-> 熄灭。但这只是一个自动循环的动画,我们需要用声音来触发它。

4.3 声音传感器触发机制的两种实现方案

这是项目的核心逻辑:如何让麦克风检测到的声音信号去触发灯光动画。MakeCode提供了两种层次的实现方法,适用于不同场景。

方案一:使用on loud sound事件块(简单直接)这是最简单的方法。从Input类别中拖出on loud sound积木。这个积木是一个事件监听器,它独立于forever循环。当检测到的音量超过一个内置的预设阈值时,就会执行它内部的代码。

  1. 将我们之前在forever里构建好的整个灯光动画积木栈(从第一个show ring到最后一个pause),整体拖拽到on loud sound积木内部。
  2. 此时,forever循环内可以是空的,或者放一些低功耗的待机动画。
  3. 在模拟器中,你会看到一个小音量滑块。拖动滑块可以模拟不同音量。当模拟音量超过滑块位置,on loud sound内的代码就会被触发一次。

优点:设置简单,无需理解阈值具体数值。缺点:阈值固定且不可精细调整。在嘈杂环境中可能误触发,在安静环境下可能需要很大声音才能触发。

方案二:使用sound level变量与循环判断(可调阈值)这种方法更灵活,允许我们自定义触发阈值。原理是:在forever循环内,持续读取麦克风的音量值(sound level),并与我们设定的一个数字进行比较,当音量大于该数字时,才执行灯光动画。

  1. forever循环内,首先从Loops中拖入一个while do积木。
  2. 点击while后面的true,会弹出逻辑选择框。我们需要创建一个条件。从Logic中拖出一个0 = 0比较积木。
  3. 将比较符号从=改为(大于等于)。
  4. Input中,找到椭圆形的sound level积木,将其拖入比较积木左边的槽中。
  5. 在右边的槽中,手动输入一个数字,例如150。这个条件就变成了while sound level ≥ 150 do
  6. 最后,将我们的灯光动画积木栈拖入这个while do循环内部。

工作原理:程序每秒多次检查麦克风音量。只要音量持续≥150,它就会一遍又一遍地执行动画(因为while循环)。一旦你停止说话,音量低于150,while循环停止,动画也就停止,程序回到循环起点继续检测。你可以通过调整这个数字(如调到120更灵敏,调到180更迟钝)来完美适配你的环境噪音和说话音量。

实操心得:我强烈推荐方案二。在实测中,方案一的固定阈值在户外几乎无法工作,室内也需要刻意提高音量。方案二则允许进行精细校准。一个校准技巧:在MakeCode模拟器中,一边用正常音量说话,一边观察模拟器上显示的实时sound level数值,取一个比环境噪音略高、比说话音量略低的中间值作为阈值,效果最稳定。

5. 电子部分集成与系统调试

5.1 CPX板在口罩中的定位与固定

缝制好的口罩有一个夹层(滤芯袋),这就是CPX板的“家”。放置时,需要特别注意方向:

  1. USB接口朝向:让CPX的Micro-USB接口朝向口罩底部预留的电源线缺口。这样,JST延长线可以自然地插入,不会在内部扭曲。
  2. LED环方向:将电路板横向放置,使得LED环的“顶部”(通常是靠近板载按钮的一侧)对应口罩的上方(鼻梁处),“底部”对应下巴处。这样,当我们编程控制底部LED点亮时,形成的“微笑”才会出现在嘴巴的正确位置。
  3. 固定方式:虽然布料夹层可以提供一定的摩擦力,但在活动时板子仍可能滑动。最佳实践是使用一对背胶魔术贴圆点。将钩面(粗糙面)贴在CPX板背面边缘,将毛面(柔软面)贴在口罩夹层内衬的对应位置。这样既能牢固固定,又方便随时取下板子进行充电或重新编程。

5.2 电源系统连接与走线管理

安全与美观是电源连接的核心。

  1. 连接顺序:先将JST延长线公头插入3xAAA电池盒的母座,然后将延长线的另一端从口罩底部预留的缺口穿入,在夹层内找到CPX板,将其母头插入CPX板上的JST电池接口。务必在连接电池盒之前,确认电池盒的开关处于“OFF”状态
  2. 走线优化:如果延长线过长,不要将其全部塞入口罩夹层,这会导致局部鼓包不适。正确做法是将多余线缆沿着脖颈向下,用一个小夹子或别针固定在衣领内侧或衣服上,最后将电池盒放入口袋或夹在腰带上。确保线缆有足够的松弛度,不会在你转头时拉扯口罩。
  3. 安全复查:完成所有连接后,再次检查:电池极性是否正确(通常电池盒有标识)?所有接口是否插紧?电线绝缘皮有无破损?CPX板上的元件有无被布料纤维短路的风险?确认无误后,再打开电池开关。

5.3 系统整体测试与问题排查

打开电池开关,此时CPX板应该通电(板载红色电源LED亮起)。尝试用正常音量说话,观察LED是否按预设程序响应。

常见问题与排查表:

问题现象可能原因排查步骤与解决方案
LED完全不亮1. 电源未接通
2. 程序未成功上传
3. CPX板损坏
1. 检查电池盒开关、电池电量、JST线连接是否牢固。
2. 重新通过USB连接电脑,检查MakeCode中是否点击了“下载”并将.uf2文件拖入CPLAYBOOT盘。
3. 尝试用USB线直接供电,看板子是否正常。
LED常亮但不闪烁/变化程序可能卡在某个循环,或forever内没有设置灯光变化逻辑。检查MakeCode程序,确保在forever或触发事件内有show ring配合pause的交替变化逻辑。模拟器调试最直观。
声音无法触发灯光1. 触发阈值设置不当
2. 麦克风被遮挡
3. 程序逻辑错误
1. 如果使用方案二,尝试降低sound level的比较数值(如从150调到100)。
2. 确保CPX板上的麦克风小孔(通常是一个银色小圆点)没有被布料完全覆盖。
3. 检查on loud soundwhile循环内的代码块是否连接正确,灯光动画积木是否被正确包含在内。
触发过于灵敏或迟钝环境噪音影响或阈值不合适。在目标使用环境中进行阈值校准。使用方案二,在安静环境下测试说话时的sound level值,并设置一个略高于环境底噪的值。
灯光图案位置不对CPX板在口罩中方向放反。关闭电源,调整CPX板方向,使编程时设定的“底部LED”对应实际口罩的下半部分。可能需要调整show ring中点亮的LED编号。
使用一段时间后发热长时间高亮度点亮所有LED功耗较大。这是正常现象,但需警惕。避免长时间连续使用。在程序中可以适当降低LED亮度(使用set brightness积木),或缩短灯光持续的时间。如果发热异常(烫手),立即断电检查。

最终穿戴调试:戴上口罩,调整束带至舒适位置。用手轻轻调整口罩内CPX板的位置,使其正对嘴部。与朋友对话或对着手机录音说话,观察触发是否自然。你可能需要根据实际佩戴效果,回到MakeCode中微调灯光颜色(比如换成暖黄色更柔和)或动画速度,使其更符合你的个性。

这个项目从一块布料、一块开发板开始,最终成为一个能与环境互动的智能可穿戴装置。它完美地诠释了“物理计算”的概念——用程序去感知物理世界(声音),并驱动物理世界给出反馈(灯光)。过程中遇到的每一个小问题,从缝线歪斜到阈值调试,都是宝贵的学习经验。希望这份详细的指南不仅能让你成功复现这个有趣的口罩,更能点燃你创造更多互动项目的热情。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询