我正在使用mac终端,并试图使用raspberry pi 4来捕获和存储从DHT22传感器获取的值,每当我试图正确地连接它时,我就会得到这些错误: DHT传感器未找到,请检查连接DH22传感器时的接线。
De-initializing self.pulse_in
De-initializing self.pulse_in
Traceback (most recent call last):
File "/home/pi/humidity.py", line 26, in
temperature_c = dhtDevice.temperature
File "/home/pi/.local/lib/python3.9/site-packages/adafruit_dht.py", line 274, in temperature
self.measure()
File "/home/pi/.local/lib/python3.9/site-packages/adafruit_dht.py", line 219, in measure
pulses = self._get_pulses_pulseio()
File "/home/pi/.local/lib/python3.9/site-packages/adafruit_dht.py", line 141, in _get_pulses_pulseio
self.pulse_in.clear()
File "/home/pi/.local/lib/python3.9/site-packages/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py", line 150, in clear
self._mq.send("c", True, type=1)
OSError: [Errno 22] Invalid argument在处理上述异常的过程中,发生了另一个异常:
Traceback (most recent call last):
File "/home/pi/humidity.py", line 44, in
dhtDevice.exit()
File "/home/pi/.local/lib/python3.9/site-packages/adafruit_dht.py", line 93, in exit
self.pulse_in.deinit()
File "/home/pi/.local/lib/python3.9/site-packages/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py", line 111, in deinit
procs.remove(self._process)
ValueError: list.remove(x): x not in list有人能理解这件事吗?
我的代码如下:
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
SPDX-License-Identifier: MIT
import time
import datetime
import board
import adafruit_dht
Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D4)
e = datetime.datetime.now()
date = "%s-%s-%s" % (e.day, e.month, e.year)
t = time.localtime()
current_time = time.strftime("%H%M%S", t)
file = open('humidityValues'+ date + '_' + current_time +'.txt', 'w')
you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
This may be necessary on a Linux single board computer like the Raspberry Pi,
but it will not work in CircuitPython.
dhtDevice = adafruit_dht.DHT22(board.D18)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
t = time.local
current_time = time.strftime("%H:%M:%S", t)
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
str = "time=" + current_time + " temp={0:0.1f}ºC humidity={1:0.1f}%".format(temperature_c, humidity)
print(str)
file.write(str + "\n")
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
#raise error
time.sleep(2.0)我试着用这样的方法来解决这个问题:
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
SPDX-License-Identifier: MIT
import time
import datetime
import board
import adafruit_dht
Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D4)
e = datetime.datetime.now()
date = "%s-%s-%s" % (e.day, e.month, e.year)
t = time.localtime()
current_time = time.strftime("%H%M%S", t)
file = open('humidityValues'+ date + '_' + current_time +'.txt', 'w')
you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
This may be necessary on a Linux single board computer like the Raspberry Pi,
but it will not work in CircuitPython.
dhtDevice = adafruit_dht.DHT22(board.D18, use_pulseio=False)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
t = time.local
current_time = time.strftime("%H:%M:%S", t)
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
str = "time=" + current_time + " temp={0:0.1f}ºC humidity={1:0.1f}%".format(temperature_c, humidity)
print(str)
file.write(str + "\n")
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
#raise error
time.sleep(2.0)但是,我得到的只有这样的东西:校验和没有验证。再试试。没有返回完整的缓冲区。再试试。
有人有什么建议吗。
注意:我绝不会把上面的代码当作我自己的。
发布于 2022-03-05 08:24:47
几个月前我也有过类似的问题。您的脚本看起来与我在教程中第一眼看到的脚本相同:https://pypi.org/project/adafruit-circuitpython-dht/
以下几点可能会有所帮助:
3,3V
知道这一点很难看,但是检查布线是非常重要的(有时我是盲目的:D )<代码>H 215<代码>F 216
当它起作用时只是一个提示:试着计算精确数据的中值。
https://stackoverflow.com/questions/71150044
复制相似问题