小编Aeo*_*lus的帖子

无法通过Raspberry Pi Python SMBus接收的I2C字节

我正在设置Raspberry Pi来记录Sensirion SCD30传感器的数据(CO2,湿度和温度).我的代码在python3中,使用SMBus库通过Pi的GPIO中的I2C引脚与传感器通信.有一个命令可以确定传感器是否准备好发送数据.

链接到SCD30接口数据表

通过Sparkfun链接到arduino的SCD30库

该值0x0202通过I2C发送,并返回3个字节​​的数据:

0x00 0x00 0x81 for data not ready
0x00 0x01 0xB0 for data ready
Run Code Online (Sandbox Code Playgroud)

前两个字节是MSB和数据就绪值的LSB.正确结合他们应该0x00000x0001.第三个字节是前两个字节的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 sensor i2c raspberry-pi smbus

11
推荐指数
1
解决办法
1058
查看次数

Python 3人工智能:离线STT和TTS

所以我已经使用python编程了一段时间了。我用python创建了一些简单的AI聊天机器人,它们通过文本进行通信。我想将其提升到一个新的水平,类似于个人伴侣AI。我的目标是放在树莓派上(我有一个与pi兼容的便携式充电器,麦克风和扬声器),并使其成为离线AI,可以与之交谈,做笔记,记住信息等。我想知道一种方法将离线STT和TTS引擎合并到我的python程序中。(我发现的大多数STT和TTS引擎都是通过google,亚马逊等在线提供的。)预先感谢。

python raspberry-pi

1
推荐指数
1
解决办法
7336
查看次数

标签 统计

python ×2

raspberry-pi ×2

i2c ×1

sensor ×1

smbus ×1