Python Co2 k30传感器不适用于覆盆子pi 3

Python Co2 k30传感器不适用于覆盆子pi 3,python,iot,raspberry-pi3,Python,Iot,Raspberry Pi3,我有以下代码正在运行,用于检测二氧化碳水平。 下面是一些关于模型的信息 二氧化碳传感器-K30 树莓皮3 我已经按照以下文件完成了pi和k-30之间的连接 下面是我的python代码 import serial import time ser = serial.Serial("/dev/ttyS0",baudrate =9600,timeout = .5) print " AN-137: Raspberry Pi3 to K-30 Via UART\n" ser.flushInput() ti

我有以下代码正在运行,用于检测二氧化碳水平。 下面是一些关于模型的信息

二氧化碳传感器-K30 树莓皮3

我已经按照以下文件完成了pi和k-30之间的连接

下面是我的python代码

import serial
import time
ser = serial.Serial("/dev/ttyS0",baudrate =9600,timeout = .5)
print " AN-137: Raspberry Pi3 to K-30 Via UART\n"
ser.flushInput()
time.sleep(1)
for i in range(1,21):

    ser.flushInput()
    time.sleep(1)
    ser.write("\xFE\x44\x00\x08\x02\x9F\x25")
    time.sleep(1)
    resp = ser.read(7)

    high = ord(resp[3])
    low = ord(resp[4])
    co2 = (high*256) + low
    print "i = ",i, " CO2 = " +str(co2)
    time.sleep(.5)
我没有得到一致的输出

我得到下面的东西

pi@raspberrypi:~/i2c $ sudo python test-co2.py 
AN-137: Raspberry Pi3 to K-30 Via UART

i =  1  CO2 = 2458
i =  2  CO2 = 2457
i =  3  CO2 = 2448
Traceback (most recent call last):
File "test-co2.py", line 16, in <module>
    high = ord(resp[3])
IndexError: string index out of range
pi@raspberrypi:~/i2c $ sudo python test-co2.py 
AN-137: Raspberry Pi3 to K-30 Via UART

i =  1  CO2 = 2207
Traceback (most recent call last):
File "test-co2.py", line 16, in <module>
   high = ord(resp[3])
IndexError: string index out of range
pi@raspberrypi:~/i2c $
pi@raspberrypi:~/i2c$sudo python test-co2.py
AN-137:树莓Pi3通过UART连接至K-30
i=1二氧化碳=2458
i=2二氧化碳=2457
i=3二氧化碳=2448
回溯(最近一次呼叫最后一次):
文件“test-co2.py”,第16行,在
高=作战需求文件(分别为[3])
索引器错误:字符串索引超出范围
pi@raspberrypi:~/i2c$sudo python test-co2.py
AN-137:树莓Pi3通过UART连接至K-30
i=1二氧化碳=2207
回溯(最近一次呼叫最后一次):
文件“test-co2.py”,第16行,在
高=作战需求文件(分别为[3])
索引器错误:字符串索引超出范围
pi@raspberrypi:~/i2c$
谢谢你的帮助

高=作战需求文件(分别为[3])

索引器错误:字符串索引超出范围

这意味着对于该特定调用,字符串
resp
的长度为0,并且代码试图指向字符串的第三个元素。这就是为什么索引超出范围

如果您尝试在每次迭代中查看
len(rep)
,您将在发生错误的特定迭代中得到0,但由于您在开始时拥有数据,这意味着您至少能够读取串行端口

问题可能在于传感器的电源/gnd甚至RX/TX引脚连接松动


您能分享一下您从PI3的串行端口获取数据的具体做法吗?或者尝试这样做:sudo chmod g+r/dev/ttyS0?

您可能应该在索引之前检查结果内容。很明显,结果栏比您预期的要少。这是1/2答案和1/2问题,如果您需要在界面上询问其他问题,请只传递答案。