资讯动态

基于Circuit Playground Express的智能小船DIY:从传感器到自动航行

发布时间:2026/8/20 0:50:47 来源:尧图企业网站定制
1. 项目概述用牛奶盒与电路板打造智能小船如果你手头正好有一个Circuit Playground Express开发板又想让家里的孩子或者你自己那颗爱玩的心体验一下电子与编程的乐趣那么这个“酪乳船”项目再合适不过了。它的核心创意极其简单利用一个随处可见的一夸脱约946毫升牛奶纸盒作为船体通过Circuit Playground Express控制一个微型舵机来驱动螺旋桨制作一艘能自动下水航行的小船。整个项目的成本可以压得非常低除了核心的电路板大部分材料都来自日常回收或手工材料非常适合作为入门级的STEM教育项目或周末亲子手工。这个项目最吸引人的地方在于它的“情境感知”能力。通过板载的加速度计小船可以感知到自己被“投入”水中的瞬间然后自动开始划水前进。更进一步你还可以通过红外遥控或者蓝牙如果搭配了蓝牙模块来控制它实现前进、后退、转弯。整个制作过程融合了物理结构搭建、基础电路连接和图形化编程MakeCode是一次完整的“造物”体验。它不仅是一个玩具更是一个生动的教学工具让你在实践中理解传感器、执行器与程序逻辑是如何协同工作的。2. 核心硬件解析与选型考量2.1 船体材料为什么是牛奶盒选择一夸脱牛奶纸盒作为船体是经过多方面权衡的明智之举。首先尺寸与容积完美。这个尺寸的纸盒内部空间足以轻松容纳Circuit Playground Express、电池、舵机以及必要的连线同时又不会太大非常适合在浴缸、水盆或小型充气泳池中试航。其次材料易得且成本为零。牛奶是家庭常备饮品其包装盒是典型的利乐包由纸、塑料和铝箔复合而成具有一定的防水性和结构强度。最后易于加工。纸盒材质可以用普通剪刀或美工刀轻松裁剪、折叠和粘贴非常适合快速原型制作。注意务必使用彻底清洗并晾干的牛奶盒。残留的奶渍不仅会产生异味更可能因潮湿导致内部电子元件短路。清洗后最好在通风处放置一两天确保内部完全干燥。2.2 核心大脑Circuit Playground Express详解Circuit Playground Express后文简称CPX是Adafruit推出的一款功能极其丰富的微控制器开发板它之所以成为本项目的不二之选原因如下高度集成开箱即用CPX板载了10个可编程RGB NeoPixel LED、一个运动传感器加速度计陀螺仪、一个温度传感器、一个光传感器、一个声音传感器、一个迷你扬声器甚至还有一个红外接收器和发射器。这意味着我们无需焊接任何额外的传感器就能实现“落水检测”通过加速度计和“红外遥控”通过红外收发器。多重编程方式它支持MakeCode基于块的图形化编程、CircuitPython基于Python的文本编程和Arduino IDE。对于初学者和快速原型开发MakeCode的拖拽式编程体验非常友好这正是本项目教程的基础。丰富的输入输出接口板子边缘有一系列“金手指”焊盘标有A0-A7它们既可以作为模拟输入也可以作为数字输入/输出甚至有些支持PWM脉冲宽度调制输出用于控制舵机。其中A1和A2这两个引脚被特别设计为在MakeCode中可方便地连接舵机。内置防水设计考虑虽然CPX本身不防水但其元件全部位于板子正面且没有突出的插针使用的是焊盘这为我们后期做简单的防水处理提供了便利。2.3 动力系统微型舵机与螺旋桨小船的动力来自一个微型舵机如SG90型号。舵机通常用于模型控制它能根据接收到的PWM信号精确地旋转到指定角度。在本项目中我们并不需要它进行角度定位而是通过编程让它连续旋转从而驱动连接的螺旋桨。舵机选型要点扭矩微型舵机如9g舵机的扭矩足够推动小型纸船在水面航行。工作电压常见微型舵机工作电压为4.8V-6V。CPX的逻辑电压是3.3V但其Vout引脚或通过电池可以提供更高的电压来驱动舵机。连续旋转改装标准舵机有角度限制0-180度。你需要一个“连续旋转舵机”或者动手改装一个标准舵机通常涉及移除内部的定位电位器和限位齿轮有一定风险且可能损坏舵机。强烈建议直接购买“连续旋转舵机”省时省力。螺旋桨与连接你需要一个小型塑料或尼龙螺旋桨以及一段细轴如牙签、截短的回形针或专用的舵机轴延长杆将螺旋桨与舵机的输出轴连接起来。连接处可以使用热熔胶或强力胶固定确保同心度以减少振动。2.4 能源方案电池与电源管理电子系统需要独立供电。有两种主流方案3xAAA电池盒带开关和JST接口这是最简单廉价的方案。三节碱性AAA电池提供约4.5V电压可以直接为CPX供电并通过CPX的Vout引脚为舵机供电。优点是随处可得成本低。3.7V锂聚合物电池LiPo这是更推荐、更专业的方案。一块400mAh的LiPo电池体积小、重量轻、容量足且电压3.7V与CPX的VBAT输入完美匹配。CPX板载了锂电池充电管理芯片可以通过USB口直接为电池充电非常方便。对于舵机虽然3.7V略低于其典型工作电压但微型舵机通常仍能工作只是转速和扭矩会略有下降。如果希望舵机全力工作可以考虑使用一个微型升压模块将电压升至5V但这会增加复杂度。电源连接关键无论使用哪种电池都通过一个带开关的JST PH 2-pin延长线连接到CPX的JST电池接口。这个开关至关重要它让你在不使用时彻底断开电池防止电池缓慢放电或程序意外运行导致“幽灵”耗电。永远不要在电池持续连接的情况下进行编程或调试。3. 船体制作与电子设备安装详解3.1 牛奶盒的结构改造船体改造的目标是创造一个干燥、稳固的舱室来安置电子设备并在尾部为螺旋桨提供安装位置。清洁与干燥如前所述这是第一步也是最重要的一步。开口设计将牛奶盒倒置原开口朝下。在盒子侧面的上部这将成为船体的甲板部分用美工刀切割一个长方形的开口。这个开口要足够大能让你伸手进去布置电路和电池但又不能太大以免影响结构强度。建议开口尺寸约为盒子长度的1/3。防水舱盖制作从废弃的牛奶盒或其他硬质塑料包装如饮料瓶上剪下一块比开口大的塑料片作为舱盖。在舱盖边缘和船体开口边缘粘贴泡沫双面胶带。这种胶带具有一定的厚度和弹性当舱盖压紧时能形成一道有效的防水屏障。这是低成本防水的关键技巧。在舱盖的一端用胶带做一个“铰链”方便反复开合。舵机安装座与尾轴孔用瓦楞纸板或轻木片制作一个小的L形支架。将舵机用扎带或热熔胶固定在这个支架上。在牛奶盒尾部与开口相对的一端的底部中心位置小心地钻或戳一个小孔用于穿过舵机的输出轴。将装有舵机的支架从内部用热熔胶或强力胶固定在尾部的内壁上确保舵机轴对准尾部的孔并穿出。关键密封舵机轴与纸盒孔洞之间必然存在缝隙。这是主要的进水点。处理方法是在内部用大量的热熔胶或防水硅酮密封胶在舵机轴周围和支架与船体的接缝处堆砌一个“密封坝”彻底封死所有可能进水的路径。操作时需小心避免胶水渗入舵机齿轮内部。3.2 电路连接与布局正确的电路连接是项目成功的基础。遵循“先信号后电源”的原则进行连接。舵机连接连续旋转舵机通常有三根线棕色GND、红色VCC/V、橙色信号线。使用鳄鱼夹转杜邦母头线进行连接无需焊接非常适合原型测试。将舵机的棕色线GND连接到CPX上的任何一个GND焊盘。将舵机的红色线VCC连接到CPX上标有Vout的焊盘。Vout引脚直接来自电池电压能提供比3.3V逻辑电压更强的驱动能力。将舵机的橙色线信号连接到CPX的A1或A2引脚。在MakeCode中这两个引脚有专门的舵机控制积木块。电池连接将带开关的JST延长线公头插入CPX的JST电池接口。注意正负极方向通常红色线为正极。务必先关闭开关再将电池插到延长线的母头上。内部布局与固定将CPX用双面泡棉胶固定在船体内部靠近中心的位置确保其上的加速度计通常位于板子中央能灵敏地感知船体的运动。用扎带或胶带整理好导线避免它们缠绕或拉扯到舵机轴。电池可以放在船体底部起到压舱物的作用帮助稳定船身。用胶带或魔术贴固定。4. MakeCode编程逻辑深度解析我们将编程分为两个递进的等级从全自动到遥控逐步增加复杂性。4.1 Level 1自由落体启动逻辑这个级别的目标是实现“一触水即启动”。我们利用CPX内置的加速度计来检测“失重”或“冲击”瞬间。核心原理当船被拿起并投入水中时会经历一个短暂的、加速度变化的瞬间。我们可以通过监测加速度计的合成加速度值或Z轴加速度来判断这一事件。MakeCode具体实现步骤初始化设置打开MakeCode for Adafruit网站新建一个项目选择Circuit Playground Express作为硬件。在当开机时积木块中设置舵机连接引脚例如A1。使用伺服 写入 引脚 A1 到 90。对于连续旋转舵机90度位置通常对应“停止”。你需要通过测试校准这个“中点值”可能是在88到92之间。可以顺便设置一个开机灯光效果比如显示彩虹动画提示设备已上电。“落水”检测逻辑我们需要一个持续运行的判断循环。拖入一个无限循环积木块。在循环内使用如果...那么进行条件判断。条件是什么我们可以使用加速度 强度积木块它返回的是三轴加速度的合成值单位是毫重力加速度mG。在静止状态下这个值约为1000mG1G。当自由下落时这个值会接近0当被快速投入水中受到冲击时这个值会先剧烈变化。一个简单的判断条件是如果 加速度 强度 500 那么。当检测到失重值变小时触发动作。但是仅一次读数可能误触发。更稳健的方法是设置一个“标志变量”和“延时触发”。在当开机时里创建一个变量命名为inWater 设置为false。在循环中判断如果 加速度 强度 500 且 inWater false 那么。当条件满足时首先将inWater设置为true然后启动舵机伺服 写入 引脚 A1 到 180180通常对应全速正转需测试校准。为了让船持续游动一段时间可以加入一个暂停 5000 毫秒5秒。5秒后停止舵机写回90。此时不要将inWater重置为 false。否则船在水面晃动时可能再次触发。我们设计成一次触发运行一次直到被捞出水面重置。重置机制如何让船准备好下一次航行我们利用“按下按钮”作为重置信号。在无限循环内再添加一个判断如果 按钮 A 被按下 那么。在这个判断里将inWater变量重新设置为false同时可以点亮所有LED为绿色提示重置成功。代码逻辑流程图文字描述 开机 → 初始化舵机停止变量inWaterfalse → 进入主循环 → 持续检测加速度强度 → 若强度500且inWater为false → 设定inWatertrue启动舵机前进5秒后停止 → 循环继续但因此时inWater为true不再触发启动 → 当用户按下按钮AinWater被重置为false等待下一次投掷。4.2 Level 2红外遥控升级在Level 1的基础上我们增加红外遥控功能实现手动控制。这需要用到CPX的红外接收器位于板子中央。红外遥控器可以使用任何常见的家电红外遥控器或者另一个CPX作为发射器。每个按键按下时会发送一个特定的红外码。编程思路在当开机时块中除了初始化舵机还需要初始化红外接收使用红外 连接接收器 引脚 A8CPX的红外接收器固定连接在A8。我们需要记录遥控器按键的编码。拖入当红外接收到数据的事件积木块。按下遥控器上的一个键比如“音量”作为前进MakeCode编辑器下方控制台会显示接收到的红外码值一个十六进制数如0xFF629D。记下这个值。在当红外接收到数据块内使用如果...那么...否则如果链来判断接收到的红外码。如果 红外接收数据 0xFF629D 那么-伺服 写入 引脚 A1 到 180前进否则如果 红外接收数据 0xFFA857 那么假设“音量-”为后退-伺服 写入 引脚 A1 到 0后退需测试校准否则如果 红外接收数据 0xFFC23D 那么假设“暂停”为停止-伺服 写入 引脚 A1 到 90停止此时Level 1的自动触发逻辑仍然可以保留形成“自动手动”的双模式。你可以在自动触发后用遥控器随时接管控制。5. 防水处理、测试与调试实录5.1 进阶防水技巧基础的泡沫胶带密封对于短暂的浴缸测试可能足够但若要更可靠可以考虑电子元件涂层使用电路板专用防水胶如硅酮基保形涂料或透明指甲油。用小刷子将涂层仔细涂抹在CPX和舵机的电路部分避开按钮、传感器、USB口和舵机转轴。这能防止因冷凝或轻微溅水造成的短路。接口密封对于鳄鱼夹与杜邦头的连接处可以点一滴热熔胶包裹。舵机导线与CPX焊盘的连接点同样处理。舱盖加压测试关闭舱盖前在船内放入一些干燥的纸巾。将船放入水中几分钟后取出打开检查纸巾是否潮湿。这是检验防水效果最直观的方法。5.2 下水前陆地测试清单切勿直接下水按顺序完成以下测试电源测试连接电池打开开关。CPX上的电源LED红色应亮起NeoPixel LED可能执行开机动画。舵机测试使用MakeCode编写一个简单测试程序例如当开机时 - 伺服 写入 A1 到 180 暂停 1秒 到 90。下载到CPX后观察舵机是否转动一秒后停止。借此机会校准“停止”的中点值可能是88, 90, 92等。传感器测试下载Level 1的程序。拿起CPX或整个船体快速模拟向下投掷的动作观察舵机是否启动。按下按钮A观察是否重置如LED变绿。红外测试下载Level 2的程序。用遥控器对准CPX中央的红外接收器按下设定好的按键测试前进、后退、停止功能是否正常。5.3 常见问题与排查技巧问题舵机不转或抽搐。排查首先检查电源。用万用表测量连接舵机VCC和GND之间的电压在舵机尝试转动时是否跌落到很低如低于3V。这可能是电池电量不足或电池盒接触不良。检查连接确保鳄鱼夹咬合牢固没有虚接。特别是GND线接触不良是常见问题。检查程序确认MakeCode中设置的舵机引脚A1/A2与实际连接一致。确认写入的数值是否正确0 90 180需要根据你的舵机实测校准。问题落水自动启动不灵敏或误触发。排查调整“落水”检测的阈值。将加速度 强度 500中的500调低如300以减少误触发比如正常晃动或调高如700使其更灵敏。可以在MakeCode中使用显示数字 加速度 强度并将数值通过串口输出到控制台观察船在不同状态下的实际读数从而确定最佳阈值。优化逻辑采用更复杂的判断例如“连续N次检测到加速度低于阈值”才判定为落水这能有效过滤单次抖动。问题红外遥控不起作用或距离很短。排查确保红外接收器CPX板中央那个黑色的小方块前方没有被遮挡。纸盒的塑料窗口如果是深色或不透红外光的材料会严重影响信号。可以开一个透明的小窗或用透明的塑料片覆盖。检查代码确认红外接收数据码值是否正确。不同遥控器、不同按键的码值不同务必使用控制台读取的实际值。环境光干扰强烈的日光或某些LED灯可能包含红外光谱干扰接收。尝试在光线较暗的环境下测试。问题船在水中打转或跑偏。排查这是物理问题。确保螺旋桨安装居中且平直。船体重心可能偏向一侧尝试调整电池和CPX在船内的左右位置使其平衡。检查舵机中位确保“停止”信号真的让螺旋桨静止。如果中位不准即使没有遥控指令螺旋桨也会缓慢转动导致船自旋。问题航行一段时间后停止响应。首要怀疑对象电池电量耗尽。锂聚合物电池在电压过低时CPX会自动关机以保护电池。AAA电池电量不足时电压下降会导致舵机无力甚至CPX重启。其次检查所有防水密封处特别是舵机轴处是否有水渗入导致电路短路或腐蚀。立即断电彻底拆开并烘干所有部件。这个项目从构思到实现充满了动手的乐趣和解决问题的挑战。它完美地诠释了“创客”精神利用简单的材料和技术创造出有趣的智能交互作品。当你看到自己亲手制作的小船在浴缸里划开水波按照你的指令或自动地航行时那种成就感是无可替代的。更重要的是在这个过程中积累的硬件连接、传感器应用和逻辑编程的经验会成为你探索更复杂项目的坚实基石。不妨从这艘小小的“酪乳船”开始扬帆驶入更广阔的电子制作与编程海洋吧。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价