python - 使用树莓派从土壤湿度传感器读取准确的湿度值
问题描述
我是 IoT 新手,我正在尝试使用 Raspberry Pi 读取土壤湿度传感器读数。我需要精确的水分值,而不仅仅是水中的布尔值是否存在。
我曾尝试使用 Arduino-UNO 读取确切的值,但不确定如何在 python 中使用 Raspberry Pi 进行读取。我有在 Intructables 上找到的这段代码。 https://www.instructables.com/id/Soil-Moisture-Sensor-Raspberry-Pi/
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
#GPIO SETUP
channel = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(channel, GPIO.IN)
def callback(channel):
if GPIO.input(channel):
print "no Water Detected!"
else:
print "Water Detected!"
GPIO.add_event_detect(channel, GPIO.BOTH, bouncetime=300) # let us know when the pin goes HIGH or LOW
GPIO.add_event_callback(channel, callback) # assign function to GPIO PIN, Run function on change
# infinite loop
while True:
time.sleep(1)
这段代码只是告诉是否检测到水,但我需要水分的实际值。
解决方案
它基于传感器可以提供的输出类型以及控制器 I/O 通道的配置。数字传感器和 IO 引脚只能提供 0 或 1 个输入,即您目前使用的 0V 或 3/5V。对于您指定的要求,传感器和 IO 必须是模拟类型,根据湿度水平给出不同的 0-3/5V。浏览传感器规格并找出它是否可以提供模拟输出,然后进行相同的编程。从您共享的链接看来,传感器输出是数字(DO),不适合您的要求。从市场上寻找可以提供 AO(模拟输出)的传感器。
推荐阅读
- python - 过滤到分页django
- java - 如何保留yaml中的所有前导缩进?
- llvm - 如何获得 getelementptr 指令的结果?
- r - 如何评估具有不同参数的函数,而不必继续在 R 中写出来
- flutter - 如何在 Flutter 中为 Web 编写特定于平台的代码?
- powershell - 使用 Powershell 版本 4 从 Get-ChildItem 中排除多个项目
- java - 如何在 Java 中的包私有声明中破坏封装
- atmel - ATMEL STUDIO 7 中的 I/O 寄存器页面填满整个屏幕
- javascript - 使用 i18next-http-backend 延迟加载翻译时页面闪烁
- python - 使用 python,我需要写下 AST 来评估布尔函数吗?