3a277fe6319f7e3b103b53e056727e7d11403e9f
他山触觉传感器python(64bit)demo
此demo为他山触觉传感器python(64bit)demo,可以读取传感器的通道原始值和三维力值
Getting started
安装ch341驱动
windows
直接运行CH341PAR.exe,按照提示安装
linux
按照“CH341PAR_LINUX”文件夹下的“README.md"安装驱动
linux下环境搭建
对于linux用户,需要将ch341添加到udev规则(普通用户也可以访问ch341设备),或者使用sudo权限来运行程序(不推荐)
将用户添加到dialout组
查看 dialout 组的成员,如果不包含当前用户则需要将用户添加到 dialout 组,“john”替换为你想要添加到组的用户名
# 查看 dialout 组的成员
getent group dialout
# 将用户 'john' 添加到 dialout 组
sudo usermod -a -G dialout john
创建rules文件
在 /etc/udev/rules.d/ 目录下创建一个新的规则文件,例如 ch341.rules,添加如下内容:
SUBSYSTEM=="usbmisc", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="5512", MODE="0666", GROUP="dialout"
idVendor和idProduct是CH341设备的供应商和产品ID,可以通过lsusb命令查找这些ID
更新规则文件
sudo udevadm control --reload-rules
sudo udevadm trigger
运行示例
上电
传感器不同版本的固件上电时间存在差异,建议在传感器上电3s后再运行读取程序
demo根目录下运行如下命令执行程序
python cap_read.py
程序运行结果:
capChannelDat=[3020838, 3006548, 2986382, 2929380, 2995152, 2992100, 2988970, 2996232, 2904946, 2947736, 2895000, 2842188, 2999608, 2922258, 2776718, 7950022]
nf[0] = 0.0
tf[0] = 0.0
tfDir[0] = 0
nf[1] = 0.0
tf[1] = 0.0
tfDir[1] = 0
sProxCapData[0] = 0
sProxCapData[1] = 0
mProxCapData[0] = 0
- capChannelDat为电容通道原始值
- nf、tf、tfDir分别为一组三维力的法向力、切向力和切向力方向
- sProxCapData为自电容接近值
- mProxCapData为互电容接近值
连接手指数量设定
手指连接板最大支持5个传感器连接,不足5个传感器连接会影响读取频率,可以修改如下宏定义配置连接数量:
DEF_MAX_FINGER_NUM = 2 # 需要连接的手指数量,最大5个
iic接口顺序和iic地址定义
此demo中的iic地址和插入转接板的接口位置是固定对应关系,iic地址和iic接口顺序对照关系如下:

如果插入的传感器和对应接口的iic地址不同,在初始化阶段会强制将传感器的iic地址设置为图中对应的地址:
def checkSensor(self):
# 广播的方式读取当前传感器地址,并默认将iic地址配置为和pca相同的地址
addrRead = self.snsCmd.getAddr(0)
if addrRead != self.pcaIdx:
if self.pcaIdx != self.snsCmd.setAddr(addrRead, self.pcaIdx):
print(f"set addr false, setaddr={self.pcaIdx}")
return False
else:
addrRead = self.pcaIdx
print(f"update iic addr, new addr ={addrRead}")
Description
Languages
Python
84.3%
C
15.7%