EVE 发表于 2021-7-29 17:31:49

「BXY」掌控板 高中信息技术教程—感知环境促健康

本帖最后由 EVE 于 2021-8-2 16:02 编辑

一、实践情境

在我们的生活中,温度和空气湿度对健康至关重要。温湿度的过高或过低都会影响到我们身体的状态,甚至可能会生病。为此,本节课上,我们将自制一个能够检测环境气温和空气湿度的装置,它能帮助我们实时监测环境温湿度,并且在环境变差时提醒我们。



## 二、实践目标

本实践项目运用掌控板作为智能终端,通过DHT11温湿度传感器采集数据,来实时检测环境温湿度并设置高温提醒。

## 三、知识目标

1. 认识I/O扩展板、DHT11温湿度传感器等硬件设备;
2. 理解DHT11温湿度传感器的使用和接线方法,能根据连线图进行实物连接;
3. 掌握以掌控板为智能终端,通过BXY软件编写代码采集DHT11温湿度传感器数据的方法;

## 四、实践准备

### 硬件清单

| [掌控板](https://www.dfrobot.com.cn/goods-1902.html)x1       | (https://www.dfrobot.com.cn/goods-1959.html)x1    | (https://www.dfrobot.com.cn/goods-2843.html)x1 | (https://www.dfrobot.com.cn/goods-109.html) x1 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550587620-image.png) | ![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550598353-image.png) | ![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550617159-image.png) | ![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550627614-image.png) |


### **软件使用:**(https://bxy.dfrobot.com.cn/)

#### 知识链接

**I/O扩展板**

> 简介:这里的“I、O”分别是“input”输入和“output”输出的缩写,I/O扩展板的作用是将micro:bit上的IO口以引脚口的形式引出,方便我们接入传感器、执行器等模块。IO口与micro:bit上的接口一一对应。Tips:关于扩展版的详细介绍可见附录1。
> ![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550639009-image.png)


**DHT11温湿度传感器**

> **简介**:DHT11温湿度传感器是传感器的一种,它的功能则是用于采集温度和湿度数据,让我们可以通过掌控板看到环境的温湿度数据及变化。
>
> 连接模块,并进行简单控制读取环境温湿度数据。详细连接与操作参考教程文档。
> ![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550653651-image.png)


## 五、实践过程

在本项目中,我们将利用DHT11温湿度传感器,分两步设计一个温湿度检测装置,来实时检测环境的温度与空气湿度,并在环境变差时进行提醒。

1、实时检测环境温湿度
2、添加提醒功能

---

###任务1:环境温湿度实时检测

#### 1、硬件搭建

**STEP1**:将掌控板插入I/O扩展板,注意正反,OLED屏幕朝扩展板上“掌控板”图标方向

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550665685-image.png)

**STEP2**:通过传感器连接线将DHT11温湿度传感器连在扩展板的P0端口。其中,红线和黑线分别对应电源正极和负极,绿线对应信号线,用来传输信号。
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550671969-image.png)

> 注:此处传感器接到了扩展板的P0接口,这里接口与后续编程中程序使用的接口号需要一致。如果这里接到了P2,在程序中,所有P0的指令需要替换为P2。

**STEP3**:通过USB连接线将micro:bit接到计算机。
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550692550-image.png)

连接完成后如下图,
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550705717-image.png)


#### 2、软件编写

在首次编程时,我们将先对软件进行设置,之后再编写程序。

**STEP1**:软件设置

1、创建与保存项目文件

(1)启动BXY编程软件,选择主控板类型为“掌控板”

> 注:如果是第一次在电脑上使用掌控板,需要先安装驱动,如下右图。

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550718606-image.png)
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550727421-image.png)

(2)单击左上角的“文件”按钮
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550738816-image.png)

(3)在弹出的框内点击“新建”按钮
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550745494-image.png)

之后我们会看到有一个名为“untitled”项目文件生成,
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550760633-image.png)

(4)创建完成后,点击菜单栏“文件”中的“另存为”
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550767221-image.png)

(5)在弹出的界面中选择保存位置,输入文件名“z1.1”,保存类型默认
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550775068-image.png)

> Tips:保存位置和文件名称可自选

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550789438-image.png)

保存完成后,我们即可开始编程,
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550796686-image.png)


**STEP2**:程序编写

