Micro:bit简介
Micro:bit 是一款专为青少年编程教育设计的微型可编程计算机,由英国广播公司(BBC)联合微软、三星、ARM等科技企业于2016年推出。其核心目标是降低编程学习门槛,通过“动手实践”激发青少年对计算机科学、电子技术和创新的兴趣。它有一个5×5 LED矩阵屏幕、两个按键、一组引脚、一个加速度计、一个电子罗盘、一个温度传感器和一个蓝牙无线通信模块。它可以通过编程来控制LED矩阵屏幕、读取传感器数据、与其它设备进行通信等操作,是一款非常适合初学者的教育用硬件。由于Micro:bit开放了其硬件与软件接口,因此也受到了全世界创客们的热烈欢迎。
硬件规格:小身材大能力
Micro:bit的尺寸仅约5cm×5cm(信用卡大小),但集成了丰富的传感器、交互模块和通信接口,具体配置如下:
核心计算单元
- 处理器:搭载 Nordic nRF51822 芯片(32位ARM Cortex-M0架构),主频16MHz,兼顾低功耗与基础计算能力。
- 存储:256KB Flash(存储程序代码),16KB RAM(临时数据存储)。
交互与传感器
- 5×5 LED矩阵:可显示文字、图案、动画(支持滚动效果),是最直观的输出设备。
- 2个可编程按钮(A/B):物理按键,可自定义点击、长按等交互逻辑。
- 传感器:
- 加速度计(Kionix KXG03):检测运动(如摇晃、倾斜、跌落),支持X/Y/Z三轴数据。
- 磁力计(Honeywell HMC5883L):测量磁场强度,可作电子罗盘或接近传感器。
- 温度传感器:内置温度检测(精度约±2℃)。
- 光线传感器:通过LED矩阵背光间接感知环境亮度(需编程实现)。
通信与扩展
- 蓝牙BLE 4.0:支持无线连接手机、平板或其他micro:bit,实现数据传输或远程控制。
- GPIO引脚:提供25个通用输入输出引脚(其中3个支持PWM,2个支持模拟输入),可外接传感器(如光线、声音)、执行器(如电机、舵机)或LED灯带。
- 电源:支持USB供电(充电/数据传输)或2节AAA电池(续航约数小时,取决于使用强度)。
其他细节
- 防水防尘:表面无严格密封,但可应对日常轻微泼溅(非专业防水)。
- 重量:约8g,轻便易携带,适合课堂或户外活动。
V2.0相比 V1.5的升级
Micro:bit 的 v2.0(2020年发布) 是对初代 v1.5(2016年发布) 的全面升级,主要在硬件性能、传感器、交互功能和软件支持上进行了优化,更贴合现代编程教育和创客需求。
硬件架构:性能大幅提升
维度 | micro:bit v1.5 | micro:bit v2.0 |
主控芯片 | Nordic nRF51822(32位ARM Cortex-M0内核) | Nordic nRF52833(32位ARM Cortex-M4F内核) |
主频 | 16MHz | 64MHz(最高128MHz,动态调整) |
存储 | 256KB Flash(程序存储) / 16KB RAM(运行内存) | 512KB Flash(程序存储) / 128KB RAM(运行内存) |
功耗 | 基础模式约10mA,深度睡眠约1μA | 优化低功耗设计(如空闲模式功耗更低) |
关键差异:v2.0的Cortex-M4F内核支持浮点运算(FPU)和DSP指令,计算能力是v1.5(Cortex-M0无浮点单元)的数倍,更适合运行复杂算法(如传感器数据融合、快速傅里叶变换)或MicroPython代码(解释器效率更高)。
传感器与交互:新增核心功能
v1.5的传感器仅包含加速度计+磁力计,而v2.0大幅扩展了交互能力:
维度 | micro:bit v1.5 | micro:bit v2.0 |
基础传感器 | 加速度计(3轴)、磁力计(3轴)、温度传感器 | 同v1.5,但精度优化(如温度误差更小) |
新增传感器 | 无 | 电容式触摸传感器(覆盖整个机身,可检测手指轻触或接近)
内置麦克风(支持声音检测,如拍手触发) 内置扬声器(支持声音播放,如音乐、语音) |
交互方式 | 按钮A/B、LED矩阵、传感器 | 新增触摸交互(无需物理接触,轻触机身即可)、声音输入/输出 |
典型应用场景:v2.0可直接实现“拍手亮灯”“触摸感应音乐”“语音提示”等项目,而v1.5需外接麦克风或扬声器模块才能实现类似功能。
通信与扩展:兼容性与灵活性增强
维度 | micro:bit v1.5 | micro:bit v2.0 |
蓝牙 | BLE 4.0(蓝牙低功耗) | BLE 5.0(支持更远距离、更低功耗、更快连接) |
GPIO引脚 | 25个引脚(其中3个PWM,2个模拟输入) | 25个引脚(兼容v1.5引脚定义),但部分引脚优化:
l 支持PWM精度提升 l 模拟输入范围扩展(0-3.3V→0-1.8V,避免过压损坏) |
扩展支持 | 需额外扩展板连接复杂模块(如电机驱动) | 兼容v1.5扩展板(如micro:bit Motor Driver),同时支持更多第三方传感器(因接口更稳定) |
关键差异:v2.0的BLE 5.0兼容性更好(可连接手机/平板更稳定),且PWM精度提升后,电机控制、LED渐变等效果更平滑。
软件与生态:功能扩展与优化
两者均支持MakeCode(图形化+Python)和C/C++,但v2.0的软件生态更丰富:
维度 | micro:bit v1.5 | micro:bit v2.0 |
MakeCode编辑器 | 基础积木块(无触摸/声音相关模块) | 新增触摸传感器积木、声音控制积木(如music.play()) 支持MicroPython 1.17+(优化语法和库) |
Python支持 | 仅支持基础MicroPython(内存限制严格) | 内存翻倍(128KB RAM),支持更复杂的Python代码(如多线程、传感器数据实时处理) |
官方资源 | 早期课程(侧重基础编程) | 新增针对触摸/声音/蓝牙5.0的教学案例(如“智能声控灯”“音乐合成器”) |
典型代码差异:v2.0可直接用以下代码实现“触摸机身A区域播放音乐”:
from microbit import * import music while True: if pin0.is_touched(): # 触摸传感器(v2.0新增) music.play(music.POWER_UP)
外观与细节:更人性化的设计
- 外壳材质:0采用更耐用的ABS塑料(v1.5为普通塑料),边角更圆润,适合儿童长时间握持。
- LED矩阵:0的LED亮度更高(户外可见性更好),且支持“呼吸灯”等平滑动画效果(v1.5仅支持开关/滚动)。
- 按钮:0的按钮行程更短、触感更灵敏(v1.5偶有卡顿)。
如何选择?
- 选5:预算有限,仅需基础编程(如LED控制、按钮交互),或用于教学入门(无需复杂传感器)。
- 选0:追求更丰富的交互(触摸/声音)、更高性能(复杂算法/MicroPython)、更稳定的蓝牙连接,或希望项目具备扩展性(如结合AIoT)。
Micro:bit引脚详解
Micro:bit的引脚(GPIO,通用输入输出引脚)是其与外部设备交互的核心接口,支持数字信号、模拟信号、PWM(脉宽调制)、I²C、SPI、UART等多种通信协议。
Micro:bit引脚简介
BBC Micro:bit板子边缘的接口上有25个触点,这些被我们称为“引脚”。 边缘接口是上图右侧的橙色区域。板子上有5个大引脚,这些引脚同时也被连接到了板子上标注 0、1、 2、3V 和 GND 的孔上。 并且在同样的边缘有着20个小引脚。
大引脚
你可以很容易地把鳄鱼夹或者4mm的香蕉插头插到5个大引脚上。
前三个大引脚标记了0,1,2是灵活的,可以应用于很多不同的东西。这就意味着他们通常被称作通用的输入和输出(缩写为GPIO)。 通过使用一个叫做模拟-数字转换器(ADC)的东西,这3个引脚也能够读取模拟电压。 它们都有着相同的功能:
- 0:GPIO (general purpose digital input and output) with analogue to digital converter (ADC).
- 1:带ADC的GPIO
- 2:带ADC的GPIO
另外2个大引脚(3V和GND)是非常不一样的!
当心!标记了3V和GND的引脚和主板的供电有关系,并且它们永远不能连接在一起。
电源输入:如果BBC micro:bit是由USB或者电池供电,那么你可以使用3V的引脚作为一个 电源输出 来给周围供电。
- 3V: 3V 电源输出或者是电源输入。
- 电源输出: 如果BBC micro:bit是由USB或者电池供电,那么你可以用3V的引脚作为一个电源输出给周围供电;
- 电源输入: 如果BBC micro:bit不是由USB或者电池供电,你可以用3V的引脚作为一个电源输入给BBC micro:bit供电。
- GND: 为了完成电路而接地(当使用3V的引脚时需要)
小引脚
有20个小引脚从3-22顺序编号(这些引脚未在BBC micro:bit上标记,但是,它们在上图中标记)。
和3个主要用于外部连接的大引脚不一样,BBC micro:bit 板子上的其他元器件共享了一些小引脚。 例如,BBC micro:bit屏幕上的一些LED灯共享了引脚3,所以如果你想用屏幕滚动显示一些信息,你也就不能使用这个引脚了。
- 引脚 3:LED屏幕上的第一排LED灯共享的GPIO;当LED屏幕关闭时,它可以用于ADC和数字I/O。
- 引脚 4:LED屏幕上的第二排LED灯共享的GPIO;当LED屏幕关闭时,它可以用于ADC和数字I/O。
- 引脚 5:按钮A共享的GPIO。这可以让你触发或检测到按钮“A”被外力按下。 这个引脚有一个上拉电阻,这就意味着它的默认电压是3V。 如果要用一个外接按钮代替BBC micro:bit上的按钮A,把外接按钮的一端接到引脚5,另一端接到GND。 当按钮被按下,引脚5的电压被下拉至0,从而生成一个按钮被按下的事件。
- 引脚 6:LED屏幕上的第9排共享的GPIO。当LED屏幕被关闭时,它可以用作数字I/O口。
- 引脚 7:LED屏幕上的第8排共享的GPIO。当LED屏幕被关闭时,它可以用作数字I/O口。
- 引脚 8:发送和感知数字信号的GPIO口。
- 引脚 9:LED屏幕上的第7排共享的GPIO。当LED屏幕被关闭时,它可以用作数字I/O口。
- 引脚 10:LED屏幕上的第3排LED灯共享的GPIO;当LED屏幕关闭时,它可以用于ADC和数字I/O。
- 引脚 11:按钮B共享的GPIO。这可以让你触发或检测到按钮“B”被外力按下。
- 引脚 12:发送和感知数字信号的GPIO口。
- 引脚 13 :通常用于3线串行外围接口(SPI)总线的串行时钟(SCK)信号的 GPIO。
- 引脚 14 :通常用于 SPI 总线的 “主机输入,从机输出(MISO)” 信号的GPIO。
- 引脚 15 :通常用于 SPI 总线的 “主机输入,从机输出(MISO)” 信号的GPIO。
- 引脚 16:专用GPIO口(通常也用于SPI芯片选择)。
- 引脚 17 和 18:这两个引脚连接3V的电源,例如:大型的3V电池板。
- 引脚 19 和 20:引出I2C总线通信协议的时钟信号(SCL)和数据线(SDA)。 I2C可以使同一总线连接多个设备,并且从CPU上发送或读取信息。 Micro:bit内置的加速度计和指南针连接到了I2C。
- 引脚 21 和 22: 这两个引脚除了连接了GND之外,并没有什么作用。
引脚功能分类
数字输入/输出(Digital I/O)
- 数字信号读写(高/低电平),支持高(3V)/低(0V)电平信号,用于控制LED、继电器、蜂鸣器或读取开关状态。
- 支持引脚:P0-P20(除特殊复用引脚)
- P3/P4默认连接按钮A/B(内部上拉),直接读取时需通过代码禁用按钮功能(否则会读取到固定值)。
- P13-P14、P15-P16等引脚因内部电路(如晶振)可能干扰信号,建议优先使用P0-P2、P5-P12等“干净”引脚。
示例代码(Python):
pin0.write_digital(1) # P0输出高电平(3.3V) value = pin1.read_digital() # 读取P1电平状态(0或1)
模拟输入(Analog Input)
- 功能:读取0-3.3V(5)或0-1.8V(v2.0优化)的连续电压信号,用于连接传感器(如光线、温度、电位器)。
- 支持引脚:P0、P1、P2、P3、P4、P10
- 精度:10位(0-1023),分辨率约76mV。
- 用途:读取光敏电阻、电位器等模拟传感器。
- 计算电压公式:Volt = 1.8 * (Value / 1024)
PWM输出(Pulse Width Modulation)
- 功能:通过调节高/低电平占空比(0%-100%)模拟模拟信号,用于控制电机速度、LED亮度渐变或舵机角度。
- 支持引脚:P0-P4、P10(10位精度,1024级控制)
- 精度:5为8位(256级);v2.0升级为10位(1024级),控制更平滑(如LED颜色渐变更细腻)。
- 用途:舵机控制、LED亮度渐变。
示例代码:
pin2.write_analog(512) # P2输出50%占空比(周期默认20ms)
通信接口(I²C/SPI/UART)
- I²C(双线制总线):用于连接传感器(如加速度计、磁力计)、显示屏(如OLED)等支持I²C协议的设备。
- 默认占用:P19(SCL,时钟线)、P20(SDA,数据线)(5/v2.0均如此)。
- 可配置性:可通过代码修改SCL/SDA引脚(如使用P1/P2替代),但需外部上拉电阻。
- SPI(串行外设接口):用于高速通信(如连接SD卡、显示屏)。
- 默认未启用:需手动配置引脚(如P13-MOSI、P14-MISO、P15-SCK、P16-CS)。
- UART(串行通信):用于与电脑、手机或其他串口设备通信(如蓝牙模块)。
- 默认占用:P0(TX,发送)、P1(RX,接收)(5);v2.0中P0/P1可能被触摸/按钮功能复用,需注意冲突
特殊功能引脚(V2.0独有)
引脚 | 功能 | 说明 |
P0-P2 | 电容触摸输入 | pin0.is_touched()检测手指轻触 |
P3 | 按钮A(内部上拉) | 按下时读值为0 |
P4 | 按钮B(内部上拉) | 按下时读值为0 |
P5 | 内置扬声器驱动 | 通过music.play()输出音频 |
P27 | 内置麦克风输入(未引出) | 需代码microphone.sound_level()访问 |
电源与接地引脚
引脚 | 功能 | 最大电流 |
3V | 3.3V稳压输出/输入 | 整板≤120mA |
GND | 接地 | – |
电池接口 | JST接口(背面) | 支持3V电池供电
2 |
⚠️ 警告:
- 电压限制:所有引脚仅支持3V逻辑电平!连接5V设备需电平转换模块
- 电流限制:单引脚≤10mA,整板总电流≤120mA(避免驱动多个电机)
版本差异(V2.0 vs V1.5)
特性 | V2.0 | V1.5 |
模拟输入范围 | 0-1.8V(内置过压保护) | 0-3.3V(易损坏) |
触摸支持 | P0-P2支持电容触摸 | 不支持 |
I²C总线 | 独立外部I²C(不冲突板载传感器) | 共享总线(与加速度计/磁力计复用) |
PWM精度 | 10位(1024级) | 8位(256级) |
引脚复用 | 优化复用逻辑,部分引脚可灵活切换功能 | 按钮A/B(P3/P4)、LED矩阵与部分引脚强绑定 |
使用注意事项
- 引脚复用冲突:
- LED矩阵占用 P3、P4、P6、P7、P9、P10,使用前需关闭LED:off()
- 按钮A/B占用 P3/P4,若需作GPIO,需代码禁用按钮:disable()
- 电气安全:
- 避免将3V与GND直接短接(烧毁风险)
- 外接电机/舵机时,电源需独立供电(勿用3V引脚)
- 触摸功能优化:
- 潮湿环境易误触发,建议增加去抖逻辑:
if pin0.is_touched() and time.time() - last_touch > 0.5: # 执行操作
典型应用示例
案例1:控制舵机(SG90)
接线:
- 舵机信号线 → P2(PWM)
- 舵机VCC → 外部电源(5V)
- 舵机GND → Micro:bit GND
代码:
angle = 90 # 0°-180° pin2.write_analog(int(angle * 1023 / 180)) # 角度转PWM值
案例2:读取土壤湿度传感器
接线:
- 传感器VCC → 3V
- 传感器GND → GND
- 传感器AO → P0(模拟输入)
代码:
moisture = pin0.read_analog() # 0(干燥)~1023(湿润)
拓展知识:模拟电路与数字电路
什么是模拟电信号
模拟电信号是指连续的、无间断的电信号,它的形态和大小可以随时间变化而连续改变。这种信号在模拟电路中常常被用于表示各种物理量的变化,例如声音、光线、温度等。模拟电信号可以通过数字-模拟转换(DAC)芯片或模拟-数字转换(ADC)芯片转换为数字信号,从而进行数字信号处理,比如在计算机上进行数据存储、处理、传输等操作。对于Micro:bit而言,它有模拟输入输出引脚,可以向这些引脚输入模拟电信号或从这些引脚输出模拟电信号,用于读取和控制模拟电路中的各种物理量。
什么是高电平与低电平
高电平和低电平是指数字电路中电信号的两个状态,用来表示二进制的0和1。
高电平指电信号的电压值为逻辑电平”1″,表示”通”,一般情况下高电平的电压值在3V-5V之间;而低电平指电信号的电压值为逻辑电平”0″,表示”控”,一般情况下低电平的电压值在0V-1V之间。
在数字电路中,通过高电平和低电平的转换来实现不同逻辑状态的判断和控制,从而完成各种计算、处理和数据传输等操作。
引脚设计的缺陷
Micro:bit的金手指(边缘连接器)设计存在缺乏物理防呆结构的问题,导致用户在使用扩展板时可能因正反误插引发短路、设备损坏或功能异常。
设计问题分析
- 对称性导致的误插风险:micro:bit的25个金手指采用两排对称布局,但排布方向无物理区分(如缺口、长短针设计)。用户可能因未注意方向而反向插入,导致引脚错位(如3V与GND短路)
- 扩展板兼容性问题:部分第三方扩展板未设计防呆卡扣,加剧误插风险
Micro:bit的软件生态
Micro:bit 的软件生态系统是其作为教育工具的核心优势,支持多种编程语言、开发环境和应用场景,覆盖从儿童到专业开发者的不同需求。
编程语言与开发环境
图形化编程(初学者友好)
- Microsoft MakeCode
- 特点:基于积木拖拽的图形化编程,实时模拟预览,支持一键生成JavaScript代码。
- 功能:内置传感器控制(加速度计、磁力计)、无线通信(蓝牙、无线电)、音乐播放等模块
- 适用场景:中小学课堂、入门项目(如LED动画、简单游戏)
- Scratch扩展
- 特点:通过Scratch 3.0插件连接Micro:bit,将硬件交互融入可视化编程
- 案例:制作体感游戏(如倾斜控制角色移动)
文本编程(进阶学习)
- Python (MicroPython)
- 在线编辑器:MakeCode的Python模式
- micro:bit Python Editor
- 离线工具:Mu Editor(语法高亮、一键烧录)、Thonny IDE(支持调试)
- 优势:简洁语法 + 硬件直控,适合数据处理(如传感器日志)
- JavaScript
- 环境:MakeCode的文本模式,兼容浏览器端开发
- 用途:结合网页交互(如通过蓝牙传输数据到Web应用)
其他工具:
开发工具与资源
- 串行通信(Serial):通过PySerial库实现PC与Micro:bit实时数据交换(如传输传感器读数)
- 蓝牙控制:官方手机App(iOS/Android)支持无线烧录程序、远程控制LED或按钮
参考文档
- micro:bit 中文教程
- micro:bit教程学习资料专区-DF创客社区_分享创造的喜悦
- BBC micro:bit MicroPython documentation — BBC micro:bit MicroPython 2 documentation
- micro:bit 相关产品 | LEARN
- BBC micro:bit MicroPython documentation — BBC micro:bit MicroPython 2 documentation
- GitHub – wwj718/awesome-microbit-zh: micro:bit资源大全中文版
- Schematics