土壤湿度传感器用来判断土里"干不干",最常用的是电阻式探头(YL-69 / FC-28 / HL-69 一类)。
[接线图占位,后续添加]
文字说明(具体接法见下方代码注释):
VCC → Pico 3V3(必须用 3.3V,不能接 5V)GND → Pico GNDAO → Pico GP26(ADC0,模拟输出直连,无需分压)DO → 悬空(本页只用模拟量 AO;DO 是 3.3V 数字信号,若要使用可接任意 GPIO)VCC 改由 GP15 供给,实现"间歇供电"延长探针寿命# ============ 接线 ============
# 模块 VCC → Pico 3V3 (重要:必须 3.3V!接 5V 会让 AO 接近 5V,烧坏 ADC)
# 模块 GND → Pico GND
# 模块 AO → Pico GP26(ADC0) (模拟输出直连 ADC,3.3V 供电时 AO≤3.3V,无需分压)
# 模块 DO → 悬空(本示例不用数字输出)
# =============================
from machine import ADC, Pin
import time
adc = ADC(Pin(26)) # GP26 = ADC0
print('开始读取土壤湿度...')
while True:
value = adc.read_u16() # 0 ~ 65535
# 越湿电压越低 → value 越小;这里粗略换算成 0~100%(真实值需校准,见应用示例)
humidity = 100 - value / 65535 * 100
print(f'ADC 值: {value:5d}, 土壤湿度(粗略): {humidity:.1f}%')
time.sleep(1)
电阻式探针长期泡在土里一直通电会电解腐蚀、发黑变脆。只在读数瞬间通电,可大幅延长寿命。
# ============ 接线 ============
# 模块 VCC → Pico GP15 (用 GPIO 给传感器供电,电流很小,GPIO 带得动;读数才通电)
# 模块 GND → Pico GND
# 模块 AO → Pico GP26(ADC0)
# 模块 DO → 悬空
# 说明:YL-69/HL-69 这类电阻探头长期通电会被电解腐蚀,间歇供电能延长寿命
# =============================
from machine import ADC, Pin
import time
power = Pin(15, Pin.OUT) # GPIO 给传感器供电
adc = ADC(Pin(26))
print('间歇供电读取(延长探针寿命)')
while True:
power.on() # 通电
time.sleep_ms(50) # 等电压稳定
value = adc.read_u16()
power.off() # 读完立刻断电
humidity = 100 - value / 65535 * 100
print(f'ADC 值: {value:5d}, 湿度: {humidity:.1f}%')
time.sleep(2) # 大部分时间处于断电状态
注意:GPIO 不能直接驱动水泵!务必通过继电器 / 三极管模块控制,水泵另接电源。
# ============ 接线 ============
# 土壤模块 VCC → Pico GP15(间歇供电)
# 土壤模块 GND → Pico GND
# 土壤模块 AO → Pico GP26(ADC0)
# 继电器模块 VCC → Pico 3V3,GND → Pico GND,IN → Pico GP14(控制水泵通断)
# 水泵本身接继电器另一端,并接外部电源(绝不从 Pico GPIO 取大电流!)
# =============================
from machine import ADC, Pin
import time
power = Pin(15, Pin.OUT)
pump = Pin(14, Pin.OUT)
adc = ADC(Pin(26))
DRY = 35 # 低于此湿度开始浇水
WET = 70 # 高于此湿度停止浇水
print('自动灌溉(间歇供电版)')
while True:
power.on()
time.sleep_ms(50)
value = adc.read_u16()
power.off()
humidity = 100 - value / 65535 * 100
print(f'湿度: {humidity:.1f}%')
if humidity < DRY:
pump.on()
elif humidity > WET:
pump.off()
time.sleep(2)
3V3。该模块 3.3V 可正常工作,读数比 5V 供电略低但线性度没问题;切忌接 5V,否则 AO 可能接近 5V 超出 ADC 量程,损坏 PicoQ: 读数一直是 65535(满值)? A: 多半接到了 5V 或 AO 悬空/接触不良。确认 VCC 接 3V3、AO 接 GP26,且 GND 共地。
Q: 插进湿土读数变化很小? A: 做两点校准:记下完全干燥和完全浸水时的 ADC 值,用这两个端点重新映射到 0~100%。
Q: 探针用一阵就发黑、变脆? A: 电解腐蚀。改用进阶示例的间歇供电,只在测量瞬间通电,能明显延长寿命。