```
from mpython import *
from dht import DHT11
import time      #导入程序必要的包和块
dht=DHT11(Pin(Pin.P0))#设置DHT11传感器引脚
while True:
    dht.measure()
    oled.fill(0)
    oled.DispChar("温 度:",0,10)
    oled.text("%d" % (dht.temperature()), 48, 14)
    oled.DispChar("湿 度:",0,35)
    oled.text("%d" % (dht.humidity()), 48, 40)
    oled.show()
    time.sleep(1)
```

#### 3、运行调试

**STEP1**:点击“烧录”上传程序

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550805565-image.png)

烧录完成后可以看到有提示字样,

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550810549-image.png)

同时,如上图,在软件右侧界面,我们也可以看到主控板内的所有程序文件(具体文件依实际情况而定)

**STEP2**:运行程序文件

(1)找到上传的程序文件,并点击”...”。Tips:若程序有多页,可通过上下翻页进行查找。

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550909903-image.png)

(2)在弹出的操作中,选择“运行程序”

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550915515-image.png)

**STEP3**:观察效果

观察掌控板,我们可以发现测得的温湿度值分别显示在屏幕上

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550924418-image.png)

> 注:由于在BXY软件中有关于DHT11的示例程序,因此我们也可以直接打开调用而不手动编辑。具体操作步骤见附录2。

---

### 任务2:添加提醒功能

在上个任务中,我们已经完成了对于环境温湿度的实时检测,接下来,我们将在此基础上,为这个装置添加提醒功能,当实时检测到的环境温度过高时,点亮三颗LED,否则熄灭。

#### 1、软件编写

**STEP1**:软件设置

1、新建一个项目文件并命名为“z1.2”

**STEP2**:程序编写

```
from mpython import *
from dht import DHT11
import time
dht=DHT11(Pin(Pin.P0))
while True:
    x = dht.temperature()#定义温度值为X
    y = dht.humidity()   #定义湿度值为Y
    dht.measure()
    oled.fill(0)
    oled.DispChar("温 度:",0,10)
    oled.text("%d" % (dht.temperature()), 48, 14)
    oled.DispChar("湿 度:",0,35)
    oled.text("%d" % (dht.humidity()), 48, 40)
    oled.show()
    time.sleep(1)
    if x > 31:
      rgb = (16 ,16 ,16)
      rgb = (16 ,16 ,16)
      rgb = (16 ,16 ,16)
      rgb.write()
    if x <= 31:
      rgb = (0 ,0 ,0)
      rgb = (0 ,0 ,0)
      rgb = (0 ,0 ,0)
      rgb.write()
```

#### 2、运行调试

**STEP1**:点击“烧录”上传程序

将新编写的“z1.2”程序文件烧录上传至掌控板中。

**STEP2**:运行程序文件

在弹出的“主控板文件”中找到“z1.2”程序文件,并运行观察效果。我们发现掌控板屏幕上方的三颗LED始终处于熄灭状态,如下左图。

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550939630-image.png)

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550951379-image.png)

**STEP3**:将装置放在环境温度较高的区域,如夏季的室外等

观察掌控板,三颗LED已被点亮,如上右图。

> 注:程序中的“31”是我们依据实验情况设定的温度达到不宜健康时的临界值,可以依据各自的实际情况设置。

## 六、延伸拓展

**思考**

1、关于室内环境的数据,还有什么数据可以作为室内环境健康度的参考值?我们手头是否有工具可以对其进行测量?

2、影响人体健康状况的除了外部环境,还有就是人体的自身条件了,想一想如果想判断一个人的健康情况,可以从哪些身体数据进行分析?

## 附录

### 附录1:拓展阅读

**I/O扩展板**

