GD32/AT32双平台:土壤湿度传感器模块驱动教程(附完整代码)
·
土壤湿度传感器模块驱动教程

1. 传感器简介
土壤湿度传感器模块用于检测土壤中的含水量。模块通过两个裸露的导电探针插入土壤,利用土壤导电性随湿度变化的原理来测量湿度。模块上集成了 LM393 比较器,同时提供模拟量输出(AO)和数字量输出(DO)。
参数规格
| 参数 | 值 |
|---|---|
| 工作电压 | 3.3V ~ 5V |
| 模拟输出 | AO,0~VCC(随湿度变化) |
| 数字输出 | DO,TTL 电平(湿度超阈值 → HIGH/LOW) |
| 比较器 | LM393 |
| 灵敏度 | 可通过电位器调节 |
引脚定义
| 引脚 | 说明 |
|---|---|
| VCC | 电源 3.3V~5V |
| GND | 地 |
| DO | 数字信号输出 |
| AO | 模拟信号输出(电压越低,湿度越高) |
硬件接线
| 土壤湿度模块 | GD32E23x | AT32F403A |
|---|---|---|
| VCC | 3.3V | 3.3V |
| GND | GND | GND |
| AO | PA0 | PA0 |
| DO | PA1 | PA1 |
注意: 探针长期通电会加速氧化腐蚀,建议仅在需要测量时通电,或使用交流激励方案。
2. 工作原理
2.1 电阻分压原理
模块内部,两个探针之间等效为一个可变电阻,与固定电阻组成分压电路:
- 土壤干燥 → 导电性差 → 电阻大 → AO 电压高
- 土壤湿润 → 导电性好 → 电阻小 → AO 电压低
2.2 数字输出(DO)
LM393 比较器将 AO 电压与电位器设定的阈值比较,超过阈值时 DO 翻转。
3. 驱动实现
初始化
void soil_moisture_init(void)
{
RCU_AHBEN |= RCU_AHBEN_GPIOA_EN;
GPIO_SET_MODE(GPIOA_BASE, 0, GPIO_MODE_INPUT); /* PA0 = AO */
GPIO_SET_MODE(GPIOA_BASE, 1, GPIO_MODE_INPUT); /* PA1 = DO */
/* ADC 初始化:时钟、采样时间、校准 */
RCU_APB2EN |= RCU_APB2EN_ADC1_EN;
}
读取湿度
uint16_t soil_moisture_read(void)
{
ADC_RSQ3(ADC1_BASE) = 0; /* 通道 0 */
ADC_CTL1(ADC1_BASE) |= (1 << 14); /* 软件触发 */
while (!(ADC_STAT(ADC1_BASE) & (1 << 5)));
return ADC_DATA(ADC1_BASE) & 0x0FFF;
}
百分比转换
uint8_t soil_moisture_percent(uint16_t adc)
{
if (adc < 200) return 100; /* 完全湿润 */
if (adc > 3800) return 0; /* 完全干燥 */
return (uint8_t)(100 - (adc - 200) * 100 / 3600);
}
4. AT32F403A 适配
| 项目 | GD32E23x | AT32F403A |
|---|---|---|
| GPIO 模式 | GPIO_SET_MODE(port, pin, GPIO_MODE_INPUT) |
GPIO_CFG(port, pin, GPIO_MODE_INPUT) |
| ADC 寄存器 | ADC_CTL1 ADC_STAT |
ADC_CTRL1 ADC_STS |
| 时钟使能 | RCU_APB2EN |
CRM_APB2EN |
5. 编译与烧录
cd 01_Sensors/SoilMoisture/GD32 && make
cd 01_Sensors/SoilMoisture/AT32 && make
| 平台 | text | data | bss | 总大小 |
|---|---|---|---|---|
| GD32E23x | 1984 B | 0 B | 2056 B | 4040 B |
| AT32F403A | 1960 B | 0 B | 4 B | 1964 B |
6. 运行效果
========================================
土壤湿度传感器测试 (GD32E23x)
========================================
[OK] ADC: 3800 (73%) DO: HIGH (干燥泥土)
[OK] ADC: 3240 (62%) DO: HIGH
[OK] ADC: 480 (12%) DO: LOW ← 浇水后
[OK] ADC: 210 (0%) DO: LOW ← 完全湿润
7. 注意事项
- 探针腐蚀:直流测量会加速探针电化学腐蚀,建议间歇通电
- 标定:不同土壤类型导电性不同,建议针对目标土壤做标定
- 温度影响:土壤导电性受温度影响,精确测量需温度补偿
完整工程源码(含 Keil 工程文件)已整理完毕,详见博主主页。
更多推荐

所有评论(0)