8112| 0
|
[教程] Mind+Python编程进阶系列课程—02 简易气象站 |
本帖最后由 木子呢 于 2021-11-9 16:52 编辑 第二课、简易气象站 课程目录:一、实践情境 当我们去旅游景区的时候,常常在显示屏上看到或者在广播听到空气温度、空气湿度、负氧离子含量等气象信息数据。这些数据几乎都来自景区气象站的实时监测。然而,景区的气象信息都是针对室外的,那当我们待在室内时,如何才能实时获取室内的环境信息呢?如果你也有这些困惑,就请跟着我们来完成一个室内的简易气象站吧! 二、实践目标 本实践项目运用micro:bit作为智能终端,通过DHT11温湿度传感器采集数据,来制作一个简易的气象站。 三、知识目标 1、 认识DHT11温湿度传感器,简单了解温湿度传感器的工作原理。 2、 认识micro:bit上的点阵屏,掌握其基本使用。 3、 使用micro:bit作为智能终端,掌握通过编写python程序检测环境温湿度的方法。 四、实践准备 硬件清单: 软件使用:mind+编程软件x1
五、实践过程 在本项目中,我们将利用DHT11温湿度传感器,设计一个简易的气象站,来实时检测环境的温湿度。 1、实时监测环境温湿度 2、对温湿度数据进行可视化处理 Tips:下面课程中的数据是在夏季室温30℃左右的环境下测量而得,不同季节测得的数据并不相同。 任务1:环境温湿度实时检测 1.分析设计 在本任务中,我们将对室内的环境温湿度进行实时监测。这里,我们可通过扩展板将DHT11温湿度传感器与micro:bit开发板相连接,实时检测环境的数据并将其显示在点阵屏和软件终端上。 2.硬件搭建 STEP1:通过传感器连接线将DHT11温湿度传感器连在扩展板的P1端口。 STEP2:将micro:bit开发板插入I/O扩展板,并通过USB连接线将micro:bit接到计算机。 Tips:使用扩展板时必然需要将开发板插入,而micro:bit与计算机的连接也始终需要usb线,因此,后续教程中我们将不再赘述该步骤。 3.软件编写 软件设置: STEP1:创建与保存项目文件 启动Mind+软件,选择“Python模式”,另存项目并命名为“m简易气象站”。 STEP2:创建与保存python文件 创建一个python程序文件“任务一.py”,双击打开。 Tips:由于之前已安装过pinpong库,这里我们无需再次安装。 程序编写、运行及回顾: STEP1:编写python程序 import time#导入时间库from pinpong.board import Board,Pin,DHT11#导入pinpong.board包中的Board,Pin,DHT11模块from pinpong.extension.microbit import *#导入pinpong.extension.microbit包中的所有模块Board("microbit").begin()#初始化,连接板子,选择板型和端口号,不输入端口号则进行自动识别dht11 = DHT11(Pin(Pin.P1))#创建DHT11对象 while True:#永久循环 temp = dht11.temp_c() #读取摄氏温度 humi = dht11.humidity() #读取湿度 display.scroll(temp)#点阵屏滚动显示温湿度的值 display.scroll(humi) print("dht11 temperature=",temp," humidity=",humi)#终端打印显示 time.sleep(1)#延时1秒 STEP2:运行程序并观察效果 (1)运行程序,观察软件终端 点击mind+软件右上方的运行按钮,我们可以看到在终端中显示测得的温度和湿度数据。 (2)观察点阵屏 同时,观察点阵屏,我们可以发现测得的数据同样在屏幕上滚动播放。 STEP3:回顾程序
4.调试修改 至此,我们成功制作了一个简易的气象站,实现了对室内环境温湿度的实时监测。并且我们发现,当气温达到30℃,或相对湿度达到50%时,我们就会感到闷热,这时候就可以打开空调解暑降温啦。而为了能及时打开空调,我们可进一步优化气象站,为其添加高温预警功能,实现当温度或湿度达到30℃和50%时,蜂鸣器发出警报声。 STEP1:编写程序 import time#导入时间库from pinpong.board import Board,Pin,DHT11#导入pinpong.board包中的Board,Pin,DHT11模块from pinpong.extension.microbit import *#导入pinpong.extension.microbit包中的所有模块Board("microbit").begin()#初始化,连接板子,选择板型和端口号,不输入端口号则进行自动识别dht11 = DHT11(Pin(Pin.P1))#创建DHT11对象while True:#永久循环 temp = dht11.temp_c() #读取摄氏温度 humi = dht11.humidity() #读取湿度 display.scroll(temp)#点阵屏滚动显示温湿度的值 display.scroll(humi) time.sleep(5)#延时5秒 print("dht11 temperature=",temp," humidity=",humi)#终端打印显示if temp >30 or humi >50:#条件 music.play_buzzer(Pin.P0, "F/F3", 1)#P0口,播放声音,音符"F/F3",节拍1 time.sleep(1)#延时1秒 任务2:数据可视化 至此,我们的气象站不仅能实时监测温湿度,亦能在高温时发出预警。但我们知道,真正的气象站不仅仅能实时检测,而且能对检测到的数据进行可视化处理,进而发现数据的特点以作深入研究,比如统计在不开空调或取暖器的情况下一天中室内温度低于0℃的时长等等。因此,接下来,我们将加长实验时间,检测并记录夏季的某个上午的温湿度,并对数据进行可视化处理,进而探究一下当天上午,室内温湿度的变化情况。这里,我们将数据以折线图形式呈现即可。 1.数据可视化与分析 数据记录: STEP1:自建一个Excel文件,将早上6-11点中,每隔十分钟的温度和湿度数据记录下来,并以csv格式保存。 软件设置: STEP1:创建与保存python文件 创建一个python程序文件“任务2数据可视化.py”,双击打开。 STEP2:导入数据文件 将自己测得并记录数据的表格文件存放入python程序文件所在文件夹,使其在同一目录下。 Tips:这里我们提供了一组数据(见附录1)以作案例分析。 程序分析、编写并运行: STEP1:分析程序 这里我们已借助DHT11温湿度传感器,采集到室内温度和湿度的数值并记录在了表格文件中,而为了便于对数据进行读取和分析,我们依旧通过编写程序使其以图表形式呈现出来。 整体上,我们将采用顺序结构的方式编写程序。具体流程如下, STEP2:编写Python程序 # -*- coding: utf-8 -*-import pandas as pd#导入pandas库并用pd来表示import matplotlib.pyplot as plt#导入matplotlib库中的pyplot绘图模块,并用plt表示data = pd.read_csv("温湿度数据.csv",encoding='gb18030')#导入csv格式表格数据plt.rcParams['font.sans-serif'] = ['SimHei']#设置中文字体plt.title("温湿度检测")#绘制标题plt.ylabel("数值")#绘制x轴标签plt.xlabel("时间")#绘制y轴标签x_data1=data.iloc[:,0]#选取表格第一列并以此作为折线1的x轴数据y_data1=data.iloc[:,1]#选取表格第二列并以此作为折线1的y轴数据x_data2=data.iloc[:,0]#选取表格第一列并以此作为折线2的x轴数据y_data2=data.iloc[:,2]#选取表格第三列并以此作为折线2的y轴数据plt.plot(x_data2,y_data2,color='blue',label="温度",linewidth=2.0)#绘制折线,并设置折线的颜色、标签、线宽plt.plot(x_data1,y_data1,color='yellow',label="湿度",linewidth=2.0)#绘制折线,并设置折线的颜色、标签、线宽plt.legend()#显示图例(标签)plt.show()#显示图像 STEP3:运行程序并分析数据 (1)运行程序,我们看到csv表格中的数据以图表的形式呈现了出来。 (2)观察上图,我们可以清楚地发现,在上午时,随着时间的增加,室内温度值也在不断上升,而湿度值则相对趋于稳定。 2.调试修改 继续增加实验时间,看一看在一整天内环境温湿度是怎样变化的呢? 六、巩固提高 1.项目小结 本节课我们以micro:bit、扩展板及DHT11温湿度传感器为器件自制了一个简易的气象站。首先通过传感器实现了对室内环境温湿度的实时检测,之后添加了高温预警功能,最后将测得的数据以折线图的形式呈现后加以分析。 2. 项目拓展 在闷热的夏季,我们可以借助气象站来高温预警,那如果是在寒冷的冬季,我们是否也能对低温进行警报呢?修改程序试一试吧! 附录 附录1 数据文件 链接:https://pan.baidu.com/s/1D7wQp0H9vQW52UC_17ALjw 提取码:mxb3 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed