我正在设置Raspberry Pi来记录Sensirion SCD30传感器的数据(CO2,湿度和温度).我的代码在python3中,使用SMBus库通过Pi的GPIO中的I2C引脚与传感器通信.有一个命令可以确定传感器是否准备好发送数据.
该值0x0202通过I2C发送,并返回3个字节的数据:
0x00 0x00 0x81 for data not ready
0x00 0x01 0xB0 for data ready
Run Code Online (Sandbox Code Playgroud)
前两个字节是MSB和数据就绪值的LSB.正确结合他们应该0x0000和0x0001.第三个字节是前两个字节的CRC8.这是用多项式0x31和初始化计算的0xFF.
大约一半的时间,字节以错误的顺序发送.而不是MSB LSB CRC发送MSB CRC LSB.例如,如果数据准备就绪,则可能发送0x00, 0xB0, 0x01而不是0x00, 0x01, 0xB0.我无法弄清楚为什么会发生这种情况,我担心发送数据时会出现一些损坏或问题.我可以更改代码以识别CRC是否是第二个字节,但我想找到潜在的问题.
我正在使用smbus库发送和接收I2C数据.这是我发送命令和读取数据的代码:
bus = smbus.SMBus(0)
I2C_ADDRESS = 0x61
def sendCommand(self, cmd): # sends a 2 byte command (cmd)
data = [0]*2
data[0] = cmd >> 8 # splits 2 byte command into MSB and …Run Code Online (Sandbox Code Playgroud) 所以我已经使用python编程了一段时间了。我用python创建了一些简单的AI聊天机器人,它们通过文本进行通信。我想将其提升到一个新的水平,类似于个人伴侣AI。我的目标是放在树莓派上(我有一个与pi兼容的便携式充电器,麦克风和扬声器),并使其成为离线AI,可以与之交谈,做笔记,记住信息等。我想知道一种方法将离线STT和TTS引擎合并到我的python程序中。(我发现的大多数STT和TTS引擎都是通过google,亚马逊等在线提供的。)预先感谢。