读取湿度传感器数据并启动水泵后程序卡顿,仅输出一次数据?
自动浇水系统GPIO卡住问题排查与修复
问题描述
我正在用湿度传感器搭配3.3V潜水泵制作自动浇水系统,原型开发阶段遇到异常:代码运行后仅打印一次湿度值就停止输出,疑似卡在GPIO引脚置高的步骤。
原代码
# import required modules from machine import ADC, Pin, I2C from ssd1306 import SSD1306_I2C import utime # use variables instead of numbers: soil = ADC(Pin(26)) # Soil moisture PIN reference gpio_pin = machine.Pin(15, machine.Pin.OUT) #Calibraton values min_moisture=19200 max_moisture=49300 readDelay = 0.5 # delay between while True: # read moisture value and convert to percentage into the calibration range moisture = (max_moisture-soil.read_u16())*100/(max_moisture-min_moisture) # print values print("moisture: " + "%.2f" % moisture +"% (adc: "+str(soil.read_u16())+")") if moisture < 80: gpio_pin.value(1) utime.sleep(2) gpio_pin.value(0) else: gpio_pin.value(0) utime.sleep(readDelay) # set a delay between readings
运行输出
moisture: 2.53% (adc: 48347)
问题根源
- GPIO直接驱动潜水泵导致硬件异常:3.3V潜水泵启动电流远超过单片机GPIO引脚的承载极限(通常仅能提供几毫安到几十毫安电流),直接连接会造成电源电压骤降,导致单片机复位或引脚损坏,程序因此终止运行。
- 代码冗余与小问题:已从
machine模块导入Pin,却重复使用machine.Pin初始化引脚;两次调用soil.read_u16()会导致计算值与打印值不一致,但并非卡死直接原因。
修复方案
1. 必须添加驱动电路
禁止用GPIO直接驱动潜水泵,通过以下方式实现电流放大:
- NPN三极管驱动:基极串联1kΩ电阻接GPIO,集电极连接潜水泵正极与电源,发射极接地;
- 继电器/MOS管驱动:继电器需搭配续流二极管保护,防止反向电动势损坏电路。
2. 代码优化
# import required modules from machine import ADC, Pin, I2C from ssd1306 import SSD1306_I2C import utime # use variables instead of numbers: soil = ADC(Pin(26)) # Soil moisture PIN reference gpio_pin = Pin(15, Pin.OUT) # 统一引用方式 #Calibraton values min_moisture=19200 max_moisture=49300 readDelay = 0.5 # delay between readings while True: adc_value = soil.read_u16() # 单次读取复用,避免误差 # read moisture value and convert to percentage into the calibration range moisture = (max_moisture - adc_value) * 100 / (max_moisture - min_moisture) # print values print(f"moisture: {moisture:.2f}% (adc: {adc_value})") if moisture < 80: gpio_pin.value(1) utime.sleep(2) gpio_pin.value(0) else: gpio_pin.value(0) utime.sleep(readDelay) # set a delay between readings
3. 额外硬件保护
在潜水泵供电回路中添加小型保险丝,防止短路损坏电源或单片机。
内容的提问来源于stack exchange,提问作者cw23
相关产品推荐
相关产品推荐

