1. 项目概述与硬件选型
大家好,今天我来分享一个非常实用的农业物联网项目——使用STM32单片机通过RS485协议读取土壤氮磷钾和PH值传感器数据,并在OLED屏幕上实时显示。这个项目特别适合农业大棚、智能灌溉系统或者植物工厂的环境监测,我自己在实际项目中已经验证过多次,效果非常稳定。
先说说硬件选型。我用的主控是STM32F103C8T6,也就是我们常说的"蓝色药丸",性价比超高,性能足够强大。传感器方面,我选择的是市面上常见的四合一土壤传感器,可以同时测量PH值、氮、磷、钾四个关键参数。这种传感器采用RS485接口,通信距离长,抗干扰能力强,特别适合农业现场环境。
OLED显示屏我选用的是0.96寸的SSD1306,I2C接口的那种,接线简单,显示效果清晰。还需要一个关键的转换模块——MAX485 TTL转RS485模块,这个模块负责把STM32的TTL电平转换成RS485信号。
硬件清单:
- STM32F103C8T6最小系统板
- RS485土壤四合一传感器(PH+氮磷钾)
- MAX485 TTL转RS485转换模块
- 0.96寸OLED显示屏(SSD1306)
- 杜邦线若干
- 电源(12V直流适配器)
在实际接线时,有个小技巧:给MAX485模块和传感器供电时,最好用独立的12V电源,不要从STM32的3.3V取电,这样可以保证通信稳定性。我刚开始做的时候图省事共用电源,结果数据经常跳变,后来分开供电就稳定了。
2. 硬件连接详解
硬件连接是这个项目的关键步骤,接错了可是读不到数据的。我来详细说说各个模块之间的接线方法。
STM32与MAX485模块的连接:
- STM32的PA2(TX)接MAX485的RO(接收输出)
- STM32的PA3(RX)接MAX485的DI(驱动输入)
- STM32的某个GPIO(我用的PA4)接MAX485的DE和RE引脚(使能端)
- MAX485的A、B端分别接传感器的A、B线
传感器接线:
- 棕色线:电源正极(4.5-30V)
- 黑色线:电源地
- 黄色线:485-A
- 蓝色线:485-B
这里有个重要细节:MAX485模块的DE和RE引脚要接在一起,用一个GPIO控制。当我们要发送数据时,把这个引脚拉高;接收数据时拉低。这个切换时机很重要,太早或太晚都会导致通信失败。
OLED接线:
- SCL接STM32的PB6
- SDA接STM32的PB7
我建议大家在焊线的时候,给每个连接点都加上热缩管,因为农业环境湿度大,容易短路。之前我在一个大棚项目里就遇到过因为冷凝水导致短路的问题,后来加了热缩管就再没出过问题。
电源方面,STM32可以用USB供电,传感器和MAX485模块最好用外接12V电源。如果距离比较远,建议在RS485总线的两端各加一个120欧姆的终端电阻,这样可以抑制信号反射。
3. RS485通信协议解析
现在我们来重点讲讲RS485通信协议,这是整个项目的核心。市面上大多数的土壤传感器都采用Modbus-RTU协议,这是一种主从式的通信协议。
基本通信参数:
- 波特率:4800bps(出厂默认,有些可能是9600)
- 数据位:8位
- 停止位:1位
- 校验位:无
- 错误校验:CRC校验
每个传感器都有一个地址,出厂默认一般是0x01。如果你要接多个传感器,需要先修改每个传感器的地址,避免冲突。
数据帧格式: Modbus-RTU的数据帧由几个部分组成:地址码、功能码、数据区和CRC校验码。主机(STM32)发送问询帧,从机(传感器)回复应答帧。
问询帧的结构是这样的:
[地址码][功能码][起始地址高字节][起始地址低字节][数据长度高字节][数据长度
330


&spm=1001.2101.3001.11974&articleId=155298169&d=1&t=3&u=2d342e9f1eb64481af1fe94aa30fd1a2)

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



