1. 项目概述
在工业自动化和环境监测领域,MODBUS协议因其简单可靠的特点成为最常用的通信协议之一。本项目基于STM32F103C8T6单片机设计实现了一个MODBUS协议分析仪,能够实时采集环境温湿度数据并通过OLED显示屏本地显示,同时通过RS485接口与上位机通信,实现数据的远程监控和分析。
这个项目特别适合以下人群:
- 嵌入式开发初学者想学习MODBUS协议实现
- 工业自动化工程师需要快速搭建环境监测系统
- 电子爱好者制作智能家居环境监测终端
2. 系统设计与硬件选型
2.1 核心硬件组成
系统硬件架构采用模块化设计,主要包含以下几个关键部件:
-
主控芯片:STM32F103C8T6
- Cortex-M3内核,72MHz主频
- 64KB Flash,20KB SRAM
- 丰富的外设接口(USART、I2C、SPI等)
- 选择理由:性价比高,资源充足,开发资料丰富
-
温湿度传感器:SHT30
- I2C接口,精度±2%RH(湿度),±0.3°C(温度)
- 测量范围0-100%RH,-40~125°C
- 低功耗(2.4μA @1Hz采样率)
-
显示模块:0.96寸OLED
- SSD1306驱动芯片
- I2C接口,128x64分辨率
- 超薄设计,可视角度大
-
通信接口:RS485
- 采用MAX485芯片
- 半双工通信
- 传输距离可达1200米
2.2 硬件电路设计要点
-
电源电路:
- 采用AMS1117-3.3V稳压芯片
- 输入5V,输出3.3V为系统供电
- 需注意输入输出电容的选择和布局
-
RS485接口电路:
- 使用120Ω终端电阻匹配阻抗
- 添加TVS二极管保护通信线路
- RE/DE控制线需正确连接至MCU GPIO
-
传感器接口:
- I2C总线需加上拉电阻(通常4.7kΩ)
- 长距离传输时考虑使用屏蔽线
3. 软件设计与实现
3.1 MODBUS协议栈实现
MODBUS-RTU协议栈主要包含以下几个功能模块:
- **帧处理
