APP下载

基于物联网的智能天气识别系统设计

2021-01-27郑博培

物联网技术 2020年12期
关键词:PC机温湿度串口

郑博培,李 媛

(北京联合大学 机器人学院,北京 100020)

0 引 言

随着经济快速发展,国内智能家电使用量不断增加[1]。但目前智能家电的数据(天气数据等)获取形式较为单一[2],均通过网络获取。鉴于地域天气多变且范围广[3],网络数据存在精度不高的缺陷。基于此,本文设计了基于物联网的智能天气识别系统,可获取当前小范围地区较精确的天气信息,并提高智能家电决策效果,降低数据请求成本,更好服务于用户。

1 系统结构

智能天气识别系统包括温湿度数据采集系统、无线传输系统、上位机数据处理系统。

1.1 温湿度数据采集系统

温湿度数据采集系统由DS18B20测温模块、DHT11湿度采集模块组成。温湿度传感器连接Arduino UNO开发板的数字量和模拟量输入端口。Arduino UNO是一款基于ATmega328P的微控制器开发板[4-5],拥有14个数字输入/输出引脚(其中6个可用作PWM输出),6个模拟输入引脚,及16 MHz晶振时钟、USB接口、电源插孔、ICSP接头和复位按钮。

DS18B20测温模块[6]的测温原理如图1所示。图中低温度系数晶振的振荡频率受温度影响较小,所产生的固定频率脉冲信号输送到减法计数器;高温度系数晶振的振荡频率受温度影响变化较大,所产生的信号作为减法计数器的脉冲输入。此外,图中还隐含有计数门,当计数门打开时,DS18B20会对低温度系数振荡器产生的固定频率脉冲进行计数,完成温度测量。

DHT11的核心部件是湿敏电阻。当空气中的水蒸气吸附在感湿膜上时,DHT11的电子元件电阻率和电阻值发生变化,利用这一特性即可测量湿度。

1.2 信息传输系统

信息传输系统采用ZigBee协议搭建无线传感网[7]。CC2530是用于2.4 GHz IEEE 802.15.4、ZigBee和RF4CE的片上系统(SoC)解决方案[8-9],包含RF收发器、标准增强型8051 CPU、系统内可编程闪存、8 KB RAM等功能部件,能够以较低的材料成本建立起超强网络节点。

本系统将Arduino UNO开发板与ZigBee模块通过串口连接,作为物联网感知层的传感器节点。Arduino UNO开发板采集天气信息并处理后,通过串口传送给CC2530模块,CC2530模块将温湿度数据信息通过无线网络实时发送给协调器。USB接口与PC机连接,将接收的传感器节点温度、湿度信息通过串口发送给上位机系统。

1.3 上位机数据处理系统

上位机数据处理系统的硬件设备可采用PC机或工控机。PC机、工控机均可通过USB口转串口接收协调器的温湿度信息,并应用Scikit-learn模型进行当前天气状况的识别。此外,PC机和工控机还可生成当日、当月天气数据统计表并打印,便于使用者对天气情况进行统计和管理。

2 系统软件设计

智能天气识别系统软件分为传感器信息采集软件、无线通信软件、信息处理软件(天气识别软件)。

2.1 传感器信息采集软件

传感器信息采集软件使用Arduino IDE编程语言开发[8]。由于温湿度均为慢变参数,因此设定程序采样周期为5 s;Arduino串口通信速率设置为9 600 b/s,Arduino通过串口将采样数据发送给CC2530芯片。

程序通过导入Arduino资源包,引用DHT11库函数,以便在程序中调用相关参数。

#include

#include

定义引脚,将1 wire数据总线与IO4连接;定义温度、湿度引脚为2号引脚,并实例化一个对象。

#define ONE_WIRE_BUS 4

#define DHT11PIN 2

dht11 DHT11

Arduino数据采集及传输流程如图2所示。

图2 Arduino数据采集及传输流程

2.2 无线通信

无线通信软件包括协调器软件和传感器节点软件。

2.2.1 协调器程序

协调器负责组建无线传感网,并接收传感器节点信息,通过USB接口将信息传输给PC机。协调器程序流程如图3所示。

2.2.2 传感器节点程序

CC2530模块通过串口接收Arduino采集的数据信息,并通过无线网传输。传感器节点程序流程如图4所示。

2.3 信息处理软件

协调器通过RS 232串行协议通信方式将天气信息数据传输给PC机,PC机将通过串口小程序接收的温度、湿度数据存入MySQL数据库。保存到MySQL数据库的部分温度、湿度数据如图5所示。

图3 协调器程序流程

图4 传感器节点程序流程

2.3.1 信息数据清洗与数据标注

(1)信息数据清洗

鉴于采集的天气信息数据庞大(每天可收集17 280条数据),且一天之中天气不会发生跳变,故本文采用Python对采集到的数据进行处理[10],去掉重复数据。SQL去重语句为:

SELECT id,temputer,humidity,updata_time FROM table1 GROUP BY temputer,humidity。

经去重处理,所采集的天气信息数据减少到2 290条。去重后的部分数据如图6所示。

为使模型效果更好,本文采用数据增强策略,即对现有数据(温度±1 ℃、湿度±5%RH)处理后,再进行一次数据清洗,最终得到含有800个数据的训练集。

(2)数据标注

温湿度信息数据清洗之后,根据数据产生时间,及时间所对应天气情况对其标注,即在收集温度、湿度数据的同时记录每个时间段的天气情况。如:某时间段下雨,则标注Rainy;如果为雨后天晴,则标注Sunny。天气标注数据主要通过中国天气网获取。从中国天气网获取的部分天气数据如图7所示,获取的数据中包含温湿度数据及天气情况,可作为标注好的数据直接使用。

2.3.2 构建SVM分类器并训练模型

构建SVM分类器,即支持向量机。它是Scikit-learn中一组支持分类、回归、异常值检测的监督学习方法。本系统采用SVM的fit(x,y)方法,只需要输入数据集x和x对应的标签y即可。

构建SVM分类器的程序框架如图8所示。

图8 构建SVM分类器的程序框架

训练所使用数据包含4个标签,即Sunny、Cloudy、Rainy、Snowy。为便于数据加载,通过以下程序将标签转换成数值:

def weather_type(s):

weather = {b'Sunny':0, b'Cloudy':1, b'Rainy':2, b'Snowy':3}

return weather[s]

运行的部分训练数据见表1所列。

3 结 语

智能天气识别系统对作者所在地区的天气信息进行实时采集,用训练好的模型进行天气识别,将得到的模型输出结果与当时的天气相比对,发现多组实验结果良好。实验效果如图9所示。

表1 运行的部分训练数据

图9 实验效果

智能天气识别系统可获取所在地区较精确的天气信息,便于智能家居提高决策效率,降低数据请求成本,应用前景广阔。

猜你喜欢

PC机温湿度串口
温湿度控制器在回收砂冷却系统中的应用
浅谈AB PLC串口跟RFID传感器的通讯应用
基于DSP的多路温湿度监测系统
基于温湿度控制的天气预测装置
基于PC机与单片机的多机通信技术及抗干扰方法
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
蒸发冷却温湿度独立控制空调系统的应用
排除OLT设备登录故障
USB接口的多串口数据并行接收方法探索