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项目第三季,始于一个天马行空的想法,成于一次次的尝试与调试。它没有做出什么惊世骇俗的产品,但它在我和女儿心中种下了一颗种子:一颗相信创意可以通过双手实现,相信问题可以通过逻辑和工具解决的种子。而这,或许就是科技教育,或者说亲子共玩,最珍贵的价值所在。下一次,女儿说想做一个“能自动给阳台花草浇水并唱歌的机器人”,我已经开始和她一起画设计图了。