Python 3.x 覆盆子pi,带TCA9548A多路复用器和SI7021
我有两个连接到一个。我把它连接到一个树莓皮运行蟒蛇3。 代码似乎输出了正确的温度/湿度,但我发现奇怪的是,相隔几分钟的读数与最小小数点的值完全相同。见下图。这些输出相隔几分钟运行 只是看起来不太正确,它的精确值是相隔几分钟的。然而,它一整天都在变化。有时我会看到它在超过10分钟内不会改变值 下面是我使用的python代码。在我冬天在温室里使用之前,有没有人建议我把它弄得更好?这些温度输出将控制整个温室自动化,我需要锁定这一部分,这样我就不会冒失去所有植物的风险:) 任何帮助都会很好! 谢谢Python 3.x 覆盆子pi,带TCA9548A多路复用器和SI7021,python-3.x,raspberry-pi3,Python 3.x,Raspberry Pi3,我有两个连接到一个。我把它连接到一个树莓皮运行蟒蛇3。 代码似乎输出了正确的温度/湿度,但我发现奇怪的是,相隔几分钟的读数与最小小数点的值完全相同。见下图。这些输出相隔几分钟运行 只是看起来不太正确,它的精确值是相隔几分钟的。然而,它一整天都在变化。有时我会看到它在超过10分钟内不会改变值 下面是我使用的python代码。在我冬天在温室里使用之前,有没有人建议我把它弄得更好?这些温度输出将控制整个温室自动化,我需要锁定这一部分,这样我就不会冒失去所有植物的风险:) 任何帮助都会很好! 谢谢 #
#!/usr/bin/python
import smbus
import time
tempSensor = 0x40 # default SI7021 address
multiplexer = 0x70 # default TCA9548A address
bus = smbus.SMBus(1) # Rev 2 Pi uses 1
def getHumidity(tempSensor):
try:
bus.write_byte(tempSensor, 0xF5)
time.sleep(0.1)
data0 = bus.read_byte(0x40)
data1 = bus.read_byte(0x40)
humidity = ((data0 * 256 + data1) * 125 / 65536.0) - 6
return humidity
except:
return 0
def getTemp(tempSensor):
try:
bus.write_byte(tempSensor, 0xF3)
time.sleep(0.1)
data0 = bus.read_byte(0x40)
data1 = bus.read_byte(0x40)
cTemp = ((data0 * 256 + data1) * 175.72 / 65536.0) - 46.85
return cTemp
except:
return 0
# get first SI7021
bus.write_byte(multiplexer, 1)
time.sleep(.1)
status = str(bus.read_byte(0x70)) # read selected channel
h = str(getHumidity(tempSensor))
t = str(getTemp(tempSensor))
print(h)
print(t)
# get second SI7021
bus.write_byte(multiplexer, 2)
time.sleep(.1)
status = str(bus.read_byte(0x70)) # read selected channel
h = str(getHumidity(tempSensor))
t = str(getTemp(tempSensor))
print(h)
print(t)