1. 概述

随着城市的扩张和经济的发展,大量的工业废气和汽车尾气等污染气体进入大气层,使得空气污染问题愈发严重。不仅有全球变暖这种国际性问题,还有雾霾等大气长期污染问题。除此之外,室内空气污染问题也不容忽视,吸烟、厨房油烟、室内装修材料散发的有机气体和放射性气体,以及粉尘螨和细菌等微生物,都是室内空气污染的帮凶。

你可能不知道,空气污染使九分之一的人丧命,且对我们的气候未来造成威胁。通过搭建一套空气质量监测系统,帮助你了解你的城市和家庭是否面临危险。

人无时无刻都在呼吸,长期生活在受污染的空气环境中,容易诱发慢性呼吸性疾病,甚至是肺癌。然而现实生活中,却很少人会关注与我们息息相关的空气质量。因此,本人基于雅特力 AT32F403-START 开发板和 RT-Thread 操作系统,搭配三个传感器模块共检测五种空气质量指标,分别是空气温度、湿度、颗粒物浓度、TVOC 浓度以及 CO2 浓度。为了增加数据分析和应用功能,同时考虑入网的便捷性,使用 NB-IoT 模块将数据上报到云端进行统计分析和存储,并开发微信小程序“空气侦探”方便用户随时随地查看数据。

系统分为感知层、网络层、平台层和应用层,整体方案如下图所示。

2. RT-Thread 使用情况概述

RT-Thread 使用情况:

  • 内核部分:RT-Thread 4.0.3
  • 组件部分:sensor、at client、netdev、dfs
  • 软件包部分:dhtxx、gy2y10、sgp30、littled、bc28_mqtt

