第三章 传感器:Chapter 3 of KitiBot for Micro:bit

第三章 传感器

Micro:bit 板子上集成了温度传感器,加速度计,电子罗盘等传感器。这一章我们来写程序控制这些传感器。

第一节 温度传感器

Micro:bit实际上板子是没有真正的温度传感器。它现在所谓的温度测量实际就是用主芯片的内部温度传感器。正规的用法只是用来检测芯片的温度。而不是用来测环境温度。虽然芯片的温度和环境温度有一定的误差,但是我们也大概知道环境温度。

主芯片是这个nRF51822,温度传感器就在这里面。


在"输入"积木类中找到温度积木,并通过显示数字积木显示出来,可以在模拟区域看到点阵屏幕会显示当前温度,改变温度显示的数值也会改变。


将程序下载到micro:bit中,用手摸着主芯片一会,可以看到示数增加。

第二节 加速度计

micro:bit 板上集成了一个加速度传感器MMA8652,左下角很小的芯片就是加速度传感器


可能很多小伙伴不明白什么是加速度,下面就简单讲解一下什么是加速度。

根据牛顿第二定律,物体受到作用力就会有加速度,加速大小和作用力大学成正比,和物体质量成反比。加速度的方向和作用力的方向相同,公式:F=ma。

是不是各位小伙伴已经开始怀疑人生了?好吧,还是说人话。

简单的说,物体在某一个方向受到力的作用,就会有往这个方向运动的趋势,这个趋势就叫做加速度。趋势表示是想往这个方向运动,有可能是没有运动的。例如我们受到重力的作用,如果没有没有物体支撑我们就会往下掉,有一个向下运动的趋势,这个就是叫重力加速度。重力加速度大小用g表示。

加速度是是分别测 x,y,z 三个坐标轴的数据,根据三个坐标轴的数据就可以得到合加速度的方向。如果micro:bit在只有重力作用的时候,重力加速度是向下的。根据x,y,z三个分坐标数据的大小,即可判断micro:bit 的姿态。


下面通过实验来验证一下,在"输入"积木类中找到下面这个积木。


此积木可以识别到如下这些状态,当自由落体时,加速度为0。 3g,6g,8g表示多少倍重力加速度。用大力摇晃可以达到这些状态。


在模拟区摇动可以看到不同的状态,点阵屏显示不同的图标,小伙伴可以将代码下载到micro:bit 看下实际运行效果是否一致。

第三节 磁力计

micro:bit 板上集成了一个磁力传感器MAG3110。图中红色方框中就是磁力传感器。和加速度计类似,磁力计也是由X,Y,Z轴的数据得到磁场的方向和大小了。


我们通过条形图来显示磁场的大小。


程序首次运行后LED点阵会显示字符串"DRAW A CIRCLE",提示画一个圆,主要作用是让micro:bit 移动不同的位置校准磁力计。之后中间会有一个LED点亮,不断往各个方向转动micro:bit,直到显示这样一个圆形后校准成功。


显示一个笑脸之后,程序就会正式运行了。

开始时只会显示少量几个LED,当用此贴慢慢靠近磁力计传感器后,磁场慢慢增大,显示的LED也会越来越多。

顺便说一下,喇叭都是带有磁铁的,用手机的喇叭慢慢靠近磁力计传感器磁场就会增大,点亮的LED就会增多。

第四节 指南针

Micro:bit 是没有单独的指南针传感器的,用加速度计和磁力计的数据结合就可以实现指南针的功能。

加速度计会受到重力加速度的,重力加速度方向是垂直向下的,根据加速度会确定micro:bie的当前姿态,

而磁力计会受到地磁场的作用,地磁的水平分量总是指向地磁北极的,所以将加速度计和磁力计的数据融合就可以得到地磁北极的位置。

注意:指南针时micro:bit 应该静止不动,而且不能受到其他磁场的影响,否则测量数据不准确。


程序首次运行同样需要画一个圆校准,程序运行后,会显示X轴相对北极的位置,micro:bit 水平放置,慢慢旋转直到示数为0时,X轴指向的方向即为北极

第五节 亮度

实际Micro:bit上没有光线传感器,他是通过LED矩阵来感知周围的光,通过反复地将一些LED驱动器转换成输入并采样电压衰减时间,这与环境光的水平大致成正比。

通过亮度级别这个积木来获得环境亮度,数值范围是0~255.


我们还是通过条形图来显示亮度级别,在模拟区可以知道点阵屏LED点亮数量和亮度有关,亮度越大点亮的LED越多,于是神奇的事情发生了,用一个手电筒照着点阵屏就会点亮更多的LED灯。