基于Django框架的物联网空气质量监测系统的实现

一、明确系统设计的意义

由于毕业设计的选题是基于物联网技术的空气质量监测系统的设计与实现,所以先要确定空气质量监测系统的设计意义是什么?在我看来,空气质量的监测并不是硬件采集数据,然后将数据一股脑的扔进数据库就行,真正的意义在将采集到的数据,进行数据分析并通过数据可视化的方式将分析结果呈现在用户面前。

二、确定系统逻辑

在明确的设计意义后,就应该考虑系统的总体框架,于是我绘制了如下的功能划分图:

基于Django框架的物联网空气质量监测系统的实现

整个系统于底层硬件而言,分别有温湿度数据采集模块、PM2.5数据采集模块和WiFi发送模块。于上层应用程序而言,则有数据入库模块、用户登录模块、数据展示模块以及预警模块。主要实现的功能是:当系统上电后,WiFi发送模块与PM2.5传感器采集模块首先工作,通过AT指令实现入网和连接TCP Server,成功后,等待上层应用下发启动发送指令,WiFi模块接收到指令后,温湿度数据采集模块和PM2.5数据采集模块开始工作,当采集到数据后,将数据上传到TCP Server,经过数据分析后,将数据存入数据库。用户可在登录后进入可视化网页进行当天的空气质量情况查看,还可查看七天的空气质量变化情况和推送的当天空气质量预警信息。所以系统的总体功能模块如下图所示:

基于Django框架的物联网空气质量监测系统的实现

在划定了如上的功能模块之后,需要考虑的就是,系统的设计目标:

三、系统设计目标

系统要设计达到的目标就是根据硬件采集到的数据,设定相应的阈值,当超过阈值时,即推送相应的预警信息,这是数据可视化的最为关键一步。于是我根据国家的《环境空气质量标准》制定了PM2.5的阈值图表:

基于Django框架的物联网空气质量监测系统的实现

同样地,PM2.5浓度有相应的阈值,温湿度也进行了同样的划分,主要依据生理学家的研究分析结果,温度对人体舒适度的划分标准:

基于Django框架的物联网空气质量监测系统的实现

湿度的划分标准:

基于Django框架的物联网空气质量监测系统的实现

三、系统代码编写

在明确了以上的point之后,就可以开始代码的编写了。底层用keil5开发,上层用java编写TCP server,python编写Django Web服务器,用MySQL存储数据。

四、最终效果展示

  • 硬件连接图:

基于Django框架的物联网空气质量监测系统的实现

  • Java开发的TCP server

TCP Server有两种版本,一种是有可视化界面的,这个方便在电脑端查看,双击打开即可,给硬件系统供上电之后,ESP8266会自动连接TCP Server,连接成功后,在软件的连接状态中会显示连接的客户端IP和端口后,同时接收区会打印接收到的原始数据。之前设计的是底层硬件系统一上电和联网后,会将数据立即上发,只有断电才会停止发送,这是硬控。后来在老师的建议下,设计了软控,用户可以在TCP Server的界面控制ESP8266发送数据和停止发送。可视化界面的如下图所示:

基于Django框架的物联网空气质量监测系统的实现

另外一种TCP Server是*面的,这是为了部署在远端服务器而设计的,用户修改ESP8266的要连接远程服务器IP和端口即可,然后在远端服务器,运行这个java程序,并且确保服务器开放了相对应的端口。采集的温湿度和PM2.5数据会自动发送,此时没有了软控功能。

基于Django框架的物联网空气质量监测系统的实现

上面两种TCP server都会在接收到数据后,进行分析,然后将数据加上时间戳,以事先写好的存放格式,先存入文本,然后等到存储到一定量之后,再导入数据库,这样是为了减轻数据库的负担,因为来一条数据即访问一次数据库是不合理的。我采取的这种方式也算是简单的优化数据库存储。

  • Django开发的web服务器

这是在浏览器打开的网页,显示的实时温湿度和PM2.5浓度,和携带的相应的预警信息。

基于Django框架的物联网空气质量监测系统的实现

历史数据回溯自动生成的折线图

基于Django框架的物联网空气质量监测系统的实现

同时提供用户的登录和注册功能

基于Django框架的物联网空气质量监测系统的实现

最后是整体网页的截图:

 

基于Django框架的物联网空气质量监测系统的实现