1. 项目概述:当micro:bit遇上植物,一堂生动的信息技术实践课
最近在整理高中信息技术课的校本课程资源,发现很多学生对编程和硬件的结合兴趣浓厚,但传统的代码练习又容易让他们感到枯燥。正好手头有几块micro:bit开发板,结合当下流行的智能种植概念,我设计了一个名为“植物管家”的综合实践项目。这个项目不仅仅是点亮几个LED灯,而是让学生亲手搭建一个能监测土壤湿度、自动浇水、并远程提醒的微型智能系统。它完美地将信息技术核心素养中的计算思维、数字化学习与创新落到了实处。
“植物管家”项目的核心,是让学生利用micro:bit这块小巧但功能强大的开发板,结合扩展板和传感器,去解决一个真实世界的问题——如何科学地养护一盆植物。在这个过程中,学生需要理解传感器的工作原理(输入)、掌握条件判断和循环控制(处理)、并驱动水泵和LED等执行器(输出),完整地体验一个信息系统的构建过程。我选择在BXY这款国产的图形化/代码混合编程环境中进行教学,因为它对初学者极其友好,又能平滑过渡到Python代码,非常适合高中课堂的梯度教学。
这个项目大约需要4-6个课时来完成,从硬件连接到逻辑设计,再到调试优化,每一步都充满了探索的乐趣。它不仅教会学生技术,更培养了他们的工程思维和解决实际问题的能力。下面,我就把这个项目的完整设计思路、实操步骤以及我踩过的“坑”和经验心得,毫无保留地分享出来,希望能给同行老师们或感兴趣的爱好者们一些参考。
2. 项目整体设计与教学思路拆解
2.1 核心教学目标与能力培养定位
在设计“植物管家”项目时,我首先明确它不是一个简单的玩具制作,而是一个承载了多重教学目标的载体。在知识层面,学生需要掌握micro:bit的GPIO(通用输入输出)口使用、模拟信号与数字信号的区别、条件判断语句以及无线通信(Radio)的基础概念。在技能层面,重点培养硬件连接、传感器调试、程序逻辑设计和系统集成的能力。
更深层次的,是思维与素养的培养。通过这个项目,我希望学生能建立起“感知-处理-执行”的信息系统基本模型思维。当他们看到土壤湿度传感器传回一个数值,并思考“这个数值代表太干还是太湿?然后我应该让水泵工作多久?”时,计算思维就在具体情境中自然发生了。项目式学习(PBL)的方式,也让数字化学习与创新不再是空话,学生为了让自己“管家”更聪明,会主动去查阅资料、尝试不同的算法(比如不同的浇水阈值),这就是创新的萌芽。
注意:教学重点不应放在让学生记忆某个传感器的接线颜色顺序,而应引导他们理解“为什么这根线要接在3V引脚上?”(供电)、“为什么另一根接在P0口?”(信号读取)。理解原理,才能举一反三。
2.2 硬件选型与成本控制方案
一个适合课堂推广的项目,必须在功能、可靠性和成本之间取得平衡。经过多次实践,我确定了以下硬件清单,每套成本可控制在百元以内,非常适合小组教学。
- 核心主控:BBC micro:bit V2。这是项目的“大脑”。选择V2版本是因为它内置了麦克风和扬声器,我们可以让它在土壤过干时发出提示音,增加互动性。其板载的5x5 LED点阵、两个按键和蓝牙/无线电功能都是绝佳的教学资源。
- 传感器:土壤湿度传感器(模拟量)。这是项目的“感官”。务必选择输出模拟信号的型号,它能够返回一个连续的电压值(在micro:bit上被映射为0-1023的数值),这样学生才能观察到土壤从湿到干过程中数值的连续变化,理解模拟量的概念。避免使用只有“干/湿”两种状态的数字传感器,它不利于教学展开。
- 执行机构:微型潜水泵与继电器模块。这是项目的“手”。micro:bit的IO口驱动能力很弱,无法直接驱动水泵。因此需要用一个继电器模块作为“电子开关”。micro:bit通过一个IO口输出高/低电平来控制继电器的通断,继电器再接通或切断水泵的电源(通常用额外的5V或3.7V电池盒供电)。这个“小电流控制大电流”的过程,是理解电路驱动和电气隔离的经典案例。
- 扩展与供电:Edge Connector扩展板与电池盒。micro:bit的引脚是金手指边缘接口,直接接线容易接触不良且易损坏。一块带螺丝接线柱的扩展板是必需品,它能极大提升连接成功率和课堂效率。供电方面,除了micro:bit本身的USB或电池供电外,务必为水泵准备独立的电池盒,避免电机工作时产生的电流波动导致micro:bit重启。
2.3 软件环境:为什么选择BXY?
市面上针对micro:bit的编程环境很多,如MakeCode、Mu、Thonny等。我坚持在高中课堂使用BXY(一款国产的Python IDE),主要基于以下三点考量:
首先,梯度学习路径清晰。BXY同时支持图形化编程(类似积木块)和Python代码编程,且两者可以无缝切换。对于零基础或基础薄弱的学生,可以从图形化拖拽开始,快速搭建功能原型,建立信心。当他们熟悉逻辑后,可以一键切换到代码视图,看到对应的Python语句,从而实现从图形化思维到文本编程思维的平滑过渡。这是迈向专业编程的必经之路。
其次,贴近真实开发环境。BXY的代码编辑界面更接近专业的IDE,有代码高亮、语法提示、文件管理等功能。学生在这里写的Python脚本,可以直接保存为.py文件,这种体验比在网页积木环境中更“正式”,更能让学生感受到自己是在进行“真正的编程”。
最后,调试与交互方便。BXY的串口助手功能强大,可以实时打印传感器数据,这是调试过程中不可或缺的“眼睛”。学生可以一边改变土壤湿度,一边观察串口输出的数值变化,直观地建立物理量与数字量之间的对应关系。这种即时反馈对保持学习兴趣至关重要。
3. 硬件连接详解与电路原理剖析
3.1 系统连接图与信号流分析
整个“植物管家”的硬件系统,其信号流可以清晰地分为三条主线:供电线、信号输入线、控制输出线。理解这个框架,连接时就不会混乱。
供电系统:
- Micro:bit及其扩展板:由一块3V纽扣电池或USB线供电。
- 继电器模块:通常有VCC、GND、IN三个引脚。VCC和GND需要接到micro:bit扩展板的3V和GND引脚上,目的是让继电器内部的逻辑电路与micro:bit共地,并获取控制电源。
- 水泵:由独立的电池盒(如3节5号电池提供的4.5V)供电。水泵的正负极接到继电器模块的“常开(NO)”和“公共端(COM)”引脚上。
信号输入回路(土壤湿度传感器):
- 传感器一般有三根线:VCC(电源正极)、GND(电源负极)、AO(模拟信号输出)。
- VCC接扩展板3V,GND接扩展板GND,为传感器供电。
- 关键的一步:AO线接扩展板上的一个支持模拟输入的引脚,例如P0。这根线会将传感器探测到的土壤电阻变化,转化为电压变化,传递给micro:bit的ADC(模数转换器)。
控制输出回路(Micro:bit -> 继电器 -> 水泵):
- 从micro:bit扩展板上选择一个数字输出引脚,例如P1,用一根杜邦线连接到继电器模块的IN(信号输入)引脚。
- 当程序设置P1口输出高电平(数字1,约3V)时,继电器吸合,其内部的“常开(NO)”触点与“公共端(COM)”接通,从而构成了水泵供电电池盒的完整回路,水泵开始工作。
- 当P1口输出低电平(数字0,0V)时,继电器断开,水泵断电停止。
实操心得:连接时务必“断电操作”!尤其是接继电器和水泵电池盒时。建议所有连线都用不同颜色的杜邦线,例如红色接正极(VCC、3V),黑色或棕色接负极(GND),黄色或绿色接信号线(AO、IN)。颜色管理能极大降低接线错误率,在排查故障时也能一眼看清线路走向。
3.2 核心元件工作原理浅析
仅仅会连接是不够的,向学生(哪怕是浅显地)解释核心元件的工作原理,能让他们知其然更知其所以然。
土壤湿度传感器如何工作?我们可以把它想象成一块“会变形的电阻”。它的探针部分相当于两个电极插入土壤。土壤中含水量高时,离子多,导电性好,两个电极之间的电阻就小;土壤干燥时,电阻就大。传感器内部电路测量这个电阻,并将其线性地转换为一个电压信号(例如,0V代表非常湿,3V代表非常干)。micro:bit的ADC将这个电压信号量化为一个0-1023之间的数字。数值越小,代表土壤越湿。这个反向关系一定要让学生通过实测记住。
继电器为何是必需的?这是一个讲解“驱动能力”和“电气隔离”的好机会。Micro:bit的GPIO引脚只能提供大约5mA的电流,而一个小水泵的工作电流可能高达100-200mA。如果直接连接,要么推不动水泵,要么会烧毁micro:bit脆弱的芯片。继电器就像一个由微弱电流(来自P1口)控制的“闸刀开关”,这个“闸刀”可以接通或切断另一个独立的大电流电路(水泵电路)。两个电路在物理上是隔离的,只有磁场的耦合,这就保护了micro:bit。
4. 编程逻辑设计与BXY环境实操
4.1 项目程序框架搭建
在动手写代码前,先和学生一起梳理程序逻辑框架,用流程图或伪代码表示出来,这是培养计算思维的关键一步。植物管家的核心逻辑是一个永恒的循环:
- 读取P0引脚上的模拟值(土壤湿度值)。
- 判断这个值是否大于我们设定的“干燥阈值”(例如,当数值大于800,表示土壤太干了)。
- 如果“是”,则进行以下操作:
- 启动浇水:设置P1引脚为高电平,打开继电器和水泵。
- 等待一段时间(例如2秒),让水泵工作一会儿。
- 停止浇水:设置P1引脚为低电平。
- (可选)在LED点阵上显示一个水滴图案,或者发出提示音。
- 如果“否”,则什么也不做,或者在LED上显示一个笑脸,表示状态良好。
- 等待一段时间(例如10分钟),然后回到第1步,继续监测。
这个“感知-判断-执行-等待”的循环,是绝大多数自动控制系统的核心逻辑。在BXY中,我们可以用while True:循环来实现。
4.2 BXY图形化到Python代码的渐进实现
第一阶段:图形化快速原型(适用于入门)
在BXY中切换到图形化编程模式,我们可以像搭积木一样构建程序:
- 从“循环”类别中拖出
无限循环积木。 - 在循环内,从“引脚”类别拖出
读取模拟引脚 P0积木,这个值就是湿度读数。 - 使用
如果...那么...积木进行判断。判断条件使用逻辑类别中的大于积木,左边是刚才读取的模拟值,右边手动填入阈值数字(比如800)。 - 在“那么”分支里,放入
数字写入引脚 P1 为 1(高电平开水泵),然后放入暂停(ms) 2000(浇水2秒),再放入数字写入引脚 P1 为 0(关水泵)。 - 还可以在“那么”分支里加入
显示图标积木显示水滴,在“否则”分支显示笑脸。
图形化搭建完成后,可以一键切换到代码视图,学生将看到对应的Python代码,这是一个非常直观的学习过程。
第二阶段:Python代码优化与功能增强
切换到代码模式后,我们可以对程序进行“精装修”,引入变量、函数等概念,让代码更专业、更易维护。
# 首先导入必要的库 from microbit import * import music # 定义引脚和阈值(使用变量,方便调整) soil_pin = pin0 # 土壤湿度传感器接在P0 pump_pin = pin1 # 继电器控制线接在P1 dry_threshold = 800 # 干燥阈值,需根据实际传感器校准 water_duration = 2000 # 每次浇水时长(毫秒) check_interval = 600000 # 检查间隔(10分钟,毫秒) def water_plant(): """执行一次浇水操作""" pump_pin.write_digital(1) # 打开水泵 display.show(Image.ARROW_S) # 显示向下箭头,表示浇水 sleep(water_duration) # 持续浇水 pump_pin.write_digital(0) # 关闭水泵 display.show(Image.YES) # 显示对勾,表示浇水完成 music.play(['C4:4'], wait=False) # 播放一个短提示音 # 主循环 while True: # 1. 读取土壤湿度 moisture_value = soil_pin.read_analog() # 可选:将读数通过串口打印出来,用于调试校准 # print("Moisture:", moisture_value) # 2. 判断并执行 if moisture_value > dry_threshold: # 土壤太干,需要浇水 water_plant() else: # 土壤湿度合适 display.show(Image.HAPPY) # 显示笑脸 # 3. 等待下一次检查 sleep(check_interval)这段代码比图形化导出的版本结构更清晰。我们定义了函数water_plant()来封装浇水动作,这样主循环的逻辑看起来非常简洁。使用了变量来存储引脚和参数,以后要修改阈值或浇水时间,只需要修改变量定义处即可,避免了“魔法数字”散落在代码各处。
4.3 关键参数校准与调试技巧
程序写好了,但直接运行很可能不工作或行为异常,因为阈值参数dry_threshold需要根据你的具体传感器和土壤进行校准。这是项目中最具实践性的环节。
校准步骤:
- 将传感器插入一盆你认为湿度刚合适的土壤中。
- 在BXY中编写一个简单的测试程序,只做一件事:循环读取P0的模拟值并通过串口打印出来。
- 打开BXY的串口助手,观察输出的数值。这个数值就是当前“合适湿度”的参考值A。
- 将传感器拔出来在空气中晾干,再次观察串口数值。这个数值就是“极度干燥”的参考值B。
- 你的浇水阈值
dry_threshold应该设定在A和B之间,更靠近A一些。例如,A是400,B是950,那么阈值可以设为700。这意味着当土壤湿度数值超过700(比“合适”状态干燥很多)时,系统才会启动浇水。
注意事项:不同品牌的土壤湿度传感器,其量程和线性度可能不同。甚至同一品牌的不同个体之间也会有差异。因此,每套设备都必须单独校准,不能直接套用别人的阈值。这是工程实践中“参数标定”概念的微型体现。
调试技巧实录:
- 水泵不工作:首先检查继电器上的指示灯。当micro:bit应该输出高电平时,继电器指示灯应该亮起。如果灯不亮,问题在micro:bit到继电器的控制回路(程序逻辑、接线、引脚定义)。如果灯亮了但水泵不转,问题在继电器到水泵的供电回路(电池盒电量、接线是否接到NO和COM、水泵本身是否完好)。
- 传感器读数不变或异常:首先检查接线是否牢固,特别是扩展板上的螺丝是否拧紧。然后用万用表测量传感器AO引脚对GND的电压,在空气和水中电压应有明显变化。如果没有,可能是传感器损坏。
- Micro:bit无故重启:极有可能是水泵电机启动时的瞬间大电流,通过电源线干扰了micro:bit。务必确保水泵使用独立的电池盒供电,与micro:bit的电源完全分开。
5. 功能扩展与项目升华
基础功能实现后,我们可以引导学生思考如何让这个“植物管家”更智能、更人性化,这是项目式学习的升华阶段。
5.1 数据可视化与历史记录
目前的系统只能做出即时反应。我们可以引导学生思考:如何知道植物过去一周的湿度变化趋势?这引入了“数据记录”的概念。 我们可以利用micro:bit有限的存储空间,或者更进一步,通过其无线电(Radio)功能,将数据实时发送到另一块作为“数据接收站”的micro:bit上,再通过串口上传到电脑,用Python的Matplotlib库绘制成图表。这个拓展项目能让学生初步接触物联网(IoT)和数据可视化的概念。
5.2 引入环境光传感器实现智能模式
植物不仅需要水,也需要光。我们可以增加一个环境光传感器(接在另一个模拟引脚,如P2)。然后修改程序逻辑:只有在环境光线充足(白天)且土壤干燥时,才进行浇水。因为夜晚植物蒸腾作用弱,浇水可能导致烂根。这个简单的“与”逻辑,能让系统决策更符合自然规律,也让学生理解多传感器信息融合的价值。
5.3 利用板载资源增强人机交互
Micro:bit V2的板载资源是宝库。我们可以用加速度计实现一个有趣的功能:当用户拿起花盆查看时(检测到晃动),系统在LED点阵上以条形图的形式快速显示当前土壤湿度,一目了然。还可以用蓝牙功能,尝试与手机App进行简易通信,实现远程状态查看。这些扩展不仅能增加项目的趣味性,更能让学生深入探索micro:bit的强大功能。
6. 教学实施建议与常见问题排坑指南
6.1 课堂组织与课时安排建议
将整个项目分解为3个阶段,每阶段1-2课时,适合在高一或高二的信息技术选修模块中开展:
第一阶段:认知与设计(1课时)。展示成品,讲解项目背景和核心原理。分组讨论,绘制系统框图和程序流程图。分发硬件,认识各个元件。
第二阶段:构建与实现(2-3课时)。指导学生完成硬件连接,强调安全规范。在BXY中从图形化编程开始,实现基础浇水功能。重点进行传感器阈值校准实验。
第三阶段:调试与拓展(1-2课时)。各组调试自己的系统,解决遇到的实际问题。鼓励完成基础功能的小组进行功能扩展(如增加光控、优化显示等)。最后进行成果展示与交流。
6.2 常见问题速查与解决方案
以下是我在多次教学中学生最容易遇到的问题汇总:
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 上传程序后micro:bit无反应 | 1. 供电问题 2. 程序未成功烧录 | 1. 检查USB线连接或电池安装。 2. 在BXY中点击“烧录”后,观察micro:bit背面黄色指示灯是否快速闪烁(表示在传输),传输完成后会重启。确认烧录成功的提示。 |
| 串口助手读不到传感器数据 | 1. 接线错误或松动 2. 引脚定义错误 3. 串口未正确打开 | 1. 重新拧紧扩展板接线柱。 2. 检查代码中 soil_pin = pin0的0是否与实际连接的引脚(如P0)一致。3. 在BXY中点击“串口”按钮打开助手,并确认波特率设置正确(micro:bit默认115200)。 |
| 继电器指示灯亮但水泵不转 | 1. 水泵供电电池没电 2. 继电器接线错误 3. 水泵损坏 | 1. 更换水泵电池盒电池。 2. 确认水泵线接在继电器的“NO”和“COM”端子上。 3. 将水泵两极直接接触电池盒正负极,测试水泵是否正常转动。 |
| 土壤一直很湿但系统仍在浇水 | 阈值dry_threshold设置过低 | 重新校准传感器。将传感器插入湿土中,读取数值,将阈值调整为高于此数值一个安全余量(例如湿土读数为300,阈值可设为500)。 |
| Micro:bit在浇水时突然重启 | 水泵电机干扰主控电源 | 这是最关键的一条:必须为水泵准备独立的电池盒供电,确保与micro:bit的电源完全分离。这是稳定运行的基石。 |
6.3 项目评价与反思
评价这个项目,不应只看最终成品是否成功浇水。我更看重过程性评价:小组的流程图是否清晰?接线是否规范安全?调试过程中排查问题的逻辑是否合理?实验记录(特别是阈值校准数据)是否完整?在拓展环节是否有创新的想法?这些才是信息科技核心素养的体现。
回顾整个项目,最让我欣慰的不是学生做出了一个能工作的装置,而是看到他们面对水泵不转、读数不准时,从一脸茫然到主动拿起万用表、分析流程图、讨论可能原因的那种转变。这个小小的“植物管家”,就像一把钥匙,为他们打开了一扇通往物理世界与数字世界融合的大门。它告诉学生,技术不是漂浮在屏幕上的抽象代码,而是可以触摸、可以创造、可以解决真实问题的力量。而这,正是信息技术教育的意义所在。