> 详细介绍:
>
> I/O扩展板能完全兼容micro:bit和掌控板两种主板。正面插入掌控,反面插入micro:bit。引出10路数字/模拟3Pin口,两路IIC口以及一路UART口;板载两路电机驱动,且不占用额外引脚;板载PH2.0及microUSB两种供电口,既可以通过usb线也可以通过电池盒或者锂电池供电,供电电压3.5-5V,板载开关,可以开关外接供电电源;板载一个高品质蜂鸣器,且带有开关控制,可以随时关闭蜂鸣器;引出了9个鳄鱼夹接口;分别兼容掌控的触控金手指和micro:bit金手指。扩展板兼容乐高尺寸孔位,可以与乐高进行拼插结合。
>
> 供电方式:
>
> 主板直接供电: 采用主板的USB或者电源口供电,此时,可以使用扩展板的各种扩展口及蜂鸣器。因主板驱动电流有限,此模式下无法使用电机驱动。
>
> USB供电口供电: 使用电脑USB口供电或者充电宝,或者手机充电头供电。接口为microUSB。此模式下,扩展板的所有功能均可使用。
>
> 外接电池盒供电: 外接PH2.0接口输入电压为3.5~5V,使用PH2.0接口的3节干电池盒或者3.7V锂电池,均可。此模式下,扩展板的所有功能均可使用。
>
> 接掌控板使用方法
>
> 掌控板的OLED屏幕的那一面,对着掌控的图标那个方向插入,如图所示:
> ![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550963464-image.png)



此时,扩展板支持的功能如下:

- 所有的IO口
- 2路电机驱动
- 0 1 2 3V GND 金手指
- USB供电和PH2.0外接供电口供电及电源开关。
- P Y T H O N触摸金手指。

> 注:掌控模式下,不支持扩展板上的蜂鸣器,使用掌控板的时候,请将蜂鸣器关闭,此时,可正常使用P0口。

| 技术规格                                                   |
| ------------------------------------------------------------ |
| 外接3节5号干电池(3.5V~5V)或3.7V锂电池, PH2.0接口          |
| USB接口外接供电(3.5V~5V) MicroUSB接口                      |
| 掌控板电源供电(注:由于掌控板IO口驱动能力有限,使用掌控板供电,无法驱动大功率外设,如需使用电机等设备,请使用外接电池或者外接USB口供电) |
| IO口:P0 P1 P2 P8 P9 P12 P13 P14 P15 P16(注:掌控板不支持使用P12口) |
| I2C接口 ×2                                                   |
| 串口 ×1 (P13 P14)                                          |
| 引脚金手指 :0 1 2 3V GND                                    |
| 触摸金手指×5:P Y T H O N (掌控独有)                     |
| microbit蜂鸣器×1 P0口 (microbit有用,掌控模式下,请关闭蜂鸣器开关,避免占用P0口) |
| 电机驱动×2                                                   |
| 金手指孔径:4.8mm兼容乐高                                    |
| 金手指孔距:8mm兼容乐高                                    |
| 底部黑色亚克力保护                                           |
| 尺寸:80*42mm                                                |

---

### 附录2:BXY软件操作步骤

**STEP1**:首先切换到掌控板模式

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550972463-image.png)

**STEP2**:注意:如果是第一次在电脑上使用掌控板,需要安装驱动。
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550980046-image.png)

**STEP3**:如果掌控板中没有固件,则会提示烧录固件,也可以手动在“工具”菜单下选择“恢复固件”。
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550988510-image.png)
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550994663-image.png)

**STEP4**:连接成功后“文件系统”自动弹出,包含各种示例程序以及掌控板内部的文件列表。
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627550998838-image.png)

**STEP5**:打开示例程序,文件-示例-External-02.dht11.py (这个程序就是用于使用dht11传感器检测环境温湿度的示例程序)
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627551009116-image.png)
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627551016717-image.png)

**STEP6**:点击烧录上传程序,就可以在文件系统中看到上传好的程序。
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627551024697-image.png)

**STEP7**:这时掌控板的屏幕显示内容为掌控板的logo及文字,需要选择对应的py文件右键选择“运行程序”,则掌控板这端就会开始运行。

> Tips:在BXY中,“烧录”操作的意义为将python程序上传到掌控板中,掌控板中可以存储多个python文件,因此需要运行程序时,可以选择对应的py文件右键选择“运行程序”。
> 注意:掌控板重启后默认运行名称为main.py的程序,如果需要让程序开机时自动执行则可以将文件命名为main.py。

![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627551036286-image.png)

**STEP8**:运行效果

在按照接线图接好模块,烧录并运行程序得到的结果如图,在屏幕上显示实时温度与湿度数据。
![](https://cdn.jsdelivr.net/gh/kikiyakiki/picture/2021-7-29/1627551045020-image.png)

jsp 发表于 2021-8-4 16:22:29

很详细啊!{:5_116:}
页: [1]
查看完整版本: 「BXY」掌控板 高中信息技术教程—感知环境促健康