惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
C
Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
IT之家
IT之家
博客园 - 【当耐特】
V
V2EX
博客园_首页
T
Tailwind CSS Blog
Last Week in AI
Last Week in AI
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 司徒正美
N
Netflix TechBlog - Medium
F
Fortinet All Blogs
Know Your Adversary
Know Your Adversary
S
Schneier on Security
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
Vercel News
Vercel News
量子位
G
GRAHAM CLULEY
T
Threatpost
D
Darknet – Hacking Tools, Hacker News & Cyber Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cybersecurity and Infrastructure Security Agency CISA
S
Security @ Cisco Blogs
B
Blog
Stack Overflow Blog
Stack Overflow Blog
T
Tor Project blog
A
About on SuperTechFans
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
S
Securelist
博客园 - 聂微东
Cloudbric
Cloudbric
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
H
Help Net Security
N
News | PayPal Newsroom
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
W
WeLiveSecurity
Martin Fowler
Martin Fowler
K
Kaspersky official blog
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事 blockly与结对编程
micro:bit使用笔记
2017-12-24 · via 夜行人

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

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

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

参考