1. 项目概述一个会动、会亮、会唱歌的创客冰淇淋车如果你手头有一块 Circuit Playground Express (CPX) 开发板又觉得它自带的功能玩得差不多了想搞点“大动作”比如让小车跑起来、让机械臂挥挥手那么 Adafruit 的 CRICKIT 扩展板绝对是你的下一个“玩具”。这个项目就是把这两者结合起来用最“创客”的方式——纸板、胶水、开源硬件——打造一辆充满个性的冰淇淋车。它不仅仅是一个静态模型而是一个集成了移动、灯光、音效和交互的完整物理计算系统。这辆车的核心玩法是上电后车身的 NeoPixel 灯带会呈现炫酷的流光效果同时播放经典的“Do Your Ears Hang Low”旋律。当你触摸车顶的一块锡箔纸电容触摸传感器时车里的 Adabot 机器人玩偶会挥舞手中的冰淇淋接着两个直流电机驱动车轮让小车前进8秒钟最后 Adabot 再挥一次手完成一次完整的“售卖”互动。整个过程充满了机械传动的乐趣和编程实现的成就感。这个项目非常适合有一定电子和编程基础希望将想法变为实体的创客、教育工作者或爱好者。它涉及了电机控制、伺服舵机、可编程LED、电容传感、电源管理和结构设计等多个知识点是一个综合性极强的实践案例。下面我就带你从零开始拆解每一个环节分享我在制作过程中积累的经验和踩过的坑。2. 核心硬件选型与功能解析工欲善其事必先利其器。这个项目的硬件清单看起来不少但每一件都有其不可替代的作用。理解它们的功能和选型理由能帮助你在未来设计自己的项目时做出更合理的决策。2.1 大脑与神经中枢CPX 与 CRICKITCircuit Playground Express (CPX)是这个项目的大脑。它本身就是一个功能强大的微型控制器集成了加速度计、光线传感器、温度传感器、麦克风、扬声器、按钮和10个可编程RGB LEDNeoPixel。它的核心价值在于“开箱即用”省去了焊接大量基础传感器的麻烦让你能快速进入编程和交互逻辑的开发。Adafruit CRICKIT则是项目的神经中枢和力量源泉。CPX 虽然功能多但其GPIO引脚驱动能力有限无法直接驱动耗电的电机或伺服舵机。CRICKIT 就是为了解决这个问题而生的扩展板。它通过一个专用的夹子接口与 CPX 紧密连接提供了4路大电流直流/步进电机驱动每路可提供高达1.2A的持续电流足以驱动本项目用的TT马达。4路伺服电机接口提供标准的5V伺服控制信号和电源。2路大电流数字输出可用于驱动更亮的灯或其他设备。1路 NeoPixel 专用输出带有保护电路可直接驱动灯带无需担心信号电平问题。8路电容触摸输入将任何导体如锡箔、水果、你本人变成触摸传感器。1路音频功放输出可以连接一个8Ω扬声器让声音洪亮数倍。注意CRICKIT 有多个版本务必选择“for Circuit Playground Express”的型号。其他版本如 for micro:bit接口不兼容。两者的关系可以理解为CPX 负责思考、感知和发出指令“大脑”而 CRICKIT 负责执行这些指令驱动强大的“肌肉”电机、舵机和“器官”大灯、喇叭。这种分工使得系统架构非常清晰也极其安全避免了因接线或编程错误烧毁核心控制板的风险。2.2 动力与传动系统电机与车轮项目使用了两个200 RPM 3-6V DC 齿轮减速电机TT马达。选择它们的原因很明确减速齿轮箱提供了较大的扭矩使得小车即使在纸板车身和一定负载下也能顺利启动和运行。200 RPM的转速对于模型车来说也较为适中不会太快而难以控制。电压兼容3-6V的工作电压与CRICKIT电机驱动端口的5V输出完美匹配。通用性TT马达是机器人爱好者和教育领域的常客配件如车轮、联轴器丰富价格低廉。搭配的65mm 白色薄轮直径适中提供了良好的地面接触面积和移动稳定性。这里有一个细节车轮是通过一个带摩擦力的轴套直接套在电机输出轴上的。安装时一定要确保压到底并用一点热熔胶加固否则在行进中容易打滑脱落。2.3 执行与互动机构伺服舵机与电容触摸微型伺服舵机负责驱动 Adabot 的挥手动作。舵机的工作原理是接收一个周期性的PWM脉冲宽度调制信号根据脉冲的宽度来精确控制输出轴的角度通常是0-180度。CRICKIT 的伺服接口简化了这一过程在 MakeCode 中你只需要用“设置伺服角度”积木块即可控制。电容触摸是本项目的主要交互方式。CPX 本身有7个电容触摸引脚A1-A7CRICKIT 又扩展了8个。其原理是检测人体一个导体接触传感器时引起的微小电容变化。我们通过一个鳄鱼夹测试线将锡箔纸连接到 CPX 的 A3 引脚就创建了一个简单的触摸按钮。相比物理按钮电容触摸让交互更“魔法”外观也更简洁。2.4 灯光与电源系统NeoPixel RGB LED 灯带用于营造氛围。CRICKIT 上有专用的 NeoPixel 端口接线非常方便电源、地、数据三线。在代码中我们可以轻松地控制整条灯带上每一颗LED的颜色、亮度和显示各种动画如本项目中的“彗星”效果。电源系统是本项目的重中之重也是最容易出问题的地方。直流电机启动和堵转时电流很大如果电源功率不足会导致整个系统电压被拉低表现为CPX重启、灯光闪烁、程序跑飞。原教程强烈建议使用便携电源方案核心一块3.7V 6600mAh 锂离子电池组提供能量。升压与充电一个PowerBoost 1000 充电升压模块。它有两个关键作用一是将电池的3.7V升压到稳定的5V输出给CRICKIT二是集成了充电管理可以通过Micro USB口为电池充电。开关一个自锁开关用于控制整个系统的通断。我实测下来这个组合非常可靠能让小车持续运行很长时间。切忌使用普通的手机充电宝它们的输出电流可能无法满足电机瞬间的大电流需求且可能因过流保护而自动断电。3. 软件编程用 MakeCode 赋予灵魂硬件搭建是骨架软件编程才是灵魂。这个项目使用 Microsoft MakeCode 进行图形化编程极大地降低了门槛让注意力集中在逻辑本身。3.1 MakeCode 环境搭建与 CRICKIT 扩展首先访问 https://makecode.adafruit.com/ 创建一个新项目。最关键的一步是添加CRICKIT 扩展。在 MakeCode 的“高级” - “扩展”中搜索“crickit”并添加。添加成功后左侧积木区会出现一个全新的“CRICKIT”类别里面包含了控制电机、伺服、舵机、NeoPixel灯带的所有积木块。没有这个扩展你将无法控制CRICKIT上的任何设备。3.2 程序逻辑深度拆解项目的代码结构清晰是一个典型的事件驱动型程序。我们来逐块分析1. 初始化与主循环on start和foreveron start设置连接到CRICKIT的NeoPixel灯带并定义灯珠数量例如30颗。这是一个一次性执行的初始化操作。forever这是一个无限循环。在这里程序设置了灯带的亮度、CPX板载10个LED的颜色然后调用了一个名为“comet”的动画函数让灯带运行3秒接着设置音量并开始播放歌曲。这个循环保证了灯光和音乐在无人交互时也能持续运行营造背景氛围。2. 音乐播放的函数化设计歌曲“Do Your Ears Hang Low”被巧妙地分解成了三个部分Part1, Part2, Part3并分别封装成了三个函数。在主循环中按顺序调用这些函数。这样做的好处是代码复用歌曲中有重复的段落如Part1被调用了两次使用函数避免了代码重复。结构清晰将复杂的音乐序列模块化易于阅读、调试和修改。如果你想换首歌只需要替换这几个函数内部的音符积木即可。效率虽然对这个小程序影响不大但函数化是良好的编程习惯。3. 核心交互逻辑on pin A3 touch这是整个项目的“触发器”。当电容触摸引脚A3被触摸时执行以下序列调用wave函数让Adabot挥手。启动两个直流电机以65%的速度正转持续8秒。停止电机。再次调用wave函数。这里有几个关键参数值得探讨电机速度65%为什么不是100%全速运转可能扭矩过大导致车轮打滑或者电流激增影响系统稳定性。65%是一个经验值在保证动力和节省电量之间取得了平衡。你可以根据地面摩擦力和车身重量自行调整。持续时间8秒这是一个预设的“兜风”时间。你可以通过修改这个数值来控制小车每次触发后行驶的距离。4. 挥手函数function wave的精细控制这个函数控制伺服舵机完成一次完整的挥手动作将 Servo 1 设置为 0 度 暂停 100 毫秒 将 Servo 1 设置为 150 度 暂停 100 毫秒 将 Servo 1 设置为 0 度上述动作被放在一个重复5次的循环中。这里有两个细节角度设置0度和150度这定义了挥手的幅度。你需要根据实际机械结构舵机摇臂的安装角度、拉线的固定点来微调这两个值以确保挥手动作自然且不会卡死机械结构。暂停100毫秒这是给舵机留出时间运动到指定位置。如果没有这个延迟代码执行速度远快于舵机物理运动速度会导致动作不完整或舵机抖动。3.3 代码上传与调试心得编写完代码后点击下载按钮会生成一个.uf2文件。用USB线将CPX连接到电脑快速按两次CPX上的复位按钮注意是两次此时板载LED会变成绿色电脑上会出现一个名为CPLAYBOOT的U盘。将下载的.uf2文件拖入这个U盘它会自动消失程序即上传完成。实操心得如果程序上传后行为异常首先检查CRICKIT扩展是否已正确添加。其次确认硬件连接无误后可以尝试在MakeCode中新建一个最简单的程序比如只让板载LED闪烁来测试CPX本身是否工作正常。逐步添加功能如先测试触摸、再测试舵机、最后测试电机是排查复杂问题的有效方法。4. 车身结构制作从平面图纸到立体模型硬件和软件准备好后我们就需要为它们建造一个“家”。用纸板制作模型成本低、易加工且充满了手工创作的乐趣。4.1 材料处理与切割技巧原项目提供了PDF图纸需要打印后粘贴到瓦楞纸板上进行切割。这里有几个提升效率和成品质量的关键点纸板选择使用中等至大波纹的瓦楞纸板。太薄的纸板强度不够车身容易变形波纹太细的纸板在弯折时容易开裂。至少准备5-6张A4大小的同厚度纸板以保证各部分强度一致。切割工具一把锋利的美工刀和一把剪刀是必备的。美工刀用于切割直线和精细部分剪刀用于修剪曲线和细小部件。务必在切割垫上操作保护桌面也让切割更顺畅。粘贴与切割顺序有两种方法先剪后贴先将图纸上的零件剪下来再分别粘到纸板上然后沿轮廓切割。这样做更省纸板轮廓更精准但步骤稍多。先贴后剪将整张图纸粘到一大张纸板上然后整体切割。这种方法更快但可能会浪费一些纸板且切割厚纸板时较费力。我的建议对于大型主体部件如车身侧面、顶盖采用“先贴后剪”。对于细小零件如Adabot、Blinka采用“先剪后贴”精度更高。4.2 折痕制作与立体组装图纸上的粗实线代表需要折叠的位置。正确的折痕制作是保证模型棱角分明的关键划痕用美工刀沿着粗实线轻轻划一刀只切断表面的牛皮纸和部分瓦楞切勿完全割断。力度要均匀一刀成型最好。压折在划痕的反面用尺子辅助将纸板沿着划痕折弯。可以先用铅笔或圆滑的笔帽在划痕处来回用力刮几下让内部的瓦楞结构塌陷这样折出来的角更整齐、更牢固。组装时热熔胶枪是你的最佳盟友。它的粘接速度快、强度高。涂抹技巧是在需要粘合的一个面上挤上胶条迅速将另一面对准按压保持十几秒直到胶体凝固。对于承重或受力部位如车轮支架、伺服舵机底座可以内外都加固一下。重要提醒在组装车身主体时先不要粘合底板。因为我们需要在底板上安装电机、车轮、电池、电路板等所有内部机构最后再将车身外壳与底板结合。这是一个非常重要的装配顺序能极大方便内部布线和工作。4.3 角色与场景制作Adabot、Blinka和冰淇淋锥这些装饰元素让项目从一台机器变成了一个有故事感的场景。角色加固将打印的角色贴在薄一些的卡纸上再剪下会比直接贴到厚纸板上更容易裁剪精细部位如天线、舌头。冰淇淋制作用“假蜘蛛网”或棉花制作冰淇淋球效果蓬松又可爱。用热熔胶固定时快速将胶涂在蛋筒尖端然后迅速把“冰淇淋”球按上去并用手塑形。Blinka的座椅这个设计很巧妙用纸板折出一个带靠背的小椅子。使用魔术贴尼龙搭扣将Blinka固定在椅子上这样她就可以随时“坐下”或“拿起”方便调整位置和拍照。5. 机械传动与电子集成这是将静态模型变为动态机器的核心步骤涉及精细的机械调整和稳妥的电子安装。5.1 车轮与传动系统安装前轮驱动轮两个TT电机直接作为前轮的动力轴。使用双面泡沫胶将电机粘在底板下方。粘之前务必通电测试电机转向确保两个电机都是朝同一个方向旋转都是向前。粘的时候要确保车轮与底板有足够的间隙转动时不会摩擦到纸板。后轮从动轮这是一个巧妙的简易轴承设计。用竹签作为车轴两个切割好的小纸板片作为轴承座。关键在于在纸板轴承座上穿孔时孔洞大小要刚好让竹签能顺畅转动但又不能太松。将组装好的后轮总成放在底板下确定好轮距和位置后在竹签上对应轴承座外侧的位置做标记。在标记外约2cm处切断竹签留出车轮的安装空间。关键步骤在车轮的轴孔里滴入热熔胶然后迅速将车轮套在竹签顶端并确保车轮与竹签垂直。热熔胶冷却后能提供强大的固定力和一定的同心度补偿。这是整个机械部分最需要耐心的地方车轮装歪了会严重影响行驶直线性。5.2 Adabot挥手机构详解这是本项目机械设计的精华所在实现了一个简单的曲柄滑块机构的转换。运动转换伺服舵机是在一个平面内做约180度的往复摆动。我们需要将这个旋转运动转换为Adabot手臂的前后直线运动。执行机构一根竹签作为Adabot的支撑杆和运动传递杆。它被以一定角度斜着固定在底板上。连接方式主动端一根绳子一端系在伺服舵机的摇臂上。注意需要先将舵机摇臂拆下调整到一个合适的角度后再装回以确保绳子在舵机整个运动范围内都被拉紧不会松弛脱落。从动端绳子的另一端系在竹签的中上部。复位机构当舵机回转放松绳子时需要有一个力把Adabot拉回原位。这里使用了一根橡皮筋。一端固定在座位下方另一端拉紧后固定在竹签上。橡皮筋的拉力与舵机通过绳子提供的拉力方向相反从而实现了往复运动。调试要点舵机中立位在编程前先给舵机上电让它运行到代码中设定的初始角度如0度。在这个位置安装摇臂和绳子确保机构处于松弛的初始状态。行程匹配调整代码中舵机的两个角度值如0度和150度观察Adabot的挥手幅度是否足够且不卡顿。可能需要反复调整绳子的固定点和橡皮筋的拉力。润滑竹签与底板穿孔处可以涂一点点蜡或润滑油减少摩擦让运动更顺滑。5.3 电子设备布局与固定合理的布局关乎稳定性、可维护性和安全性。重心沉重的锂电池应放置在车身前部、靠近前轮轴的位置有助于降低重心防止小车后仰。使用双面泡沫胶或尼龙扎带固定。分层布置将CRICKITCPX组合板用泡沫胶固定在电池上方。这样布局紧凑且方便连接电机和伺服舵机的线缆。PowerBoost升压模块可以放在车尾方便操作其上的开关。伺服舵机用热熔胶牢固地固定在底板后部角落输出轴朝向Adabot方向方便连接拉绳。走线管理使用扎带或胶带将电机、舵机、灯带的延长线整理好避免缠绕进车轮或传动机构中。特别是电机线留出足够的长度以适应前轮转向虽然本项目是直行但预留余量是好习惯。电容触摸传感器将鳄鱼夹一端接CPX的A3另一端夹住一小块锡箔纸。锡箔纸用胶带贴在车顶内部夹子部分也用胶带固定避免拉扯。在车顶对应位置贴上一块装饰胶带触摸那里即可触发。5.4 NeoPixel灯带安装将灯带用布基胶带Duct Tape粘贴在车身底板的边缘LED灯珠朝外。这样在暗处就能形成漂亮的底盘氛围光。粘贴时务必注意避开车轮、传动轴和电机等所有活动部件。检查灯带导线不会被车轮压到。确保灯带起始端Data In牢固地连接在CRICKIT的端子上行驶中的震动可能导致松动。6. 系统调试、问题排查与优化建议将所有部分组装完毕装上电池打开开关激动人心的调试时刻就到了。但现实往往不会一帆风顺以下是我在制作和教学中总结的常见问题及解决方法。6.1 上电无反应或异常现象可能原因排查步骤完全无反应灯不亮1. 电源开关未打开。2. 电池电量耗尽。3. PowerBoost输出端接线松动。4. CRICKIT的DC电源插头未插紧。1. 确认PowerBoost上的开关已拨到“ON”。2. 连接USB线为电池充电。3. 检查PowerBoost到CRICKIT的DC插头是否插牢。4. 用万用表测量PowerBoost输出端是否有5V电压。CPX板载LED亮但CRICKIT无反应1. CPX未正确插入CRICKIT夹口。2. CRICKIT扩展未在MakeCode中正确添加。1. 断电后重新拔插CPX确保金色触点完全接触。2. 重新检查MakeCode项目确认已添加CRICKIT扩展并使用了正确的积木块。电机不转但舵机和灯带工作1. 电机接线端子螺丝未拧紧。2. 电机本身损坏。3. 代码中电机控制积木块设置错误如端口号。1. 用螺丝刀紧固CRICKIT上电机端子的螺丝。2. 直接将电机连接到电池3-5V测试是否转动。3. 检查MakeCode中“设置电机速度”积木块是否选择了正确的电机端口1或2。6.2 交互与动作问题现象可能原因排查步骤触摸锡箔纸无反应1. 鳄鱼夹接触不良。2. 触摸引脚设置错误。3. 身体未良好接地绝缘桌面。1. 重新夹紧锡箔纸和CPX引脚。2. 检查代码中“当引脚A3被触摸”的积木块是否正确。3. 尝试用手同时触摸锡箔纸和CPX的GND引脚或站在地上触摸。舵机不转动或抖动1. 舵机电源线接反CRICKIT有防反接但需检查。2. 机械结构卡死负载过大。3. 代码中角度值超出舵机物理范围通常0-180。1. 确认舵机插头黄色线信号朝外插入CRICKIT Servo 1口。2. 断开拉绳空载测试舵机是否能正常转动到指定角度。3. 调整代码中的角度值从较小的范围如30-150开始测试。Adabot挥手动作不顺畅1. 拉绳或橡皮筋太松/太紧。2. 竹签支撑点摩擦力过大。3. 舵机扭矩不足罕见。1. 调整拉绳在舵机摇臂上的固定点或调整橡皮筋的固定位置和长度。2. 扩大竹签穿孔或涂抹润滑剂。3. 确保舵机供电电压为5V且机械结构无卡滞。小车跑偏或不行走1. 两个电机转向不一致。2. 车轮安装不垂直或打滑。3. 地面摩擦力不均。1. 交换其中一个电机的两根接线使其转向与另一个相同。2. 检查车轮是否安装平整必要时用热熔胶加固。清洁轮胎增加抓地力。3. 在平整光滑的桌面或地板上测试。6.3 灯光与音效问题现象可能原因排查步骤NeoPixel灯带不亮或部分不亮1. 灯带接线顺序错误Din 5V GND。2. 数据流向错误必须从Din端接入。3. 灯带损坏某一段被剪坏或短路。1. 检查CRICKIT NeoPixel端子红(5V) 黑/白(GND) 绿/蓝(Din)。2. 确保信号从灯带标有“Din”或箭头指向的一端输入。3. 单独测试一小段灯带。声音太小或失真1. 使用了CPX板载蜂鸣器功率有限。2. 外接扬声器阻抗不匹配或损坏。1. 按照教程在CRICKIT的扬声器端口接入一个8Ω 扬声器音量会有质的提升。2. 检查扬声器接线是否牢固。6.4 项目优化与扩展思路当你成功让冰淇淋车跑起来后还可以尝试以下优化和扩展让项目更具挑战性和趣味性编程升级随机行为让每次触摸后小车行驶的时间pause在一个范围内随机如5-10秒增加不确定性乐趣。灯光模式切换添加第二个触摸传感器如A4用于切换NeoPixel灯带的动画模式如彩虹、呼吸、跑马灯。交互反馈在电机启动和停止时让CPX板载LED闪烁特定颜色作为提示。机械结构强化轴承升级后轮的竹签轴虽然巧妙但摩擦阻力较大。可以尝试购买微型滚珠轴承镶嵌在纸板轴承座中让后轮运行更顺滑。底盘加固在底板关键受力部位如电机安装处、电池下方内部粘贴冰棍棒或轻木条进行加强。转向功能将前轮中的一个电机换成舵机通过编程控制舵机角度实现小车的左转、右转功能。这需要修改底盘结构和代码逻辑是一个很好的进阶挑战。外观与交互美化个性化涂装用丙烯颜料、贴纸装饰你的冰淇淋车给它起个名字。更多传感器利用CPX自带的传感器比如用光线传感器实现“天黑自动开灯”用加速度传感器实现“撞到东西自动后退”。声音定制在MakeCode中你可以完全自定义播放的旋律甚至录制一段自己的叫卖声需要先将音频转换为特定的代码格式。这个项目从一张图纸、一堆零件开始到最终成为一个活灵活现的互动装置整个过程充满了探索和解决问题的乐趣。它完美地诠释了创客精神想法、动手、调试、分享。最让我有成就感的时刻不是它第一次成功跑起来而是在调试挥手机构时通过一次次微调绳结的位置和代码里的角度参数最终让Adabot的动作变得自然流畅的那一刻。硬件项目的魅力就在于此软件和物理世界通过你的设计紧密耦合每一个参数的改变都带来直观的反馈。希望这份详细的指南和心得能帮助你顺利打造出属于自己的那辆独一无二的创客冰淇淋车。