折腾micro:bit过程中记录的笔记。涉及资源、工具、文档等。

如果你想获取更多micro:bit相关资源,可以到awesome-microbit-zh里淘金

micro:bit概述

micro:bit是一个小型的可编程计算机,旨在使学习与教学变得轻松有趣

micro:bit是一款由BBC(英国广播电视公司)推出的为青少年编程教育设计的微型电脑开发板(43 mm × 52 mm), 集成了ARM Cortex-M0处理器、低功耗蓝牙,加速度计,磁力计,三个按钮,5 x 5 LED点阵以及GPIO。

使用micro:bit可以快速地把你脑子中好玩的想法付诸实践,做出酷炫的小发明。

microbit官网有许多统计数据表明这个板子取得的教育成就和受欢迎程度:Research Findings

技术参数

  • 5x5 LED点阵
  • 3个按钮(2个用于用户操作,1个用于复位)
  • 23个GPIO引脚
  • Nordic nRF51822 - 16 MHz 32位ARM Cortex-M0 微控制器,256 KB 闪存,16 KB RAM,2.4 GHz 蓝牙低功耗无线网络。ARM内核可以在16 MHz或32.768 kHz之间切换. 实际运行代码的地方
  • NXP/Freescale KL26Z - 接口芯片/接口MCU. 48MHz 的ARM Cortex-M0+ 内核微控制器,其中有全速USB 2.0 OTG控制器,用作USB和Nordic nRF51822控制器之间的通信接口
  • NXP/Freescale MMA8652 - 3轴加速度传感器(I²C总线)
  • NXP/Freescale MAG3110 - 3轴磁力仪传感器I²C总线(用作指南针和金属探测器)

microbit有两个两个MCU(nRF51822/KL26Z),可能一开始会让人有点疑惑,它们的关系如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
     PC
      ^                                                    +----------------------------+
      |        +---------------------+                     |       TARGET MCU           |
      |        |   INTERFACE MCU     |                     | +------------------------+ |
      |        |                     |                     | |      Application       | |
      |        | +-----------------+ |     SWD             | +------------------------+ |
      |  USB   | |                 | +---------------------+ | micro:bit runtime DAL  | |
      +--------+ |    DAPLink      | <----------+          | +------------------------+ |
        * Mass | +-----------------+ |     UART |          | |          | |           | |
        Storage| +-----------------+ |          |          | |   mbed   | | SoftDevice| |
               | |   Bootloader    | |          +------------>          | |           | |
        * UART | +-----------------+ |                     | +----------+ +-----------+ |
               +---------------------+                     +----------------------------+
        * CMSIS-DAP

更多细节参考:DAPlink and the USB interface

开放性

硬件开源

关于硬件部分,两部分关键信息可以一窥Microbit 的内部设计:

关于硬件部分更多的描述参考:Hardware Description

兰卡斯特大学(Lancaster University)构建了完整的microbit的硬件抽象(C/C++),包括一个事件调度器和消息总线,这对个人用户和更高级的语言都是有用的(比如Python),这儿有完整的API文档入门指南

软件开源

而为micro:bit编程的软件/web平台,目前基本都开源

开始编程

可选编程工具

有多种工具可以为microbit编程,包括图形化界面(makecode等)、Python、C++等。我们先在架构层面关注一下microbit的运行时,如下图:

代码的执行过程为(如果你对更多细节感兴趣,可以参考the micro:bit Software Ecosystem):

尽管有许多可选工具,官方推荐我们使用两种工具来为microbit编程:

如果你偏好使用离线的编辑器,推荐MuMakecode离线版本

更多可选择的编程工具,你可以参考这里:awesome-microbit-zh 编程

图形化编程

如果你选择图形化编程,目前的可选方案有几个:

  • makecode: 提供一个基于浏览器的模拟器和积木编程环境,堆叠好的积木块最终将生成JavaScript (TypeScript)代码。PXT支持代码的双向转换!
  • Code Kingdoms - 基于图形界面的编程工具,帮助用户从拖曳式编程到文本编程(JavaScript)的过渡.
  • Open Roberta Lab - 为机器人编程设计的积木时编程环境, 通过将堆叠好的积木生成MicroPython代码来支持microbit.
  • microbit zh: 国内社区提供的在线工具,堆叠好的积木块生成python代码

在浏览器中的编程环境内置了编译器(可离线使用,十分适合在教室或公共计算机上使用),代码块转换为hex文件的过程如下

更多细节,参考这里:

Python 编程

microbit上跑了一个MicroPython解释器(一个移植版本):bbcmicrobit/micropython.这一点可以通过上边那张关于运行时的图种看出

bbcmicrobit/micropython源码中包含了很多使用python驱动microbit的examples

既然microbit上跑了MicroPython,那我们就可以用为MicroPython打造的工具来为microbit编程(诸如picocom),关于MicroPython相关的工具和资源,我之前写了这篇文章:MicroPython使用笔记

这儿有一些工具方便在python脚本和hex文件中转化:toolsuflash

microbit所有可用的python模块:Microbit Module

如果需要传输复杂的数据,你无法使用json,可以试试str/eval

一些有趣项目

课程

#FAQ

与Arduino对比

相比与Arduino,micro:bit具有免装驱动,易上手,电子模块集成度高,支持时下热门的多种编程语言等优势,节省了教学资源成本的同时也大大增加了可玩性和拓展空间。关于这方面的讨论可以参考:Microbit和arduino有什么关系?

microbit在拖入hex文件后将自动弹出并自动运行程序

microbit的flash文件系统完全是虚拟,这就是为什么在写入新文件之后驱动器会自动弹出,当你把hex文件拖到MICROBIT上,它并没有被写入到闪存里,而是直接流到nRF51822(target MCU)中

这方便的讨论参考:DAPlink and the USB interface|Files on the MICROBIT Drive

参考