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

写在前面:

由于很多人后台索要源码,因此经过长时间的搜索之后,我找到了之前写的源码,上传到了csdn,目前源码包含有:Java写的上位机源码以及django后台程序,没有找到stm32下位机的程序,需要的朋友可以下载下来参考,资源下载链接已经贴到了文末。

一、明确系统设计的意义

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

二、确定系统逻辑

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

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

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

三、系统设计目标

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

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

湿度的划分标准:

三、系统代码编写

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

四、最终效果展示

  • 硬件连接图:

  • Java开发的TCP server

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

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

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

  • Django开发的web服务器

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

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

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

最后是整体网页的截图:

源代码(不包含stm32下位机程序)下载链接:https://download.csdn.net/download/qq_41020634/85788727

  • 13
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
基于Django框架物联网空气质量监测系统实现源代码如下: ```python # 在settings.py中配置数据库连接 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': 'your_host', 'PORT': 'your_port', } } # 创建模型 from django.db import models class AirQuality(models.Model): timestamp = models.DateTimeField(auto_now_add=True) device_id = models.CharField(max_length=50) temperature = models.FloatField() humidity = models.FloatField() pm25 = models.FloatField() pm10 = models.FloatField() # 创建视图 from django.shortcuts import render from django.http import JsonResponse from .models import AirQuality def monitor(request): air_quality = AirQuality.objects.all().order_by('-timestamp')[:10] # 获取最近10条数据 data = { 'temperature': [aq.temperature for aq in air_quality], 'humidity': [aq.humidity for aq in air_quality], 'pm25': [aq.pm25 for aq in air_quality], 'pm10': [aq.pm10 for aq in air_quality], } return JsonResponse(data) # 配置URL from django.urls import path from .views import monitor urlpatterns = [ path('monitor/', monitor, name='monitor'), ] # 创建定时任务 from apscheduler.schedulers.background import BackgroundScheduler from .models import AirQuality import random def collect_data(): device_id = 'your_device_id' temperature = random.uniform(20, 30) # 模拟温度数据 humidity = random.uniform(40, 60) # 模拟湿度数据 pm25 = random.uniform(0, 50) # 模拟PM2.5数据 pm10 = random.uniform(0, 100) # 模拟PM10数据 air_quality = AirQuality(device_id=device_id, temperature=temperature, humidity=humidity, pm25=pm25, pm10=pm10) air_quality.save() scheduler = BackgroundScheduler() scheduler.add_job(collect_data, 'interval', minutes=10) # 每隔10分钟执行一次采集数据的任务 scheduler.start() ``` 以上是一个基于Django框架物联网空气质量监测系统实现源代码。其中模型定义了空气质量数据表的字段,视图函数用于获取最近10条数据并以JSON格式返回给前端,URL配置了对应的路径,定时任务使用APScheduler库定时执行数据采集并保存到数据库中。这个系统可以用于实时监测并展示物联网设备上传的空气质量数据。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值