赞
踩
学物联网,来万物简单IoT物联网!!
土壤湿度传感器主要用于检测土壤中湿度是否达到阀值及湿度的大小,通过电位器调节土壤湿度控制阀值,可以自动对菜园,花园自动浇水,家庭花盆土壤湿度的控制,各种电子比赛,电子积木等。
引脚定义、灵敏度调节电位器及指示灯如下图所示:
drv = SoilMoisture(gpioObj)
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
gpioObj | GPIO | 是 | 传入GPIO对象 |
from machine import Pin
import soil_moisture
# 初始化 GPIO
gpioObj = Pin(2,Pin.IN, Pin.PULL_UP)
drv = soil_moisture.SoilMoisture(gpioObj)
print("SoilMoisture inited!")
SoilMoisture inited!
注意:这里的阈值是经验值,可通过旋转电路板上面的“灵敏度调节电位器”来进行调节
drv.moistureDetect()
from machine import Pin
import soil_moisture
# 初始化 GPIO
gpioObj = Pin(2,Pin.IN, Pin.PULL_UP)
drv = soil_moisture.SoilMoisture(gpioObj)
print("SoilMoisture inited!")
detected = drv.moistureDetect()
if detected == 0:
print("moisture is detected")
else:
print('no moisture detected')
SoilMoisture inited!
moisture is detected
# Python代码
from machine import Pin
import soil_moisture
import utime # 延时函数在utime库中
if __name__ == '__main__':
# 初始化 GPIO
gpioObj = Pin(2,Pin.IN, Pin.PULL_UP)
drv = soil_moisture.SoilMoisture(gpioObj)
print("SoilMoisture inited!")
while True: # 无限循环
detected = drv.moistureDetect() # 周期性检查噪音值
if detected == 0:
print("moisture is detected")
else:
print('no moisture detected')
utime.sleep_ms(30)
...
SoilMoisture inited!
no moisture detected
no moisture detected
moisture is detected
moisture is detected
...
主控芯片与土壤湿度感应传感器之间使用 GPIO 通讯,土壤湿度传感器通过 LM393 比较器对模拟信号电压进行比较,当达到阀值则输出对应开关量。
使用时感应板上未达阀值时,DO 输出高电平,感应板上湿度达到阀值时,DO 输出低电平。感应板恢复干燥环境时,DO又恢复到高电平状态。DO TTL 数字开关量可以方便检测土壤湿度是否达到阀值状态。
模拟量输出 AO 口可以和 ADC 接口相连,通过 AD 转换,可以获得土壤湿度更精确的数值;
如下是原理图,土壤湿度感应板输出电压到 LM393+ 口,LM393- 口接电位器,因此感应板与 510K 电阻产生分压电路输出电压到 LM393+,电位器产生参考电压输出到 LM393-。
LM393 的原理是:
因为 OUT 引脚有一颗 510K 上拉电阻,因此在开路的情况下为高电平,与地接通时时为低电平。
我们以 VCC 3.3V为例,当感应板无湿度环境时,LM393+ 为3.3V,LM393- 通过电位器输出电压假设为2V,那么 LM393- < LM393+,OUT 为开路,输出高电平 1,反之输出低电平。
[1] LM393 Datasheet
[2] 购买链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。