我正在为花园里的各种温室建立一个监控和自动化系统。由于需要控制和监控的设备数量而不是购买额外的Raspberry PI,我决定使用GPIO端口扩展器并使用现有的Raspberry PI硬件。
当我通过MCP23017将DHT22温度和湿度传感器连接起来时,我设法打了一个“墙”。我知道我已正确连接MCP23017,因为我可以使LED闪烁并且继电器开关打开和关闭。
这些都不需要从连接的设备读取数据,这是我遇到问题的地方,非常感谢任何帮助或建议。
我正在运行Revison 2 Raspberry PI A,sudo i2cdetect -y 1显示MCP23017连接到0X20。
我正在使用Python 2.7进行编码,使用Adafruit_DHT模块和寻址MCP23017我正在使用wiringpi2模块。虽然我对这里有关使用wiringpi2的其他建议持开放态度。
Adafruit_DHT使用以下语法连接并从传感器检索信息:
import Adafruit_DHT
sensor = Adafruit_DHT.DHT22
pin = 7
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
当直接连接到其中一个“标准”GPIO端口时,上述工作正常。但是我还没有弄清楚如何以同样的方式处理额外的新GPIO端口,即
我尝试过以下操作但没有成功:
import Adafruit_DHT
import wiringpi2
wiringpi2.wiringPiSetupGpio()
wiringpi2.mcp23017Setup(65,0x20)
for n in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16):
humidity, temperature = Adafruit_DHT.read_retry(sensor22, wiringpi2.digitalRead(n+64))
print n, humidity, temperature
所以上面的循环遍历每个新端口,但我没有得到任何结果,正如我所说,如果我直接连接设备PI上的GPIO工作正常。我怀疑我如何告诉司机使用哪个PIN码的问题。
我真的很感激有关此问题的任何建议或帮助。正如我所说,我对如何将此DHT22与MCP23017一起使用的其他想法持开放态度。