亲子科技启蒙:用Boson Kit打造智能循光避障小车的完整实践

📅 2026/7/29 16:01:43
亲子科技启蒙:用Boson Kit打造智能循光避障小车的完整实践
1. 项目缘起从“玩”到“学”的亲子科技启蒙“爸爸我们今天玩什么” 这句话几乎成了我和女儿周末下午的固定开场白。作为一个在科技行业摸爬滚打了十几年的从业者我深知“玩”对于孩子认知世界的重要性尤其是当“玩”的对象是那些能点亮他们眼中好奇光芒的东西时。Boson Kit这套模块化的电子积木就是我们近期的“新玩具”。前两次的探索我们搭建了简单的声控灯和光控风扇女儿从最初的“按图索骥”到开始问“为什么”这个过程让我看到了项目式学习PBL在亲子互动中的巨大潜力。这第三次的探索我决定把主导权更多地交给她从一个简单的需求出发看看我们能一起“玩”出什么新花样。这次的目标不再是完成一个预设好的项目而是解决一个她提出的真实问题“爸爸晚上我起来上厕所房间里黑黑的要是我的小夜灯能自己走过来照亮我就好了。” 这个充满童趣的想法恰恰是许多智能家居产品的雏形——一个可移动的、环境感知的照明装置。我们将利用Boson Kit中的核心传感器与执行器模块尝试构建一个简易的“循光避障小车”让它能朝着有人的方向移动并在黑暗中自动点亮。整个过程我会重点分享如何将一个抽象的孩子气的想法拆解成可执行的电子模块组合与逻辑步骤以及在亲子协作中如何引导思考而非直接给出答案。这不仅仅是玩一套玩具更是一次关于问题定义、方案设计和动手验证的完整工程思维启蒙。2. 需求拆解与模块选型把想象落地为电路女儿的需求听起来像是一个魔法但对我们来说需要把它翻译成电子模块能理解的“语言”。我拿出纸笔和她一起画图分析这个过程本身就是一个极好的思维训练。2.1 功能分解我们需要什么首先我们把“会自己走过来照亮我”这个大功能拆解成几个小任务感知人的存在或方向小车需要知道该往哪里走。我们讨论了几种可能声音拍手、运动人体红外或者光线手电筒。女儿选择了光线她觉得用手电筒“召唤”小车更像是在施魔法。于是我们确定了需要一个光线传感器来感知“召唤”光源的方向。在黑暗中自动点亮这要求小车能判断环境明暗。所以我们还需要一个光线传感器可以用另一个来检测环境光强度或者复用同一个传感器但增加判断逻辑。为了简化我建议使用两个光线传感器一个负责寻光方向一个负责感光开关灯。移动能力小车需要底盘、轮子和电机。Boson Kit里有直流电机模块和轮子套件。执行照明需要一个LED灯模块作为光源。大脑与决策所有传感器输入的信息需要处理并指挥电机和灯动作。这就是主控板的工作我们使用的是Boson Kit配套的Micro:bit或Arduino Uno兼容主控板。躲避障碍在移动过程中不能撞到家具。我们需要一个超声波传感器来探测前方距离。通过这样的分解女儿明白了一个复杂的魔法其实是由好几个“小本领”组合起来的。我向她解释了每个模块就像积木的一块有特定的形状接口和功能输入或输出。2.2 模块清单与连接逻辑基于以上分析我们列出了本次项目所需的Boson模块清单主控板Micro:bit主控板 x1输入模块感知世界光线传感器 x2一个用于寻光一个用于环境光检测超声波传感器 x1输出模块改变世界LED灯模块 x1直流电机驱动模块 x1带轮胎的TT马达 x2连接逻辑图用口述和画图方式给女儿讲清楚光线传感器1寻光 -- 主控板 -- 直流电机驱动模块 -- 左/右电机控制转向 光线传感器2感光 -- 主控板 -- LED灯模块控制开关 超声波传感器避障 -- 主控板 -- 直流电机驱动模块 -- 电机控制停止/后退我特别向她强调所有输入模块传感器都连接到主控板标有“P0、P1、P2…”的针脚因为它们向大脑“汇报情况”所有输出模块灯、电机则通过驱动模块也连接到主控板接收大脑的“命令”。电机驱动模块是必须的因为主控板针脚的电流太小像电机这种“大力士”需要专门的“放大器”驱动模块来帮忙。注意在亲子项目中安全永远是第一位的。务必使用Boson Kit配套的电池盒通常为3-6V避免使用电压更高的电源。连接电路时确保电源处于关闭状态。电机驱动模块的连接线序要仔细核对接反可能导致电机不转或反转。3. 机械结构搭建当乐高遇上电子积木Boson Kit的电子模块很好但要让小车跑起来还需要一个身体。我们没有现成的机器人小车底盘但这正是发挥创造力的好机会。我搬出了家里的乐高积木箱决定用乐高作为结构件来搭建车体。这是一个绝佳的跨平台整合实践。3.1 车体设计与电机固定我们设计了一个简单的两层结构底层用乐高底板作为基础平台面积足够放置电池盒和主控板。关键步骤是用乐高积木和轴套将两个TT马达牢固地固定在底板下方左右两侧。这里有个细节两个电机的轴心高度必须保持一致否则小车会跑偏。我们通过叠加乐高薄片来精细调整高度并用积木从两侧夹紧电机外壳防止其转动。上层用乐高柱和另一块小底板搭建一个“上层建筑”用于安装超声波传感器和光线传感器。将光线传感器寻光用安装在一个可以垂直旋转的乐高轴上这样我们可以手动调整其“视野”的俯仰角让它更好地探测前方不同高度的光源。另一个光线传感器感光用则水平朝上安装用来接收天花板反射的环境光。3.2 传感器布局的考量传感器的布局直接影响小车的“智商”超声波传感器必须正前方无遮挡安装在高处探测波束才能覆盖行进路径。寻光光线传感器我们将其安装在车头中央偏高的位置并且使其可以左右轻微摆动后续通过程序实现扫描这样它能比较左右两侧的光强差从而判断光源方向。环境光光线传感器朝上安装避免被车体自身的LED灯干扰更准确地反映房间整体亮度。用乐高搭建的妙处在于所有布局都可以随时调整。我们花了将近一个小时反复试验和加固女儿在这个过程中理解了“结构稳定性”和“功能分区”的重要性。当她看到自己搭建的“丑萌”小车骨架时成就感已经溢于言表。4. 核心逻辑与图形化编程让小车拥有“灵魂”硬件搭建完毕接下来就是赋予小车“灵魂”——编程。对于孩子来说代码是陌生的但逻辑是相通的。我们使用MakeCode图形化编程环境兼容Micro:bit它像搭积木一样拖拽代码块非常适合启蒙。4.1 逻辑流程设计在编程前我和女儿再次梳理了小车的行为逻辑用流程图的方式画出来开始 ├─ 循环执行 │ ├─ 检测环境光是否低于阈值 (传感器2) │ │ ├─ 是点亮LED灯 │ │ └─ 否熄灭LED灯 │ │ │ ├─ 读取前方障碍物距离 (超声波传感器) │ │ ├─ 如果距离 15厘米停车后退一小段然后随机左转或右转 │ │ └─ 否则继续执行寻光逻辑 │ │ │ ├─ 寻光逻辑 (传感器1) │ │ ├─ 读取当前方向光强度 │ │ ├─ 轻微向左转读取光强 │ │ ├─ 轻微向右转读取光强 │ │ └─ 比较三个值朝光最强的方向前进 │ │ │ └─ 延时一小段时间避免动作过于急促 └─ 结束循环这个流程图就是我们的“设计图”。我向女儿解释程序就像一份给小车看的、非常详细的“说明书”告诉它每一步该做什么遇到不同情况该如何选择。4.2 MakeCode关键代码块实现我们一边讨论一边在MakeCode中拖拽代码块。以下是几个核心逻辑的实现1. 环境光控灯这是一个简单的“如果-那么”判断。我们不断读取朝上的光线传感器数值并设定一个阈值比如50。当读数低于50我们认为环境太暗就点亮LED灯否则就熄灭。为了效果柔和我们甚至加入了“渐变点亮”的效果即光线越暗LED灯越亮这涉及到模拟输出PWM的概念我用“水龙头开关拧大拧小”来类比女儿很容易就理解了。2. 超声波避障这是安全底线。我们设置一个循环持续读取超声波传感器测得的距离。如果距离小于15厘米大约一个手掌的长度立刻让两个电机停止等待0.5秒然后让两个电机反转后退1秒再随机选择一个方向转弯。这里的“随机”用了“掷骰子”的代码块女儿觉得非常有趣她说这样小车每次遇到障碍物的反应都会有点不一样更像活的。3. 寻光算法——简单的光电追踪这是最有趣也最具挑战的部分。我们并没有使用复杂的PID算法而是实现了一个“扫描-比较”策略小车先停止读取当前正前方的光强值存入变量中。然后让左轮慢速反转、右轮正转使小车原地左转约20度读取此时的光强存入变量左。接着回正再向右转20度读取光强存入变量右。最后比较左、中、右三个值。如果中最大说明光源就在正前方小车直行。如果左最大说明光源在左侧小车就向左转。如果右最大则向右转。这个算法虽然简单但在光线对比明显的环境下效果出乎意料的好。女儿负责设定扫描的角度和电机速度我们通过多次试验找到了一个既不会转得太晕角度太大又能有效分辨方向角度太小可能分辨不出的平衡点。实操心得在图形化编程中变量的命名可以让孩子来做。女儿把光线值变量命名为“亮晶晶度”把电机速度变量命名为“奔跑力”。这虽然不专业但极大地增加了她的参与感和所有权。调试时我们大量使用了“串口输出数值到电脑屏幕”的功能将传感器读到的“亮晶晶度”实时显示出来这让抽象的数值变成了可视化的反馈孩子能直观地看到“为什么小车认为那边更亮”。5. 联调与问题排查从“能动”到“好用”当所有代码块拼接好下载到Micro:bit打开电源开关的那一刻是最激动人心的。但通常第一次运行都不会完美。我们的初版小车出现了几个典型问题问题一小车在明亮处也亮灯。排查我们检查了环境光传感器的数值输出发现即使是在白天室内读数也只有30多低于我们设定的阈值50。解决这是因为传感器朝上可能受到了车体阴影或颜色影响。我们通过串口数据重新校准发现房间正常光照下读数大约在80-120。于是将阈值从50调整到80。同时我们改进了判断逻辑加入了“滞后区间”以防止灯在阈值附近频繁开关当光强70时开灯90时才关灯。问题二寻光时小车不停“抽搐式”转头。排查观察发现在光源稳定的情况下每次扫描得到的左、中、右三个值差异非常小由于传感器噪声和电机惯性可能导致这次左大一点下次中大一点程序判断不停变化。解决我们引入了“死区”概念。我告诉女儿就像我们用手感觉水温差一两度感觉不出来没必要反应。我们设定一个差值阈值比如10。只有当最大值与第二大的值之差超过10时才执行转向如果差值小于10就认为方向差不多维持原状或直行。这个小小的改动立刻让小车动作稳定了许多。问题三避障后小车有时会陷入“对着障碍物转圈”的循环。排查当小车靠近障碍物时避障逻辑触发后退、转弯。但转弯后可能立刻又检测到同一障碍物的侧面比如桌腿于是再次触发避障形成循环。解决我们改进了避障后的行为逻辑。在后退之后增加了一个“强制前进”的时间。即无论转向哪边都会先直行2秒然后再恢复寻光逻辑。这样确保小车能真正离开障碍物区域。此外我们将超声波检测的循环频率降低了一些避免过于敏感。这个过程是最有价值的“调试”课。女儿从一开始的“怎么又错了”的沮丧慢慢转变为“我们来看看它为什么这样想”的探究心态。每一个问题的解决都让她对传感器、程序和现实世界互动的理解加深一层。6. 优化与创意扩展让项目持续生长基础功能稳定后我们开始思考如何让它变得更好玩、更智能。这开启了项目的“第二阶段”。优化一增加“召唤模式”与“巡逻模式”切换。我们增加了一个Boson按钮模块。按下按钮小车进入“召唤模式”积极执行寻光逻辑寻找手电筒光源。再次按下进入“巡逻模式”此时忽略寻光逻辑只执行避障和环境光控灯在房间里随机漫游通过随机数控制不定时转向。这让小车的“性格”更丰富了。优化二给小车加上“声音表情”。Boson Kit有蜂鸣器模块。我们为不同状态添加了音效启动时是一段欢快的上升音阶遇到障碍时发出“嘀嘀”的警示声找到光源时播放一小段胜利旋律。编程从纯视觉逻辑扩展到了听觉反馈。优化三数据可视化与记录。利用Micro:bit的无线电功能我们尝试将小车传感器读取的光线值、距离值实时发送到另一块静止的Micro:bit上后者再通过串口传到电脑用简单的图表工具如MakeCode的串口绘图器绘制出来。女儿可以看到小车“眼中”的世界是如何变化的这简直像魔法一样将不可见的数据流变成了可见的图案。这些扩展没有在第一次就全部完成而是像游戏解锁新关卡一样在后续的周末中逐个实现。每一个新功能的加入都复习并深化了之前学到的概念。7. 复盘与思考超越项目本身的收获当项目告一段落我和女儿一起回顾了整个历程。这个“玩”出来的小车带给我们的远不止一个会动的玩具。对女儿而言工程思维启蒙她亲身经历了“提出问题 - 分解问题 - 选择工具 - 搭建测试 - 调试优化”的完整流程。这比任何书本上的定义都来得深刻。挫折教育电路接触不良、程序逻辑bug、机械结构散架……这些问题层出不穷。但每一次共同排查、解决问题的过程都让她学会了耐心和坚持明白了“出错是学习的一部分”。跨学科连接她无意中运用了数学比较数值大小、设定阈值、物理光线反射、超声波测距原理、机械结构稳定性和逻辑编程中的条件判断、循环知识。学习不再是孤立的科目而是解决真实问题的工具。成就感与自信从无到有创造出一个能响应她“召唤”的智能体这种强烈的正向反馈是驱动她未来探索更复杂世界的内在动力。对我而言教育视角的转变我从一个“知识传授者”变成了“学习引导者”和“资源提供者”。我的主要工作不再是给答案而是问问题“你觉得为什么它不动了”“我们有什么办法可以知道它‘看’到了多少光”技术祛魅在孩子眼中智能手机、智能音箱的“智能”是神秘的黑箱。通过这个项目她亲手拆解并重组了一个微型的“智能”明白了所有这些酷炫的功能背后都是传感器、程序和执行器在协同工作。技术从魔法变成了可理解、可创造的工具。亲子沟通的新纽带我们拥有了共同的“项目语言”一起为一个小车的bug绞尽脑汁一起为它的一个新功能欢呼。这种基于共同目标的协作比任何刻意的陪伴都更高质量。这个Boson Kit项目第三季始于一个天马行空的想法成于一次次的尝试与调试。它没有做出什么惊世骇俗的产品但它在我和女儿心中种下了一颗种子一颗相信创意可以通过双手实现相信问题可以通过逻辑和工具解决的种子。而这或许就是科技教育或者说亲子共玩最珍贵的价值所在。下一次女儿说想做一个“能自动给阳台花草浇水并唱歌的机器人”我已经开始和她一起画设计图了。