1. 立项背景和目标
现如今工业、室内环境需要实时监测空气质量、温湿度数据,传统仪表仅能现场查看,无法远程管控。结合物联网与数字孪生可视化技术,本项目旨在设计一套嵌入式环境监测终端,实现现场环境参数自动采集、本地显示,并将数据上传云端,构建可视化数字孪生监控面板,随时随地远程查看环境指标,解决环境数据无法远程监控、集中管理的业务痛点。
2. 软件核心功能模块
1. 数据采集模块:驱动温湿度、空气质量气体传感器,周期性读取环境物理参数;
2. 本地显示模块:驱动LCD显示屏,实时刷新当前采集到的各项环境数值;
3. 通信传输模块:驱动ESP8266 WiFi模组,基于MQTT通信协议封装数据报文;
4. 系统调度模块:移植FreeRTOS实时操作系统,拆分采集、显示、网络发送独立任务,并发稳定运行。
3. 完整业务流程路径
各类环境传感器采集原始模拟数据 → STM32单片机通过I2C/串口驱动读取、解析数据 → FreeRTOS调度任务,将数据同步至LCD屏幕本地展示 → 通信任务打包数据,通过WiFi模块上传物联网云端平台 → 云端汇总存储数据,搭建数字孪生可视化图表看板,用户远程访问平台,即可实时查看历史、实时环境监测数据,完成整套环境监测、数据可视化管理业务闭环。
1. 整体架构与技术栈
整体采用嵌入式四层架构:硬件层(STM32主控芯片、温湿度/气体传感器、ESP8266、LCD屏幕)、底层驱动层(C语言编写外设驱动)、系统层(FreeRTOS实时操作系统)、应用业务层(数据解析、MQTT通信逻辑),对接云端数字孪生可视化平台。
核心技术栈:C语言、STM32单片机开发、Keil MDK、FreeRTOS、I2C/UART通信、MQTT协议、ESP8266无线网络开发。
2. 个人负责模块和量化成果
本人独立负责本环境监测终端全部固件开发与软硬件联调工作:
1. 自主编写传感器、显示屏、WiFi模块全套底层驱动代码,代码总量3200余行;
2. 移植配置FreeRTOS,划分三大独立任务,实现采集、显示、网络传输并行工作;
3. 调试ESP8266联网程序,实现环境数据每秒上传一次,长期运行数据丢包率<1%;
4. 对接云端平台,调试MQTT报文格式,成功完成数据上报,云端数字孪生面板可实时同步更新参数;
5. 硬件整机长时间老化测试,设备连续72小时稳定采集传输,无死机、断连故障。
3. 难点、问题及解决方案
1. 难点:多任务运行时,传感器采集数据和网络发送数据互相干扰,数值错乱;
解决方案:使用FreeRTOS消息队列+互斥锁保护共享数据缓冲区,不同任务不能直接访问公共变量,通过消息队列传递数据,避免多任务资源争抢,数据错乱问题彻底解决。
2. 难点:ESP8266路由器WiFi断开后,设备无法自动重连,数据传输中断;
解决方案:新增网络状态检测任务,定时发送心跳包检测网络链路,一旦检测离线,自动执行WiFi重连逻辑,循环重试,并上报离线日志,大幅提升整机稳定性。
3. 难点:传感器原始数据波动大,数值跳变严重,读数不准确;
解决方案:软件上加入滑动平均滤波算法,连续采集5次数据取平均值后再输出展示,有效过滤噪声干扰,环境读数平稳精准。