机房、仓储、农业大棚、实验室和产线等场景的温湿度监测,长期依赖独立温湿度计或人工巡检:数据不连续、超限不能及时告警,而商用环境监控系统价格高、协议封闭、二次开发困难。本项目面向物联网环境监测这一细分领域,目标是做一套成本可控、可二次开发、能长期无人值守的温湿度采集方案。前端用嵌入式 Linux 网关替代传统采集卡,直接对接 I2C 数字温湿度传感器与 RS485/Modbus 工业变送器,兼容 4~20mA 模拟量;网络侧通过以太网/4G 以 MQTT/HTTP 上云;应用侧用微信小程序替代专用 App,用户扫码即可查看实时温湿度、历史曲线与越限告警。系统可作为环境监测、冷链仓储、智慧农业、机柜监控等场景的最小可行产品,也可按客户现场协议做定制扩展。
项目由采集端、网关端、云端、应用端四部分组成。 1)采集端:以 SHT30 温湿度传感器为主(I2C、地址 0x44,读取后做 CRC-8 校验并换算温度/湿度),同时支持 SPI 8 通道 12 位 ADC(MCP3208,接 420mA/010V 变送器)与 RS485 Modbus RTU 主站(电表、PLC、工业温湿度变送器),点位可配置采集周期与量程换算。 2)网关端(EBF6ULL/i.MX6ULL、Linux、C/C++):timerfd 驱动 100ms 周期采集,数据打 CLOCK_MONOTONIC 时间戳后写入环形缓冲;存储线程按块写 CSV/SQLite 并循环文件,避免 SD 卡磨损;上传线程用 MQTT/HTTP 上报,失败落盘、恢复后补传;另有看门狗、RTC 对时与运行日志。 3)云端:MQTT Broker + HTTP API 接收并存储数据,提供设备在线状态与最新值查询。 4)应用端:微信小程序展示设备列表、实时温湿度、历史曲线、阈值告警与远程控制。
我负责从硬件选型到应用层的完整实现。 1)采集与驱动:在 i.MX6ULL 上完成 I2C/SPI/UART 设备树配置,基于 i2c-dev/spidev 实现 SHT30 温湿度读取(0x2C06 命令、6 字节数据、CRC-8 校验、温湿度换算)与 MCP3208 12 位 ADC 读取,完成 4~20mA 的 250Ω 采样电阻与分压换算。 2)Linux 应用(C/C++):用 timerfd + CLOCK_MONOTONIC 实现 100ms 硬周期采集;设计“采集线程只写、存储/上传线程只读”的环形缓冲,避免慢速 SD 卡或网络抖动阻塞采样;实现 CSV/SQLite 分片落盘、文件循环、断网缓存与补传、看门狗喂狗与异常自恢复;实现 Modbus RTU 主站轮询(CRC16 校验、超时重试、寄存器与量程映射)。 3)上云与应用:数据以 JSON 经 MQTT 上报,配套 HTTP 查询接口;微信小程序实现实时数据、历史曲线与阈值告警;另外用 ESP32-S3 + DHT11 做了 WiFi/MQTT 采集节点验证,打通“传感器→云→小程序”链路。 技术栈:C/C++、Linux(设备树、i2c-dev/spidev、pthread、timerfd、socket)、I2C/SPI、RS485/Modbus RTU、MQTT/HTTP、SQLite、微信小程序。 难点与亮点:多源异构采集的时序与线程解耦、长期运行的存储与内存稳定性、断网续传不丢点;通过 100ms 周期采集 + 环形缓冲 + 分片存储,完成 24 小时长稳测试。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论