1. 项目概述:当Scratch遇上Micro:bit
如果你玩过Scratch,也听说过Micro:bit这块神奇的小板子,那你一定想过一个问题:能不能用Scratch那种拖拖拽拽的积木,去控制Micro:bit上的LED点阵、按钮和传感器,让它动起来、亮起来,甚至感知世界?答案是肯定的,而且这正是“Scratch3.0使用Micro:bit”这个项目最吸引人的地方。它把图形化编程的直观易用,和物理硬件的真实交互完美结合,让编程从屏幕里的虚拟动画,延伸到可以触摸、可以互动的现实世界。无论是教育者想设计一堂生动的创客课,还是家长想带孩子入门编程和电子,亦或是爱好者想快速验证一个交互点子,这个组合都是一个绝佳的起点。
简单来说,这个项目就是搭建一个桥梁,让你在Scratch 3.0的在线或离线编辑器中,通过添加一个特殊的扩展插件,就能用编程积木直接向连接的Micro:bit发送指令,同时也能读取Micro:bit上传感器传回的数据。你不再需要先学习复杂的文本编程语言(比如MicroPython或JavaScript),就能让Micro:bit根据你的创意做出反应。比如,你可以编一个游戏,用晃动Micro:bit来控制Scratch里的小猫跳跃;或者做一个温度计,让Micro:bit测量室温,然后在Scratch舞台上用柱状图动态显示。它的核心价值在于降低了物理计算的门槛,让创意能更快地转化为可交互的原型。
2. 环境搭建与连接原理全解析
要把Scratch 3.0和Micro:bit连起来,可不是简单插上线就行。这背后有一套清晰的软件和通信流程。理解这个原理,能帮你避开很多连接上的坑。
2.1 核心组件与通信链路拆解
整个系统由三部分组成:Scratch 3.0编辑器、连接代理程序和Micro:bit硬件。它们之间的关系,就像一场需要翻译的跨国会议。
Scratch 3.0编辑器:这是你的“指挥中心”。你在这里用积木编写逻辑。但原生的Scratch并不认识Micro:bit,所以你需要加载一个叫“Micro:bit”的扩展。这个扩展提供了一系列新的积木,比如“当按钮A被按下”、“显示图案❤️”、“设置引脚P0输出为高电平”等。
连接代理程序:这是至关重要的“翻译官”和“信使”。因为Scratch 3.0通常运行在浏览器中,通过WebSocket协议通信;而Micro:bit通过串行端口(Serial Port,即我们常说的COM口)与电脑连接。两者语言不通,协议不同。连接代理程序(如官方推荐的
scratch-link)就负责居中协调。它会在你的电脑后台运行,一方面通过WebSocket与Scratch编辑器对话,另一方面通过串口与Micro:bit对话,实现协议的转换和数据的中转。Micro:bit硬件:这是最终的“执行者”。它需要运行一个特殊的固件程序。这个固件就像一个“接线员”,时刻准备接收从串口传来的、由连接代理转发过来的Scratch指令,并立即执行(如点亮LED);同时,它也会把传感器数据(如温度、加速度)打包,通过串口发回。
整个数据流是这样的:你在Scratch中拖拽一个“显示图案”积木并点击执行 -> Scratch扩展通过WebSocket将指令发送给本机运行的scratch-link->scratch-link将指令翻译成Micro:bit能理解的串口数据格式,并通过USB线发送到指定的COM口 -> Micro:bit上的固件接收并解析指令,控制5x5 LED点阵显示出相应的图案。
注意:确保Micro:bit上烧录了正确的固件(通常是
scratch-microbit-1.2.0.hex这类文件)是成功连接的前提。一个空白的或者运行了其他程序的Micro:bit是无法与Scratch对话的。
2.2 分步搭建实操指南
理论清楚了,我们一步步来搭建环境。这里以Windows系统为例,macOS和Linux步骤类似,主要区别在串口驱动和安装包上。
第一步:准备Micro:bit固件
- 访问Micro:bit教育基金会的官方固件发布页面,找到与Scratch3.0配套的最新版本固件(文件扩展名为
.hex)。 - 用USB数据线将Micro:bit连接到电脑。此时电脑会将其识别为一个名为“MICROBIT”的U盘。
- 将下载好的
.hex文件直接拖拽或复制到这个“MICROBIT”U盘中。Micro:bit板载的黄色指示灯会快速闪烁,表示正在烧录固件。闪烁停止后,固件烧录完成。
第二步:安装并运行Scratch Link
- 根据你的操作系统,从Scratch官网下载对应的
Scratch Link安装程序。 - 运行安装程序,按照提示完成安装。安装后,Scratch Link通常会设置为开机自启,你也可以在开始菜单中找到并手动启动它。启动后,它常驻在系统托盘(右下角),图标是一个绿色的链条。
第三步:在Scratch 3.0中添加Micro:bit扩展
- 打开浏览器,访问Scratch 3.0的在线编辑器(或启动离线编辑器)。
- 点击左下角的“添加扩展”按钮(蓝色图标)。
- 在扩展库中找到“Micro:bit”并点击。此时,Scratch会尝试与后台运行的Scratch Link建立连接。
- 如果一切正常,会弹出一个硬件选择窗口,列表中应该能看到你的Micro:bit设备(可能显示为COMx或/dev/tty...)。选择它并点击“连接”。
连接成功后,积木区会出现一整套淡蓝色的Micro:bit积木,同时舞台区上方会显示“Micro:bit已连接”的提示。至此,你的软硬件桥梁就正式通车了。
实操心得:
- 驱动问题:如果电脑无法识别Micro:bit为串口设备,可能需要手动安装mbed串口驱动,尤其是在较老的Windows系统上。
- 端口占用:确保没有其他软件(如串口监视器、Mu编辑器)占用了Micro:bit所在的COM口,否则Scratch Link会连接失败。
- 固件版本:务必使用Scratch官网推荐或Micro:bit基金会提供的专用固件,不要使用Arduino或MicroPython等其他环境生成的固件。
3. Micro:bit扩展积木深度应用指南
连接成功后,工具箱里多出来的那套蓝色积木就是你的魔法棒。我们来逐一拆解,看看每类积木能做什么,以及背后对应的Micro:bit硬件原理。
3.1 事件与输入类积木:让硬件触发程序
这类积木用于响应Micro:bit硬件上发生的事件,是交互设计的基础。
- “当按钮A被按下”:这对应Micro:bit板载的A、B两个物理按钮。你可以用它来作为游戏的开始、角色的切换等触发条件。注意:这是一个“事件帽子”积木,下方可以拼接其他积木。它和Scratch自带的“当绿旗被点击”是同一逻辑层级。
- “当手势【晃动】”:这利用了Micro:bit内置的加速度计。除了“晃动”,还有“屏幕朝上”、“屏幕朝下”、“自由落体”等。实操技巧:“晃动”的灵敏度可以通过调整阈值在固件层面微调,但对于初学者,直接使用默认值即可。设计项目时,考虑用户的实际操作姿势,避免因误触发影响体验。
- “当引脚【P0】被按下”:这是连接外部按钮或触摸传感器的接口。Micro:bit底部边缘有一排金手指引脚(P0, P1, P2, 3V, GND)。你可以用鳄鱼夹线将P0与3V之间连接一个按钮,或者甚至直接用手同时触摸P0和GND(因为人体导电),来触发这个事件。重要提示:引脚输入有上拉和下拉模式之分,Scratch的Micro:bit扩展默认引脚为“上拉”模式,意味着引脚内部通过一个电阻连接到高电平(3V),当外部按钮将引脚与GND短接时,引脚变为低电平,即被识别为“按下”。理解这一点对连接外部电路至关重要。
3.2 输出与控制类积木:指挥硬件行动
这类积木用于主动控制Micro:bit上的输出设备。
- “显示图案【❤️】” / “显示文字【Hello】”:控制5x5的LED点阵。图案是预定义的图标,文字会以滚动方式显示。深度解析:LED点阵的刷新是非阻塞的。意思是,当你执行“显示文字‘ABC’”(这需要几秒钟滚动显示)时,Scratch脚本并不会停下来等待显示完毕,而是会立刻继续执行后面的积木。如果你需要等待显示完成再做下一步,就需要用“等待”积木或者用“显示图案”积木(它是瞬时完成的)来设计逻辑。
- “清除显示”:关闭所有LED灯。
- “设置引脚【P0】输出为【高电平】”:这是控制外部元件的核心。高电平约3V,低电平为0V。你可以用它来点亮一个LED(需串联限流电阻),驱动一个蜂鸣器,或者控制一个继电器模块。电路安全须知:Micro:bit每个引脚的最大输出电流约为5mA,整板所有引脚总电流不得超过90mA。直接驱动电机、多个大功率LED等负载是危险的,会损坏板子。务必使用三极管、MOS管或电机驱动模块来驱动大电流负载。
- “设置引脚【P0】输出为【PWM】值50”:这是模拟输出功能,通过快速开关(Pulse Width Modulation,脉冲宽度调制)来模拟0-3V之间的电压。值0代表始终低电平(0V),值255代表始终高电平(3V),中间值则对应不同宽度的脉冲。典型应用:控制LED亮度(需接在支持PWM的引脚P0、P1、P2上)、控制舵机角度(舵机控制信号就是PWM信号)。这是实现“渐变”、“平滑控制”效果的关键。
3.3 传感器与数据类积木:感知物理世界
这类积木用于读取Micro:bit传感器和引脚的状态值,将物理信号转化为程序可以处理的数字。
- “按钮【A】被按下?”:这是一个条件判断积木,返回“是/否”(布尔值)。通常与“如果...那么”积木搭配使用,用于查询按钮的实时状态,而非响应按下事件。
- “加速度【x】值”:返回三个轴(x, y, z)的加速度值,单位是毫g(mg)。静止水平放置时,z轴约为1024(即1g),x和y轴约为0。应用场景:不仅可以做手势识别,还可以通过计算加速度矢量和来粗略计算倾斜角度,制作水平仪。
- “温度【℃】”:读取Micro:bit主处理器(nRF51822)的温度。重要认知:这个温度更接近处理器的工作温度,而非精确的环境温度。当板子持续工作发热后,读数会显著高于环境温度。对于要求不高的环境温度感知可以,但如需精确测量,应连接外部的专用温度传感器(如DS18B20到引脚)。
- “引脚【P0】的模拟读数” / “引脚【P0】的数字读数”:这是连接丰富模拟传感器的窗口。模拟读数(0-1023)对应引脚上的电压(0-3V),例如可以读取旋钮电位器、光敏电阻、土壤湿度传感器等的值。数字读数(0或1)则判断引脚是高低电平。
综合应用示例:制作一个声控灯
- 使用事件积木:
当响度 > 10(Scratch本身的声音感应积木,非Micro:bit)。 - 使用输出积木:在事件下拼接
显示图案【闪烁的星星】和设置引脚P0输出为高电平(假设P0接了一个LED灯)。 - 使用控制积木:在事件下再拼接
等待1秒然后清除显示和设置引脚P0输出为低电平。 这样,当你拍手(响度触发)时,Micro:bit的LED点阵和外部LED都会亮起1秒后熄灭。
4. 经典项目实战:从创意到实现
理解了单个积木的功能后,我们通过两个完整的项目,将知识串联起来,看看如何从零开始构思并实现一个有趣的Scratch+Micro:bit作品。
4.1 项目一:体感互动游戏——躲避陨石
项目构思:在Scratch舞台上,玩家控制一艘飞船左右移动,躲避从上方不断落下的陨石。飞船的移动不再用键盘,而是通过倾斜Micro:bit来控制。
Scratch角色与舞台:
- 角色1:玩家飞船(一个简单的三角形或飞船 sprite)。
- 角色2:陨石(可以克隆多个,从舞台顶部随机位置出现并下落)。
- 背景:星空背景。
Micro:bit硬件:无需额外连接,仅使用板载加速度计。
核心脚本拆解:
飞船控制(Scratch角色脚本):
当绿旗被点击 重复执行 将x坐标设为((加速度【x】值) / 10) // 将加速度x轴读数(范围约-1024到1024)映射到舞台x坐标(-240到240) 结束- 原理:Micro:bit水平放置时,左右倾斜会改变x轴加速度值。除以10是一个缩放因子,需要根据实际灵敏度调整。你可以先测试一下
加速度【x】值的读数范围,然后使用将数值映射到这个运算积木进行更精确的映射。
- 原理:Micro:bit水平放置时,左右倾斜会改变x轴加速度值。除以10是一个缩放因子,需要根据实际灵敏度调整。你可以先测试一下
陨石生成与下落(Scratch角色脚本):
当绿旗被点击 隐藏 重复执行 等待(在1到3之间取随机数)秒 建立【自己】的克隆体 结束 当作为克隆体启动时 显示 移到x:(在-220到220之间取随机数) y:180 重复执行直到 <碰到【舞台边缘】> 或 <碰到【飞船】> 将y坐标增加 -5 结束 如果 <碰到【飞船】> 那么 广播【游戏结束】 结束 删除此克隆体游戏启动与结束:
- 用Micro:bit的
当按钮A被按下事件来广播开始游戏消息。 - 飞船和陨石脚本的
当绿旗被点击可以改为当接收到消息【开始游戏】。 - 当飞船被撞,广播
游戏结束,所有角色停止脚本,Scratch中可以用停止【全部】。
- 用Micro:bit的
避坑技巧:
- 控制灵敏度:直接使用加速度原始值控制移动可能会“飘”或不够跟手。可以在Scratch中引入一个“平滑变量”:
设定【目标x】为(加速度【x】值 / 10),然后让飞船的x坐标将x坐标设为((x坐标) * 0.8 + (目标x) * 0.2)。这样移动会有缓动效果,更平滑。 - 校准:游戏开始前,可以设计一个校准步骤。例如,提示玩家“请将Micro:bit水平放置,然后按下按钮B”,此时记录下当前的
加速度【x】值作为“零点基准”,后续的控制都减去这个基准值,可以抵消Micro:bit放置不绝对水平带来的偏差。
4.2 项目二:智能植物养护助手
项目构思:制作一个能监测土壤湿度、自动提醒浇水,并可通过按钮查询当前状态的小装置。
硬件连接:
- 土壤湿度传感器(模拟输出型)的信号线接Micro:bit的P0引脚,VCC接3V,GND接GND。
- 一个LED(加220Ω限流电阻)接在P1引脚上,作为报警指示灯。
- (可选)一个蜂鸣器或有源喇叭接在P2引脚,用于声音提醒。
核心脚本逻辑:
数据监测与报警(Scratch主要逻辑):
当绿旗被点击 重复执行 如果 <(引脚【P0】的模拟读数) < (300)> 那么 // 300为干燥阈值,需根据传感器实际调试 广播【需要浇水】 否则 广播【湿度正常】 结束 等待 10 秒 // 每10秒检查一次,避免过于频繁 结束 当接收到消息【需要浇水】 重复执行 5 次 将引脚【P1】输出设为 高电平 等待 0.5 秒 将引脚【P1】输出设为 低电平 等待 0.5 秒 结束 // 同时可以在Scratch舞台上让一个角色说“该浇水啦!” 当接收到消息【湿度正常】 清除显示 // 或者显示一个笑脸图案 将引脚【P1】输出设为 低电平手动状态查询(Micro:bit事件触发):
当按钮【A】被按下 说(连接【当前湿度:】和(引脚【P0】的模拟读数))持续 2 秒 // 或者在Micro:bit点阵上滚动显示数值 显示数字(引脚【P0】的模拟读数)自动数据记录(进阶):在Scratch中,可以创建一个列表变量叫“湿度历史记录”。在监测循环中,每次读数后都
将(引脚【P0】的模拟读数)加入【湿度历史记录】。再创建一个角色,绘制折线图来可视化湿度变化趋势。
硬件连接注意事项:
- 土壤湿度传感器模块通常有数字和模拟双输出。我们使用模拟输出(AO)以获得更精细的湿度百分比信息,而不是简单的干/湿判断。
- 首次使用时,需要校准阈值。将传感器完全插入干燥的土壤中,读取模拟值(比如850);再插入完全浸湿的土壤中,读取模拟值(比如300)。那么你的报警阈值可以设定在这两个值之间,例如500。
- Micro:bit的3.3V输出能力有限,如果传感器或外设耗电较大,建议使用外部电源(如3节AA电池盒)为它们单独供电,但务必共地(GND连接在一起)。
5. 高级技巧与疑难问题排查
掌握了基础项目和连接后,你可能会追求更复杂的交互或遇到一些棘手的问题。这一章分享一些进阶玩法和常见故障的解决方法。
5.1 扩展边界:与Scratch其他功能联动
Micro:bit扩展的强大之处在于它能与Scratch庞大的内置功能库产生化学反应。
- 语音与音乐:用
当按钮A被按下触发Scratch的播放声音或演奏鼓声积木,制作一个简单的电子乐器。更进一步,可以用加速度【y】值来控制将音调增加()积木的参数,实现通过倾斜改变音高的特雷门琴效果。 - 视频感知:Scratch 3.0的视频运动感知扩展非常强大。你可以设计这样的项目:当摄像头检测到有物体运动(如挥手)时,通过广播消息,触发Micro:bit上的
显示图案或控制外部LED闪烁。这就实现了“隔空控物”。 - 变量与列表:这是实现复杂逻辑的核心。例如,用Micro:bit的按钮A和B作为加减控制器,来改变Scratch中的一个“速度”变量,从而控制游戏中角色的移动速度。或者,将Micro:bit传感器读取的数据(如每小时的温度)存入一个列表,然后在Scratch中计算平均温度、最高最低温度等。
- 克隆与广播:在多人互动项目中,可以准备多套Micro:bit和电脑。每台电脑上的Scratch项目都连接各自的Micro:bit,并通过网络广播功能(需要Scratch Link和网络环境支持特定的扩展,或使用云变量)进行通信。例如,一个玩家按下按钮A,所有其他玩家屏幕上的角色都会收到一个“攻击”消息。
5.2 常见连接与通信故障排查
连接问题是最常见的拦路虎。请按照以下清单逐一排查:
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| Scratch中找不到Micro:bit扩展或无法连接 | 1. Scratch Link未运行 2. 浏览器/Scratch离线版版本过旧 3. 系统防火墙/安全软件阻止 | 1. 检查系统托盘,确保Scratch Link已启动(绿色链条图标)。重启它。 2. 尝试使用Chrome、Edge等最新版浏览器。确保离线编辑器是最新版本。 3. 暂时禁用防火墙或安全软件,或将Scratch Link加入白名单。 |
| 连接时提示“未找到设备” | 1. Micro:bit未连接或USB线故障 2. 固件错误或未烧录 3. 端口被占用 | 1. 重新插拔USB线,尝试不同的USB口。检查电脑设备管理器中是否出现“mbed Serial Port”或类似COM口。 2.重新烧录正确的Scratch专用固件,这是最常见的原因。确保烧录时MICROBIT盘符的指示灯在闪烁。 3. 关闭所有可能占用串口的软件(如Arduino IDE、串口助手、Mu编辑器)。 |
| 连接成功但积木无反应 | 1. 积木逻辑错误 2. 硬件连接错误 3. 引脚冲突 | 1. 检查脚本是否被正确触发(如绿旗点击、事件发生)。用最简单的显示图案❤️测试。2. 检查外部电路:线是否接牢?LED正负极是否接反?限流电阻是否加上? 3. Micro:bit上有些引脚有复用功能(如P0、P1也用于LED点阵)。避免在使用LED显示相关积木时,同时将这些引脚用于其他重要输出输入。 |
| 连接不稳定,时断时续 | 1. USB线接触不良 2. 电脑USB口供电不足 3. 无线电干扰(如蓝牙) | 1. 更换一条质量好的Micro-USB数据线,确保连接牢固。 2. 尝试将Micro:bit连接到电脑后置的USB口,前置口可能供电不稳。 3. 如果环境中有强无线电干扰,可能会影响USB通信。远离大功率无线设备。 |
终极调试大法:当所有积木都不起作用时,进行最小化测试。
- 在Scratch中新建一个空白项目。
- 只添加Micro:bit扩展。
- 只写一个脚本:
当绿旗被点击->显示图案❤️。 - 点击绿旗。如果这时Micro:bit的LED点阵显示了心形,说明基础通信完全正常,问题一定出在你项目更复杂的脚本逻辑或外部硬件上。如果连这个都不行,那就回到上述表格,从Scratch Link和固件开始从头检查。
5.3 性能优化与项目规划建议
对于复杂的项目,以下几点能提升体验和成功率:
- 减少无线干扰:虽然Scratch Link通过USB有线连接,但Micro:bit本身也具备蓝牙功能。如果烧录的固件版本不对或配置有冲突,可能会引起问题。在仅使用USB串口通信时,确保固件是纯粹的“串口固件”,而非蓝牙固件。
- 优化Scratch脚本效率:Scratch是解释执行的,复杂循环和大量克隆体会导致卡顿。避免在
重复执行循环内使用等待()积木来精确计时,这会影响整体响应。对于需要定时执行的任务(如每10秒读取一次传感器),使用Scratch的计时器或利用重复执行和等待的组合,但要意识到这会让循环内该时刻之后的所有积木都被延迟。 - 分模块开发与测试:不要一次性写完所有功能。先确保Micro:bit能正确响应单个命令(如按钮控制LED)。再测试传感器读数是否准确。然后在Scratch中单独调试游戏逻辑或动画效果。最后将两者用变量和广播消息耦合起来。这种“分而治之”的策略能极大降低调试难度。
- 电源管理:如果你的项目需要移动使用,考虑用电池盒为Micro:bit供电。注意,通过USB口连接电脑时,电脑会为Micro:bit供电。断开USB前,确保你的外部电路在3V电池供电下也能正常工作(某些传感器或执行器可能需要5V)。
从简单的点亮一个LED,到完成一个融合了体感、声光反馈和复杂游戏逻辑的互动项目,Scratch 3.0与Micro:bit的组合为你提供了一个几乎零代码门槛的物理计算沙盒。它的意义不在于完成多么复杂的工业控制,而在于快速、直观地将创意落地,让编程和电子变得可触摸、可玩耍。我自己的体会是,最有趣的项目往往诞生于“如果……会怎样?”的简单提问,并用这套工具去快速验证它。不妨就从今天开始,拿起你的Micro:bit,在Scratch里拖出第一个积木,看看这个小小的板子,能为你想象中的世界打开一扇怎样的大门。