基于CRICKIT与CPX的互动节日立体模型制作:从电机驱动到电容触摸

基于CRICKIT与CPX的互动节日立体模型制作:从电机驱动到电容触摸 1. 项目概述一个会动的节日立体模型每到节日季总想动手做点有氛围的小玩意儿。今年我决定不再满足于静态的装饰而是想做一个真正“活”起来的节日立体模型。想象一下麋鹿拉着雪橇载着可爱的机器人在布满星星和月亮的夜空中上下翻飞伴随着《铃儿响叮当》的音乐而这一切只需要你轻轻触摸一下月亮就能触发。这个想法听起来复杂但得益于像Adafruit CRICKIT和Circuit Playground Express后文简称CPX这样优秀的硬件平台实现起来远比想象中简单。CRICKIT是一块功能强大的“创造力扩展板”它专为CPX设计提供了驱动电机、伺服舵机、连接更多传感器和执行器的标准化接口把复杂的硬件接线和电源管理问题都打包解决了。而CPX本身则是一个集成了多种传感器、LED灯和按钮的微型控制器编程极其友好。这个项目的核心就是利用CRICKIT驱动一个直流电机通过一套简单的机械结构我称之为“旋转支架”将电机的旋转运动转化为上下往复的直线运动从而带动麋鹿和雪橇角色“飞行”。同时CPX负责播放音乐、控制LED星星的闪烁并通过其电容触摸功能让触摸月亮成为启动电机动画的魔法开关。整个过程涉及基础的物理计算、简单的机械结构设计、电路搭建以及图形化编程是一个综合性很强的入门项目非常适合想要从纯软件或简单电子项目迈向互动装置制作的创客朋友。2. 核心硬件选型与设计思路拆解在开始动手之前理清整个项目的硬件架构和设计逻辑至关重要。这不仅能帮你理解每一步在做什么还能在遇到问题时快速定位。2.1 主控与扩展板为什么是CPXCRICKIT选择Circuit Playground Express作为大脑是因为它极大地降低了入门门槛。它板载了10个可编程的NeoPixel RGB LED、运动传感器、温度传感器、光线传感器、声音传感器还有两个按钮和一个滑动开关。更重要的是它支持通过USB线进行拖放式编程无需额外的烧录器。对于本项目我们将用到它的数字输出控制LED、模拟输出播放声音和电容触摸输入感应月亮触摸。而Adafruit CRICKIT扩展板则是项目的“力量与接口中心”。CPX本身无法直接驱动大电流设备如直流电机。CRICKIT提供了4路大电流的电机/舵机驱动通道、2路大电流数字输出、4路伺服舵机接口、以及多个模拟/数字输入接口并自带一个5V/2A的电源接口可以为整个系统提供稳定、独立的电力。这意味着电机、LED等耗电元件都由CRICKIT的专用电源供电避免了从CPX取电可能导致的电流不足或板子重启的问题。这种“主控管逻辑扩展板管功率”的分工非常清晰可靠。2.2 运动系统设计从旋转到上下往复运动让角色上下运动是本项目的机械核心。这里采用了一个非常巧妙且易于实现的凸轮机构变体。核心思路一个低速直流电机TT马达200RPM带动一根轴旋转轴上固定着四个错开90度角度的圆形纸板充当凸轮。每个圆板外缘固定着一根垂直的黑色扭扭棒管道清洁条。当电机转动时圆板会推着扭扭棒做圆周运动。如果我们限制扭扭棒只能在一个垂直的导向孔中上下移动那么圆板的旋转运动就会转化为扭扭棒的上下直线往复运动。设计要点电机选型选择200RPM每分钟200转的低速减速电机。转速太高会导致动画过快、不自然且扭扭棒容易卡住转速太低则动画呆滞。200RPM是一个折中的选择通过编程还可以进一步调速。相位差布局四个圆板彼此错开90度安装。这样四个扭扭棒分别对应四只麋鹿/角色的上下运动就形成了连续的波浪形序列模仿出队伍依次起伏飞行的动态效果远比所有角色同步上下要生动得多。导向与减摩扭扭棒穿过顶部的长条纸板导向孔。为了减少摩擦确保运动顺畅需要在导向孔内涂抹热熔胶形成光滑内壁甚至可以剪掉扭扭棒底部多余的绒毛。这是保证长时间运行不卡顿的关键细节。2.3 电路设计并行LED与电容触摸灯光部分我们使用5颗白色LED作为星星1颗红色LED作为鲁道夫的鼻子。电路设计采用并联方式。为什么用并联而非串联电压一致在并联电路中所有LED的正极都连接到同一个电源点CPX的3.3V所有负极都连接到同一个接地点GND。每个LED两端的电压都是电源电压3.3V确保了每个LED都能获得足够的工作电压。独立工作如果其中一个LED损坏开路其他LED依然可以正常工作提高了系统的鲁棒性。布局灵活LED可以分散布置在场景的任何位置只需用导电铜箔胶带将它们的正负极分别“汇流”到电源和地线即可布线非常自由适合在纸板这类不规则表面上实现。限流电阻的计算与放置 LED需要限流电阻来防止过电流烧毁。我们使用一颗470欧姆的电阻。这里有一个关键技巧电阻放在电源总线上而不是每个LED单独配一个。计算一下总电流假设每颗白色LED工作电流约20mA5颗共100mA。红色LED约20mA。总电流约120mA。CPX的3.3V输出引脚通常可提供最高150mA电流因此120mA在安全范围内。电阻值R (电源电压 - LED正向电压) / 总电流。白色LED正向电压约3.0V(3.3V - 3.0V) / 0.12A 2.5欧姆。我们使用470欧姆实际电流会更小约0.6mA每路LED会稍暗但非常安全且长寿。将这一个电阻串联在3.3V电源总线的最开端是为所有并联的LED提供总的限流保护。电容触摸输入CPX的多个引脚支持电容触摸感应。我们只需用一根鳄鱼夹测试线一端连接CPX的A3引脚标记为A3/Touch另一端连接一块铝箔然后将铝箔贴在月亮装饰的背面。当手指触摸月亮间接接触铝箔时就改变了该引脚的电容值CPX可以检测到这个变化从而触发预设的动作启动电机。3. 分步制作详解与实操要点接下来我们进入具体的制作环节。请务必按顺序操作并注意我强调的细节。3.1 电子部分连接与初始测试在组装机械结构前先确保核心电子功能正常这是一种“分模块调试”的好习惯可以避免后期问题排查的复杂性。步骤一硬件连接将Circuit Playground Express扣在CRICKIT扩展板上确保引脚完全对齐并压紧。这是所有连接的基础。连接直流电机找到CRICKIT上标记为Motor 1的接线端子。将TT电机的红线正极插入标有或外侧的端子孔黑线负极插入-或内侧的端子孔。使用小螺丝刀拧紧端子上的螺丝确保导线被牢牢固定。接触不良会导致电机时转时不转。搭建LED测试电路取一个470Ω电阻用一只鳄鱼夹夹住电阻的一条腿鳄鱼夹另一端夹到CPX上任意一个标记为3.3V的输出引脚。用另一只鳄鱼夹夹住电阻的另一条腿然后去夹住一颗白色LED的长脚正极。再用第三只鳄鱼夹一端夹住LED的短脚负极另一端夹到CPX上任意一个标记为GND的接地引脚。此时LED应该微微亮起。如果不亮检查LED极性是否接反、鳄鱼夹是否夹紧、电阻引脚接触是否良好。连接电容触摸用一只鳄鱼夹一端夹在CPX的A3引脚另一端夹住一小块铝箔。暂时将铝箔放在一边。步骤二使用MakeCode进行图形化编程访问MakeCode for Adafruit网站创建一个新项目。添加CRICKIT扩展库在代码块抽屉中点击扩展搜索crickit并添加。编写主程序从循环类别中拖出一个无限循环块。在循环内从音乐类别中拖出播放旋律块选择《Jingle Bells》或其他你喜欢的节日旋律。这样音乐就会一直循环播放。从输入类别中拖出一个当引脚A3被触摸事件块。在这个事件块内部从CRICKIT类别中找到设置CRICKIT的电机1速度为 0%块将其拖入。将速度值改为25%。从循环类别中拖出一个暂停(ms) 100块放在设置速度块后面将时间改为5000即5秒。最后再拖入一个设置CRICKIT的电机1速度为 0%块使电机在运行5秒后停止。代码上传点击页面底部的项目名称框为程序命名例如Holiday_Diorama然后点击下载按钮将.uf2文件保存到电脑。用Micro-USB数据线连接CPX和电脑。快速按两次CPX板上的复位按钮Reset此时所有NeoPixel灯会变成绿色电脑上会出现一个名为CPLAYBOOT的U盘。将下载的.uf2文件拖入CPLAYBOOT盘符。盘符会自动弹出程序即上传完成。步骤三上电测试将5V/2A的直流电源适配器插入CRICKIT的圆孔电源接口并拨动旁边的开关到ON。此时你应该能听到CPX开始播放音乐。用手触摸连接在A3引脚上的铝箔电机应该开始以较慢的速度旋转5秒后自动停止。如果电机不转检查CRICKIT电源开关是否打开、电机接线端子螺丝是否拧紧、代码中电机端口号是否正确确保是Motor 1。如果触摸不灵敏检查鳄鱼夹与铝箔、A3引脚的连接是否牢固。也可以尝试在代码中降低触摸灵敏度阈值MakeCode中通常有相关高级选项。注意这个初始测试非常重要。它验证了CPX编程、音乐播放、电容触摸输入、CRICKIT电机驱动以及电源系统全部工作正常。在此基础之上我们再添加机械结构和装饰就等于把复杂问题分解成了独立的、可验证的模块。3.2 旋转支架与运动机构的制作这是整个项目中最需要耐心和精度的部分。一个顺滑的机械结构是动画流畅的保证。材料准备一个坚固的纸箱Adafruit的发货箱就很好、硬纸板、竹签、TT电机附带联轴器、热熔胶枪、尺子、美工刀。步骤一制作旋转圆盘凸轮取一块厚实的瓦楞纸板。找一个图钉系上一段约3厘米长的棉线棉线另一端绑紧一支铅笔。将图钉按在纸板中央作为圆心拉直棉线用铅笔在纸板上画一个圆。此圆的半径3厘米决定了扭扭棒上下运动的幅度。用美工刀仔细切割制作出四个尽可能一样大的圆形纸板。圆形的规整度会影响运动平衡。在每个圆盘上标记一个点。这个点不能是圆心而是位于圆心到边缘的中点位置大约距离圆心1.5厘米。这是穿竹签的孔位。用竹签依次穿过四个圆盘上标记的点。穿好后四个圆盘应该平行排列在竹签上但暂时不要固定。步骤二在纸箱上定位与开孔在作为底座的纸箱左侧面距离背面约4.3厘米、距离底面约3.3厘米的位置标记一个点。用美工刀戳一个小孔。在纸箱右侧面对称的相同位置标记并戳出另一个孔。将穿好圆盘的竹签两端分别插入左右侧面的小孔模拟转轴的位置。确保竹签能自由转动。步骤三安装电机扩大电机轴孔取下竹签。在纸箱左侧面你刚才戳小孔的那一面需要开一个能让TT电机输出轴穿过的孔。将电机轴对准小孔用笔描出电机外壳的大致轮廓。用美工刀将这个轮廓切割下来让电机可以嵌入纸箱侧壁。关键细节确保电机嵌入后其红线黑线引出方向是朝外的并且电机线上那个固定线缆的扎带扣不要顶住纸箱内壁以免电机安装不正。固定电机将电机放入开好的孔中。在电机固定耳那个有小圆孔的小塑料片对应的纸箱内壁位置用笔做标记然后戳孔。从纸箱外侧将M3螺丝穿过纸箱和电机的固定耳在纸箱内侧用M3螺母拧紧。两颗螺丝对角拧紧确保电机稳固不晃动。安装联轴器与转轴将TT电机专用的联轴器Hub紧紧按到电机输出轴上。在联轴器内部滴入少量热熔胶迅速将竹签的一端左侧插入联轴器并保持竹签水平直到胶水凝固。竹签的另一端右侧应轻松穿过纸箱右侧的孔。固定圆盘并调整相位现在调整竹签上四个圆盘的位置。首先从最右边的圆盘开始转动它使其上的竹签穿孔点位于圆盘的最顶端12点钟方向。然后固定它旁边的圆盘使其穿孔点位于最右侧3点钟方向。第三个圆盘在6点钟方向第四个在9点钟方向。这样就形成了90度的相位差。用热熔胶将每个圆盘牢牢固定在竹签上并确保它们之间保持平行和等距。最后可以剪掉右侧伸出过长的竹签。步骤四制作导向机构裁剪一块长约24厘米、宽约4厘米的硬纸板作为顶部的导向板。将这块导向板水平放置在四个旋转圆盘的正上方用铅笔透过圆盘的中心在导向板上标记出四个对应的点。在这四个点上用美工刀开出能让扭扭棒轻松穿过的孔。取四根黑色扭扭棒每根长约14厘米。将它们分别穿过导向板的四个孔。制作“导向滑块”裁剪四块3x5厘米的小硬纸板。在每块小纸板中心戳一个小孔。将一根扭扭棒的一端约2厘米穿过小孔然后将穿出的部分弯折并粘在纸板背面形成一个“T”型结构。用热熔胶将扭扭棒与滑块垂直固定。剪掉滑块下方过长的扭扭棒。关键减摩处理在导向板的每个孔洞内壁涂抹一圈热熔胶形成一个光滑的塑料环这能极大减少扭扭棒上下运动的摩擦。更进一步可以用剪刀或剪线钳将每根扭扭棒底部即将与旋转圆盘接触的部分的绒毛修剪掉一些使其更光滑。将四根带着滑块的扭扭棒从下方穿过导向板的四个孔。让每个滑块都“坐”在对应的旋转圆盘上。此时如果你手动旋转竹签应该能看到四个滑块在导向板的约束下各自做上下往复运动且运动轨迹彼此错开。将导向板粘在纸箱顶部靠后的位置。粘的时候可以有意让导向板稍微向后倾斜使得扭扭棒也微微后仰。这样后续粘上角色时角色会自然面向前方而不是朝天看。3.3 角色制作与电路装饰集成机械部分测试无误后我们就可以添加生动的角色和闪亮的灯光了。步骤一制作麋鹿与Adabot雪橇麋鹿用棕色卡纸对折画出麋鹿的身体和头部轮廓并剪下得到对称的两片粘合成立体形状。用黑色扭扭棒制作鹿角粘在头部。制作三只。Adabot与雪橇用彩色卡纸分别剪出雪橇的底部、侧面和Adabot机器人的形状。用胶水粘合。可以用人造蜘蛛网或棉花粘在Adabot脸上做胡子头顶做毛球帽子增加趣味性。在Adabot手臂背面粘一小段竹签加固以承受“缰绳”的拉力。安装角色将三只麋鹿和Adabot用热熔胶分别粘到四根扭扭棒顶部的滑块上。粘贴时注意调整重心例如麋鹿可以粘在前腿位置以平衡头部鹿角的重量。确保角色之间留有足够空间不会在运动时相互碰撞。连接缰绳剪一段约20厘米的棉线或细绳一端粘在Adabot手上另一端依次粘在三只麋鹿身上形成拉雪橇的视觉效果。步骤二布置LED星空与电容触摸月亮背景板准备裁剪一块黑色卡纸作为夜空背景贴在立体模型的前框上。在正面用铅笔轻轻标出星星和月亮的位置。背面包布电路将背景板暂时取下在其背面或另贴一张白纸便于观察根据正面的标记用铅笔画出电路的走线图。规划一条从右下角开始的“电源总线”接3.3V和一条平行的“地线总线”接GND。在电源总线起始端留出放置470Ω电阻的位置。粘贴铜箔胶带沿着画好的线粘贴导电铜箔胶带。技巧在拐角处不要剪断胶带而是将胶带折叠过去以保持导通的连续性。尽量减少接缝因为接缝处电阻较大。安装LED在标记的星星位置从正面戳孔。将5颗白色LED从正面插入长脚正极朝上。在背面将每颗LED伸出的长脚弯折使其接触到“电源总线”的铜箔然后用一小段铜箔胶带压紧固定。同样将短脚负极弯折并固定到“地线总线”上。对于鲁道夫的红鼻子LED在对应麋鹿鼻子的位置戳孔安装。由于其位置可能离总线较远可以用两根黑色的跳线或黑色排线作为延长线。将跳线一端分别焊接或用铜箔胶带紧密压接在LED的两只脚上另一端则分别连接到背面的电源和地线总线上。这样正面就看不到杂乱的导线。安装限流电阻将470Ω电阻跨接在“电源总线”的起始端缺口处用铜箔胶带固定好两端。连接电源用红色鳄鱼夹连接CPX的3.3V引脚到背景板背面的“电源总线”起点电阻之后。用黑色鳄鱼夹连接CPX的GND引脚到“地线总线”。制作触摸月亮剪出月亮形状用铝箔完全包裹。将铝箔的一角延伸到月亮背面。用热熔胶将月亮粘在背景板正面预定位置。用一根鳄鱼夹测试线一端夹住月亮背面的铝箔另一端夹到CPX的A3引脚。步骤三整体组装与最终调试将装饰好电路和角色的背景板安装回立体模型的外框。用一根竹签或木棍粘在模型背面作为支架使其能稳定站立。最后将电机的引线正式接到CRICKIT的Motor 1端子。连接CRICKIT电源打开开关。此时整个系统应该开始工作星空白色LED和红鼻子红色LED被点亮《铃儿响叮当》音乐响起。当你触摸铝箔月亮时电机启动带动四根扭扭棒以及其上的麋鹿和Adabot开始上下起伏运动持续5秒后停止等待下一次触摸。4. 常见问题排查与进阶优化技巧即使按照步骤操作也可能会遇到一些小问题。这里总结了一些常见故障和我的解决经验。4.1 电子与编程问题排查问题现象可能原因排查步骤与解决方案上电后无任何反应1. CRICKIT电源未接通或损坏。2. CPX未正确插入CRICKIT。3. 程序未成功上传。1. 检查5V电源适配器是否插好CRICKIT上的电源开关是否拨到ON用万用表测量CRICKIT的5V和GND之间是否有5V电压。2. 拔下CPX重新对准引脚安装确保完全扣合。3. 快速双击CPX复位键看NeoPixel是否变绿编程模式。重新拖放.uf2文件。音乐播放但触摸月亮电机不转1. 电容触摸连接线断路或接触不良。2. 电机接线错误或松动。3. 代码中电机端口设置错误。1. 检查连接A3引脚的鳄鱼夹和铝箔是否固定良好。尝试触摸鳄鱼夹金属部分直接测试。2. 检查CRICKIT上Motor 1端子的螺丝是否拧紧电机线是否虚接。可调换电机两根线试试。3. 在MakeCode中确认控制的是CRICKIT的motor 1而不是其他电机或舵机端口。LED部分不亮或全部不亮1. LED极性接反。2. 铜箔胶带线路断路。3. 限流电阻虚焊或损坏。4. 电源/地线连接错误。1. 确认所有LED长脚正极都接在“电源总线”上。2. 用万用表通断档沿着铜箔走线一点点检查重点检查拐角、接缝和LED引脚压接处。3. 检查470Ω电阻两端是否与铜箔接触良好可测量其阻值是否正常。4. 确认红色鳄鱼夹接的是CPX的3.3V黑色接的是GND。电机转动时CPX重启或LED闪烁电源功率不足或存在较大干扰。这是最典型的问题。确保为CRICKIT供电的是独立的5V/2A电源适配器而不是通过电脑USB供电。电机启动瞬间电流较大可能拉低电压导致CPX复位。独立电源可提供充足电流。4.2 机械结构与运动问题优化问题现象可能原因排查步骤与解决方案扭扭棒运动卡顿、不顺畅1. 导向孔摩擦太大。2. 旋转圆盘不圆或偏心。3. 扭扭棒弯曲或与圆盘接触点不正。1.强化减摩在导向孔内壁多涂几层热熔胶形成光滑的“轴承”。在扭扭棒运动段涂抹少许润滑油如凡士林。2. 检查四个圆盘是否切割规整在竹签上是否固定牢固且垂直。不规则的圆盘会导致运动抖动。3. 确保扭扭棒底部与圆盘边缘的接触点是垂直的并且滑块在导向板上没有倾斜。可调整滑块粘接角度。电机有声音但转轴不转电机联轴器与竹签打滑。热熔胶固定力可能不足。解决方案将竹签插入联轴器的一端用刀片刮出一些毛刺以增加摩擦力然后涂上环氧树脂胶或强力AB胶再插入其固定强度远高于热熔胶。角色运动时左右摇晃严重扭扭棒太软或导向孔太大。1. 使用更粗更硬的支撑物如黑色塑料吸管它是扭扭棒的完美替代品更直更滑。2. 减小导向孔的直径使其与支撑物扭扭棒或吸管间隙尽可能小但又不妨碍运动。运动时噪音较大机械部件摩擦、碰撞或电机本身噪音。1. 在所有运动接触点圆盘-支撑物、支撑物-导向孔进行润滑。2. 检查是否有纸板部件在运动时相互刮擦进行修剪。3. 在代码中降低电机速度如从25%调到20%噪音和振动会显著减小。4.3 创意扩展与进阶玩法基础项目完成后这里有一些提升趣味性和复杂度的思路动态灯光目前LED是常亮的。你可以利用CPX板载的NeoPixel LED那些彩色小灯来增加效果。例如在MakeCode中可以设置当触摸月亮时不仅电机转动板载的10个NeoPixel也循环播放红绿闪烁的节日灯光效果。多首音乐与随机播放在MakeCode中创建多个“函数”每个函数包含一段不同的节日旋律如《We Wish You a Merry Christmas》、《Deck the Halls》。然后使用随机数块在每次触摸月亮时随机选择一个函数来播放。加入光敏或声音控制利用CPX板载的光线传感器或声音传感器。你可以让模型在环境光变暗夜晚时自动点亮星星LED或者拍一下手就启动雪橇动画。升级运动模式目前电机是固定速度、固定时间运行。你可以编程实现更复杂的运动模式比如让电机先加速、再匀速、最后减速停止模拟雪橇起飞和降落的动态。这需要用到CRICKIT电机模块中的加速和减速代码块如果支持。美化与场景设计除了示例中的房子和山坡可以用更丰富的材料制作雪景石膏、苏打粉、云朵棉花、圣诞树绿色海绵纸小LED等。甚至可以在背景后放置一个慢速旋转的星空投影灯增加景深效果。这个项目成功的关键在于理解“模块化”思想电子测试、机械构建、电路装饰、编程逻辑都是相对独立的模块。分步完成并测试每一个模块最后进行集成能极大提高成功率。它不仅仅是一个节日装饰更是一个涵盖了嵌入式系统开发、基础机械原理和电路设计的微型工程实践。当你看到自己亲手制作的场景在触摸下灵动起来时那种将代码和创意转化为物理现实的成就感正是创客精神的精髓所在。