1. 项目背景与硬件选型
大家好,我是老李,在嵌入式行业摸爬滚打十多年了。今天我想分享一个非常实用的工业环境监测项目:用STM32F103C8T6驱动RS485温湿度传感器,通过Modbus RTU协议采集数据,并实时显示在OLED屏幕上。这个项目特别适合需要监测工厂车间、仓库、温室等场所温湿度的朋友,成本低、稳定性好,而且容易上手。
先说说为什么选这些硬件。STM32F103C8T6(俗称"蓝莓板")是性价比极高的ARM Cortex-M3内核微控制器,72MHz主频、64KB Flash、20KB RAM,完全够用。温湿度传感器我选的是汇控电子的RS485型号,工业级品质,Modbus RTU协议通用性强,抗干扰能力好。OLED屏用的是0.96寸I2C接口的SSD1306驱动屏,4针接线简单,显示效果清晰。RS485转TTL模块是最常见的MAX485芯片,成本不到5块钱。
这些组件搭配起来,整套硬件成本可以控制在50元以内,但性能却不输给专业设备。我亲自在电机干扰严重的车间测试过,数据采集稳定,连续运行一周没出过问题。接下来我会带大家一步步实现整个系统,从硬件接线到代码编写,每个细节都会讲到。
2. 硬件连接详解
硬件连接是项目的基础,接错了后面全是白忙活。我先给大家画个清晰的接线图,再解释每个连接的作用。
电源部分:STM32开发板可以用USB供电(5V),也可以外接3.3V。传感器一般是5V或3.3V兼容,具体看型号。MAX485模块和OLED屏都是3.3V-5V兼容的,所以统一用3.3V供电最安全。切记:GND一定要共地!这是很多新手容易忽略的点。
RS485通信线路:
- STM32的USART2_TX (PA2) → MAX485的DI引脚(数据输入)
- STM32的USART2_RX (PA3) → MAX485的RO引脚(数据输出)
- MAX485的A线 → 传感器RS485接口的A+
- MAX485的B线 → 传感器RS485接口的B-
这里有个关键点:MAX485需要控制收发状态。它的RE和DE引脚接在一起,连接到STM32的某个GPIO(我用的PA4)。发送数据前要把这个引脚拉高(发送模式),发送完立即拉低(接收模式)。如果不这样操作,根本收不到数据,这是我踩过的坑。
OLED显示线路:
- STM32的I2C1_SCL (PB8) → OLED的SCL
- STM32的I2C1_SDA (PB9) → OLED的SDA
- 3.3V → OLED的VCC
- GND → OLED的GND
接线时最好用颜色区分电源线(红色正极、黑色负极)和数据线(其他颜色)。实际安装时,RS485总线建议用双绞线,传输距离可以达到1000米以上。如果传感器距离较远,A、B线之间最好接120Ω终端电阻,可以减少信号反射。
3. 开发环境搭建
我用的Keil MDK 5.37版本,编译器版本6。如果你用CubeMX生成代码,建议用最新版本,兼容性更好。工程创建时要注意选择正确的器件型号:STM32

1965

被折叠的 条评论
为什么被折叠?



