micro:bit使用笔记
文章目录
折腾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),可能一开始会让人有点疑惑,它们的关系如下
|
|
更多细节参考:DAPlink and the USB interface
开放性
硬件开源
关于硬件部分,两部分关键信息可以一窥Microbit 的内部设计:
- 线路图(schematics), 可以看到主要零件的链接方式及设计.
- reference design, 这部分的数据可以帮助进一步了解Microbit 的设计及变更
关于硬件部分更多的描述参考:Hardware Description
兰卡斯特大学(Lancaster University)构建了完整的microbit的硬件抽象(C/C++),包括一个事件调度器和消息总线,这对个人用户和更高级的语言都是有用的(比如Python),这儿有完整的API文档和入门指南
软件开源
而为micro:bit编程的软件/web平台,目前基本都开源
开始编程
可选编程工具
有多种工具可以为microbit编程,包括图形化界面(makecode等)、Python、C++等。我们先在架构层面关注一下microbit的运行时,如下图:
代码的执行过程为(如果你对更多细节感兴趣,可以参考the micro:bit Software Ecosystem):
尽管有许多可选工具,官方推荐我们使用两种工具来为microbit编程:
- 由微软打造的JavaScript Blocks Editor(makecode): makecode是一个图形化工具,对新手友好
- 来自python社区的Python Editor: 使用python代码驱动microbit,适合进阶的孩子
如果你偏好使用离线的编辑器,推荐Mu和Makecode离线版本
更多可选择的编程工具,你可以参考这里: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文件中转化:tools、uflash
microbit所有可用的python模块:Microbit Module
如果需要传输复杂的数据,你无法使用json,可以试试str/eval
一些有趣项目
- bitio: 把bitio当成一个IO设备。可以用这库很方便地与电脑脚本,把bitio当成可编程的外设,强烈推荐!
- Bluetooth Apps and Examples
- scratch2-microbit: 使用microbit来控制scratch2中的角色
- MicroPython Txting Package for micro:bit: 用radio收发信息
- Joseph’s Micro:bit Python Utilities Package
课程
- microbit teach
- Micro:bit Lessons Aligned to Code.org’s CS Fundamentals
- python游乐场
- BBC micro:bit Starter (Blockly): 模拟器、作业、slides
- Hour of Code: Virtual Pet: 虚拟宠物
- Microsoft 14 Week Curriculum
- STEM Centre Lessons
#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
参考
文章作者 种瓜
上次更新 2017-12-24