回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【雕爷学编程】Arduino动手做(171)---micro:bit 开发板 中等

头像 驴友花雕 2023.07.25 57 1

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。

 

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百七十一: BBC microbit micro:bit,bit go,bit club python图形编程开发板
 

0.jpg

知识点:Micro:bit
(全称BBC micro:bit),是一款由英国广播公司(BBC)推出的,用于青少年编程教育的ARM开发板。采用了基于ARM Cortex-M0的nRF51822处理器,集成蓝牙功能,板载5×5 LED点阵、两个可编程按键、加速度计、三轴地磁和温度计等资源。还引出了20+5pin的扩展接口,可轻松胜任各种编程相关的教学与开发场景,包括编写电子游戏、机器人控制、科学实验和可穿戴装置开发等; 仅有信用卡一半大小(4cm×5cm),可以集成到诸多便携的项目中。
 

0-.jpeg
0-0.png

在线编程
BBC还提供了在线的编程网站(https://makecode.microbit.org/),可以通过图形化的编程界面,或者通过python或javascript等你自己喜欢的编程语言进行编程。最后,可以通过蓝牙把编写好的程序上传到microbit板子上查看实际效果。下面动图显示的就是如何通过图形化的界面编写一个简单的心跳小程序。最棒的一点是micro bit官网提供了板子的仿真程序,可以实时预览编程效果,所以不必购买真正的小板子也能开始使用micro bit,而且这一切都是免费的。
 

03-.jpeg

软件方面,支持微软开发的PXT图形化编程界面:
支持Windows、macOS、iOS、安卓等多种操作系统
编程环境基于Web服务,无需额外下载编译器
电脑端通过USB烧写、仿真程序
移动端通过蓝牙无线烧写、仿真程序
还支持包括Javasript、Python、Mbed C在内的
多种主流的编程语言:
Microsoft TouchDevelop IDE
Microsoft Blocks
CodeKingdoms Javascript
MicroPython
mbed enabled

硬件方面参数如下:
nRF51822处理器
16 MHz 32位 ARM Cortex-M0内核
蓝牙4.0低功耗/2.4GHz RF无线
16kB RAM
256kB Flash
KL26Z单片机
48 MHz ARM Cortex-M0+内核
128 KB Flash
地磁传感器 - MAG3110,I2C,获取三轴地磁数据
加速度传感器 - MMA8652,I2C,获取三轴加速度数据
3V电源接口
复位按键
Micro USB接口 - 可接入电脑烧写/仿真,串口通信
5x5 LED点阵 - 可显示文字、图形等
按键A/B - 可编程按键
I/O扩展接口 - 含SPI、UART、I2C、AD、PWM等接口

 

05.gif
06.gif

I/O
I/O包括环孔连接器:3个GPIO(P0、P1、P2),1个电源(3V),1个接地(GND),可以使用鳄鱼夹或4 mm香蕉插头;边缘连接器的针脚标号为micro:bit设备抽象层(DAL)指定的:P3、P0、P4-P7、P1、P8-P12、P2、P13-P16、3V(3个)、P19-P20、GND(3个),共19个可设置的GPIO,其中设置了:6个模拟输入(P0-P4、P10),可选的1路SPI总线(P13-P15),1路I²C总线(P19-P20);可设置出:3个PWM输出,1对UART串行收发[11]。 P3、P4、P6、 P7、P9、P10结合于LED阵列显示屏, P5、P11结合于按钮A、B。

 

04-.jpeg

micro:bit电原理图
 

z.jpeg

从属芯片
Micro:bit有一个真正扮演从属角色的芯片,是美国Freescale(已由荷兰NXP购并)的Kinetis KL26微控制器芯片,这颗晶片受nRF51822所控管,而它提供整个Micro:bit系统板两个主要作用,一是运作电压调节,另一是USB介面传输的仲介。Micro:bit是透过Micro USB连接器取得运作电力,但电压为5V,主控芯片nRF51822最高只能承受3.6V,无福消受5V,所以是由KL26充当电压调节器,透过KL26转成3.3V,再供系统板上各部位取用电力,最大可供应120mA电流,这一供电线路上也有装设瞬态电压抑制器(Transient Voltage Suppressor, TVS)以好避免静电放电(ElectroStatic Discharge, ESD)可能造成的破坏与影响。

 

严格来说,Micro:bit有三处取得电力的来源,Micro USB是一处,也可透过电池连接器(battery connector)或端缘接脚连接器(edge connector,Micro:bit上的特有词,因为Micro:bit系统板在电路板的边缘设置一排接脚,这个边缘就称之为edge)来取得,且透过二极体对供电来源进行切换,避免某一处供电来源对其他供电来源进行供电,避免错误。另一功用是传输仲介,Micro:bit接上电脑后,在电脑上开发好的程式要传到Micro:bit上,是先透过Micro USB连接器连到KL26,而后KL26再将程式传给nRF51822,反之亦然。在Micro:bit的官方网页上,主控芯片也称为应用程式处理器,因为使用者/开发者开发出的应用程式是由主控芯片所执行(多数系统均如此设计),而从属的KL26也因其作用而被称为介面处理器,此处所言的介面正是指USB/Micro USB介面。有趣的是,通常系统板上是以运算力最强的芯片充当主控芯片,因为该芯片最有效能余裕掌控与协调系统全局,但在Micro:bit上却不是,KL26无论在核心、核心频率、记忆体资源等各方面都高过nRF51822,但却只用来供电与USB介面仲介,KL26的GPIO与相关周边电路均没派上用场。另外,KL26支援USB 2.0与OTG(On-The-Go),而且支援USB Mass Storage Device的类别(class),所以接上电脑后可以在「我的电脑」里看到一个新加入的USB随身碟,其实就是指Micro:bit系统板。
 

 

10.jpg

主控芯片
Micro:bit的主控芯片是挪威Nordic Semiconductor公司的nRF51822,其实是颗低功耗蓝牙(Bluetooth Low Energy, BLE)的无线通讯收发器芯片,在一般的系统设计上这颗芯片多是扮演从属( slave)的角色,将无线收发讯息传递给系统上的主控芯片(host),但在Micro:bit上它就是个主控芯片,有点「蜀中无大将,廖化当先锋」的感觉。nRF51822芯片只有16KB的RAM、128KB的ROM,官方的资料显示,此芯片的主要想定应用是蓝牙滑鼠/键盘/触控板、游戏或家电遥控器、智慧手环、Beacon等。nRF51822在Micro:bit上至少要执行三件事,一是蓝牙的通讯协定堆叠,二是作业系统程式(根基于ARM主导的mbed OS),三是使用者(user/developer)开发并载入的应用程式。nRF51822芯片本身也有GPIO、PWM、I2C、ADC等功能,其中Micro:bit上的加速度感测器、磁阻感测器即是透过I2C介面与nRF51822芯片连接。

 

09.jpg

主控芯片
Micro:bit的主控芯片是挪威Nordic Semiconductor公司的nRF51822,其实是颗低功耗蓝牙(Bluetooth Low Energy, BLE)的无线通讯收发器芯片,在一般的系统设计上这颗芯片多是扮演从属( slave)的角色,将无线收发讯息传递给系统上的主控芯片(host),但在Micro:bit上它就是个主控芯片,有点「蜀中无大将,廖化当先锋」的感觉。nRF51822芯片只有16KB的RAM、128KB的ROM,官方的资料显示,此芯片的主要想定应用是蓝牙滑鼠/键盘/触控板、游戏或家电遥控器、智慧手环、Beacon等。nRF51822在Micro:bit上至少要执行三件事,一是蓝牙的通讯协定堆叠,二是作业系统程式(根基于ARM主导的mbed OS),三是使用者(user/developer)开发并载入的应用程式。nRF51822芯片本身也有GPIO、PWM、I2C、ADC等功能,其中Micro:bit上的加速度感测器、磁阻感测器即是透过I2C介面与nRF51822芯片连接。

 

11.jpeg

Arudino IDE可以应对很多高级复杂的项目,这是其他所欠缺的,比如MicroPython会遇到内存不足的问题,而MakeCode封装了组件从而是开发变得简单,但也因此失去了自由书写代码的能力。这里先尝试添加NRF5x 开发板支持,因为micro:bit所使用的nRF51控制器并没有被Arduino IDE原生支持,需要手动添加。

在Arduino中,转到“首选项”并添加  https://sandeepmistry.github.io/ ... 5_boards_index.json 到“其他Board Manager URL”文本框中。

如果这不是您的第一个,请确保使用逗号分隔网址。
 

12 (1).jpg

没想到体积还挺大的,下载了快二个小时......

 

13 (1).jpg
14 (1).jpg
15 (1).jpg

从菜单栏打开工具>开发板>开发板选择————选择BBC micro:bit板子。

 

16 (1).jpg

 

设置SoftDevice为S110。

 
17 (1).jpg

端口设置为BBC micro:bit

 

18 (1).jpg

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十一: BBC microbit micro:bit,bit go,bit club python图形编程开发板**

项目:使用Arduino IDE尝试给 Micro:bit 编程

Arduino参考开源代码


 

代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十一: BBC microbit micro:bit,bit go,bit club python图形编程开发板**

项目:使用Arduino IDE尝试给 Micro:bit 编程
*/

const int COL1 = 3;     
const int LED = 26;   

void setup() {  
  Serial.begin(9600);
  
  Serial.println("microbit is ready!");

  pinMode(COL1, OUTPUT);
  digitalWrite(COL1, LOW);
  pinMode(LED, OUTPUT);   
}

void loop(){
  Serial.println("world blink!");
  
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
}

19 (1).jpg
20.jpg
21.jpg

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百七十一: BBC microbit micro:bit,bit go,bit club python图形编程开发板**

项目:点亮Micro:bit当中那颗LED

Arduino参考开源代码


 

代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验一百七十一: BBC microbit micro:bit,bit go,bit club python图形编程开发板
项目:点亮Micro:bit当中那颗LED
*/

#define LED_ROW2 27
#define LED_COL3 10

void setup() {

  // put your setup code here, to run once:

  pinMode(LED_ROW2, OUTPUT);

  pinMode(LED_COL3, OUTPUT);

}


void loop() {

  // put your main code here, to run repeatedly:

  digitalWrite(LED_ROW2, 1);

  digitalWrite(LED_COL3, 0);

}

Arduino实验场景图

 

22.jpg

Micro:bit通过手机安卓线连接电脑后,显示为U盘。
 

23 (1).jpg

hex是Micro:bit的程序格式,出厂演示代码(OutOfBoxExperience-v2.hex)用C ++编写的,因此不会在MakeCode或python编辑器中加载,直接在电脑上拖放操作就行。

 

25 (1).jpg

07 (3).gif

 

Micro:bit - 初始/预装程序,出厂演示例程
你也可以在(https://support.microbit.org/sup ... rience-demo-program)找到它。
#原厂预装程序都做了什么,怎么玩?

请看 Intro to the BBC micro:bit(https://make.techwillsaveus.com/ ... -for-the-first-time) 此文介紹:

 1. LED闪烁
 2. 滚动显示 HELLO 字符串
 3. 指示玩家按 A 键
 4. 指示玩家按 B 键
 5. 滚动显示 SHAKE! 字符串,摇晃主板把所有的LED灯都摇亮  
 6. 滚动显示 CHASE THE DOT 字符串,用常亮的光点去吃掉闪烁的光点
 7. 滚动显示 GREAT! NOW GET CODING! 字符串.
 8. 各种图案不断的变换出现

就这样,沒了吗? A+B两键同时按下去看看,哇!有彩蛋!是个类似贪吃蛇的小游戏。
 

07 (1).gif
07 (2).gif

常用的 micro:bit 程序编辑器按照底层核心技术主要分为四类:

 

Scratch 编辑器(图形指令)
微软 makecode 编辑器(图形指令)
Python 代码编辑器(代码指令)
Ming+综合编辑器(图形指令+Arduno+microPython)


1、Scratch3.0 编辑器(离线版)

在WIN10的应用商店下载免费的Scratch link,并安装

 

26.jpg
 

同时用拖拉方式,在micro:bit板子上拷入驱动“scratch-microbit-1.1.0.hex”


(这里下载 https://downloads.scratch.mit.ed ... robit-1.1.0.hex.zip

 

 

通过蓝牙同步,不用下载,程序可以保存在电脑本地。
 

27.jpg

2、微软 makecode 编辑器(图形指令)
在线版本,链接 https://makecode.microbit.org/v1#editor

编好程序,下载到本地,在电脑上拖放操作即可。

 

28.jpg

29.jpg

3、Python在线编辑器

编程语言:支持流行的 Python 编程语言;
功能:支持更多的 micro:bit 操控功能,例如,让 micro:bit 上的 LED 灯按照不同的亮度点亮,这个功能目前只能在代码编程中才能实现。

链接 https://python.microbit.org/v/1.1

 

30.jpg

32.jpg

31.jpg

偶然发现WIN10应用商店里面有《MakeCode》的离线版本
《MakeCode for micro:bit》,安装了,挺方便的

 

33.jpg

使用百度翻译的相关介绍:

micro:bit的makecode
micro:bit是一种有趣的方式,任何人都可以通过物理计算获得创造力。此应用程序将允许您使用易于学习、基于块的Microsoft MakeCode语言和JavaScript直接编程micro:bit。即使没有micro:bit设备,您也可以使用内置模拟器尝试虚拟micro:bit。

除了对micro:bit进行编码之外,这个应用程序在makecode.microbit.org的编辑器上还有一些额外的功能,这些功能可以在micro:bits上使用最新的接口固件:
-通过USB自动编程micro:bit,无需将文件拖放到micro:bit驱动器上。
-直接从您的micro:bit读取串行数据,用于数据记录和其他有趣的实验

自2016年12月起出售的位将自动与上述功能。对于较老的micro:bits(例如那些属于英国免费辍学的部分),请参见https://makecode.microbit.org/device/windows-app/troubleshoot
有关该设备的更多详细信息,请参见http://microbit.org



此版本的新增功能
makecode的实时版本已经更新,因此w10应用程序现在使用最新版本的makecode。更改的完整列表可以在这里找到:https://support.microbit.org/sup ... locks-editor-update。如果你想使用旧版本的makecode,你仍然可以在https://makecode.microbit.org/v0上在线使用。

目前,即时闪烁和串行数据读出将在接口固件v0241或更新版本的micro:bits上工作,其中包括自2016年12月以来销售的所有micro:bits。如果你有一个micro:bit作为英国bbc推出的一部分免费提供,你可以升级到最新的固件。请参阅此处的疑难解答页面:https://makecode.microbit.org/device/windows-app/troubleshoot
请使用下面的支持链接报告任何问题,并说明您正在使用MakeCode Windows 10应用程序。

功能
用makecode编码micro:bit
直接控制 micro:bit
创造惊人的项目和游戏

评论

user-avatar
  • hacker_

    hacker_2023.08.02

    666

    0
    icon 他的勋章
      展开更多