(上述5个软件包均为本人亲手制作的,已贡献到 RT-Thread 软件包库,可在 http://packages.rt-thread.org/ 网页检索)

3. 硬件框架

硬件方案介绍:

  • 中间蓝色部分为主控模块,雅特力 AT32F403A 微控制器,运行 RT-Thread 物联网操作系统,负责驱动外部设备和系统逻辑控制;
  • 左侧红色部分为传感模块,分别是单总线接口的 DHT22 温湿度传感器,ADC 接口的 GP2Y1014 灰尘传感器,以及 I2C 接口的 SGP30 气体传感器(检测 TVOC 和 CO2);
  • 上方黄色部分为存储模块,为 AT32F403A-START 板载的 SPI Flash,负责在必要时存储传感数据;
  • 右上方浅绿色部分为交互模块,通过板载按键和 LED 灯实现简单的交互功能;
  • 右下方深绿色部分为通信模块,使用移远的 NB-IoT 模组 BC28 连接阿里云物联网平台,负责传感数据上报和逻辑数据通信。

4. 软件框架说明

整个系统主要分为设备端、云端、用户端三大块。设备端 MCU 运行 RT-Thread,主要负责采集传感器数据并将数据上报到云端;云端采用阿里云 IoT 平台接入设备,同时实现设备管理、数据转发功能,通过搭配 ECS、RDS 等云服务,实现数据存储和应用服务;用户端包括基于 IoT Studio 实现的 Web 页面和微信小程序,方面用户随时随地关注室内外的空气质量情况。

具体到设备端,由于搭载 RT-Thread 物联网操作系统,使用软件包 dhtxx、gy2y10、sgp30 实现传感器模块底层驱动,软件包 bc28_mqtt 实现 NB 网络连接阿里云 IoT 平台,软件包 littled 实现 LED 灯的异步控制。因此业务逻辑变得简洁明了,完全在 main.c 中实现。

5. 软件模块说明

在 RT-Thread + 软件包的基础上进行应用程序开发,将任务分为三组线程,并使用信号量和事件集进行同步,使用邮箱和内存池进行通信。

设备端应用层程序的三组线程分别是:

  • 左侧红色部分为传感数据采集线程,dhtxx、gy2y10、sgp30 均已对接 sensor 框架,因此调用统一的 rt_device_xxx 接口进行操作;
  • 中间蓝色部分为同步线程,负责协同不同速率的传感器,同时做一些本地数据处理,为数据上报做准备;
  • 右侧绿色部分为数据上报线程,负责将传感器数据上报到云端。

6. 演示效果

B 站视频:https://www.bilibili.com/video/BV1mK411p7jj

硬件平台展示

Web 平台数据展示

微信小程序数据展示

7. 代码地址

GitHub 仓库:https://github.com/luhuadong/fctc-air-at32f403a-start

软件包:

  • dhtxx 软件包:https://github.com/luhuadong/rtt-dhtxx
  • gp2y10 软件包:https://github.com/luhuadong/rtt-gp2y10
  • sgp30 软件包:https://github.com/luhuadong/rtt-sgp30
  • littled 软件包:https://github.com/luhuadong/rtt-littled
  • bc28_mqtt 软件包:https://github.com/luhuadong/rtt-bc28-mqtt

8. 演示视频

RT-Thread应用创新设计大赛作品展示——空气质量监测系统

B站:https://www.bilibili.com/video/BV1mK411p7jj

【RT-Thread 作品秀】空气质量监测系统相关推荐

  1. arduino读取水位传感器的数据显示在基于i2c的1602a上_构建Arduino的LoRa远程智能空气质量监测系统...

    背景知识视频教程 Arduino分步指南:完整指南 - 国外课栈​viadean.com Arduino微控制器:学习Arduino制作项目 - 国外课栈​viadean.com 通过构建实际应用程序 ...

  2. 空气质量监测系统的组成和应用

    空气质量监测系统产品简介 网格化微型空气质量站是一种集数据采集.存储.传输和管理于一体的无人值守的环境监测系统,能全天候.连续.自动地监测环境,在提供PM10.PM2.5. SO2. NO2.CO.O ...

  3. 什么是网格化空气质量监测系统?

    什么是网格化空气质量监测站监测系统呢?对于这个词大家应该显示不是太熟悉,那么我来为大家介绍下. 首先它是一种集数据采集.存储.传输和管理于一体的无人值守的环境监测系统,能全天候.连续.自动地监测环境, ...

  4. 实时空气质量监测解决方案

    一.行业背景 近年来空气质量一直都是大家关注的重点,PM2.5.重工业污染.沙尘暴等无时无刻都在影响着我们的健康.伴随着人们生活水平的提升,对于自身生活环境数据的事实了解意向也越来越强烈.空气质量有没 ...

  5. 【无标题】空气质量监控系统中的 YK-BA6201、YK-BA6203、YK-BA6204

    空调/新风机组节能控制器 YK-BA6201 空气质量监测系统优势: 1.智能化.高扩展性 由于不同区域造成空气污染的成分不同,所以需配置不同的传感器来监测各区域不同气体的含量从而达到调节空气质量的目 ...

  6. java基于ssm空气质量检测系统源码网站空气质量监测源码

    简介 Java基于ssm的空气质量检测系统,检测设备检测一定范围内的企业空气指数,如果有污染则地图显示红色标记. 演示视频 https://www.bilibili.com/video/BV1GK4y ...

  7. 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密分析

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 写在前面 绕过无限 debugger 方法一 方法二 方法三 抓包分析 加密入口 动态 JS 本地改写 ...

  8. 基于 Python 的全国空气质量监测与可视化分析平台

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 空气质量优劣程度与一个城市的综合竞争力密切相关,它直接影响到投资环境和居民健康,因此越来越受到政府和 ...

  9. 什么是空气质量自动监测系统

    空气质量自动监测系统是先进的一体式环境空气质量监测系统.它可以监测氮氧化物.碳氧化物.二氧化硫.氢化硫.臭氧.甲烷/非甲烷碳氢化合物.氨气等气体.系统包括分析仪模块.校准模块.采样系统.数据记录器.通 ...

  10. ESP32开发之旅——基于ESP32的室内空气质量检测系统

    ESP32开发之旅--基于ESP32的室内空气质量检测系统 前言 成果展示 核心代码 MQTT部分 获取传感器数据部分 连接WiFi部分 结尾 前言 本文主要是我课设项目的一个备忘,部分资料来源于网上 ...

最新文章

  1. java super是引用变量吗_Java中super的几种用法并与this的区别
  2. 从Preact了解一个类React的框架是怎么实现的(一): 元素创建
  3. 深度揭秘垃圾回收底层,这次让你彻底弄懂她
  4. 钻进眼球的致盲寄生虫威胁近亿人,却只是生存竞争的失败者
  5. python【Matlibplot绘图库】画图种类(真の能看懂~!)
  6. matlab模拟伯努利实验,matlab仿真随机数的发生
  7. gamma分布python代码_Python sympy.stats.NormalGamma()用法及代码示例
  8. MSDN Magazine推出Custom Report Item示例ProgressTracker CRI
  9. Bootstrap使用-1
  10. python读word文档doc公文标题_python – 从word doc中提取标题文本
  11. 记录远程桌面登录者的IP和MAC
  12. Java UDP和TCP的区别
  13. 大数据时代的呼叫中心客服运营管理
  14. 基于衰减因子和动态学习的改进樽海鞘群算法
  15. CodeBlock调试(DeBug)指南
  16. SCARA机械臂逆运动推导
  17. 怎么修改Ubuntu和Windows双系统启动菜单项顺序?
  18. Attention UNet
  19. CTF-代码审计(2)
  20. 扒一扒随机数(Random Number)的诞生历史

热门文章

  1. Go 处理PCAP文件
  2. HC32F4 CRC32校验(附软件CRC32校验)
  3. window下安装ruby与sass(附ruby)
  4. C语言制作简谱播放器
  5. 2017机器人与自动化领域SCI期刊最新影响因子
  6. 全国各地城市FM调频电台频率列表(上海北京广州深圳长沙武汉重庆)
  7. 暴风影音 android 电视,暴风影音飞屏版电视端
  8. 植物大战僵尸实训记录
  9. ASEMI整流桥S35VB100参数规格,S35VB100封装尺寸
  10. linux oa系统搭建,企业Linux系统部署OA系统上线实例