请参照雷达使用说明书接线,请确认供电是否按照雷达使用说明书供电
ch341转接板请确认是否在IIC模式下,并已安装好对应的驱动
驱动下载地址
链接:https://pan.baidu.com/s/1itjyDsSWQRZeqSw11F1URw 提取码: wi4y
import os
import time
from ctypes import *
class USBI2C():
ch341 = windll.LoadLibrary("CH341DLL.dll")
def __init__(self, usb_dev = 0, i2c_dev = 0x20):
self.usb_id = usb_dev
self.dev_addr = i2c_dev
if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
USBI2C.ch341.CH341SetStream(self.usb_id, 0x82)
USBI2C.ch341.CH341CloseDevice(self.usb_id)
else:
print("USB CH341 Open Failed!")
def read(self):
if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
rec = (c_byte * 1)()
ibuf = (c_byte * 9)()
rec[0] = self.dev_addr
USBI2C.ch341.CH341StreamI2C(self.usb_id, 1, rec, 9, ibuf)
USBI2C.ch341.CH341CloseDevice(self.usb_id)
return ibuf
else:
print("USB CH341 Open Failed!")
return 0
def write(self,cmd,size):
if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
tcmd = (c_byte * (size + 1))()
ibuf = (c_byte * 1)()
tcmd[0] = self.dev_addr
for i in range (size):
tcmd[i+1] = cmd[i] & 0xff
USBI2C.ch341.CH341StreamI2C(self.usb_id, 6, tcmd, 0, ibuf)
USBI2C.ch341.CH341CloseDevice(self.usb_id)
else:
print("USB CH341 Open Failed!")
if __name__ == "__main__":
cmd = (c_byte * 5)(0x5a,0x05,0x00,0x01,0x60)
size = sizeof(cmd)
while True:
q = USBI2C()
q.write(cmd,size)
rec =q.read()
dist =((rec[2]&0xff)+(rec[3]&0xff)*256)
strengh =((rec[4]&0xff)+(rec[5]&0xff)*256)
temp =((rec[6]&0xff)+(rec[7]&0xff)*256)/8-256
print("Dist:",dist,"Strengh:",strengh,"Temp:",temp)
time.sleep(0.05)
目录硬件接线:源码本文介绍了北醒单点系列雷达IIC模式下使用CH341芯片转接板读取雷达数据的例程例程下载:链接: https://pan.baidu.com/s/1KVJ-fINxUgKZny2Gdi8T2A提取码: 6ax8可支持雷达版本:TFluna\TFmini-S\TFmini-Plus\TF02-Pro注:需要先确认雷达是否转换成IIC模式具体转换方式请参考对应的雷达使用说明书CH341转接板例程测试系统:Windows 10Python 版本:3.8硬件接线:请参照雷
UART全称为Universal Asynchronous Receiver/Transmitter,通用异步收发传输器。
UART一般用于电路板内部通信或者短距离通信,最常用的就是单片机,stm32等。UART通信是两个IC(integrated circuit)进行数据通信的方式,其中一方的TX负责发送数据给对方的RX,一方的RX负责接收对方发送的数据.
理论上,我们的驱动板和树莓派通信,要求两个电路板上都需要有UART通信接口。
尤其要关注USB的波特率属性,保证要与蓝牙的波特率相同,这样传递数据才不会乱码。
stty -F /dev/ttyUSB0 115200 #修改usb的波特率
# 其余用法可以通过 stty --help 来查询
蓝牙属性是通过AT指令来查询,详细见跳转
其中有以下内容需要注意:
蓝牙波特率需要与USB的波特率相同
查询的时候留意NAME与PWSD
设备地址:十六进制输入的设备地址,一般I2C 设备的地址都是7 位+1 位的读写位,这里设备地址就是7 位地址左移一位。也就 是最后一位肯定是0。有些数据手册中会直接写出左移之后的地址。这里需要大家多注意一下。
寄存器 :十六进制的寄存器地址(注意是两位数:00~FF)
读取长度:十进制方式输入...
下载Linux系统下的USB2I2C驱动安装 :http://www.wch.cn/downloads/file/202.html
我下载的包为CH341PAR_LINUX.ZIP:
解压下载好的驱动压缩包:#unzip CH341PAR_LINUX.ZIP;
解压后会生成一个文件...
Jetson 使用IIC接口读取TFmini-plus等传感器数据
最近使用Jetson nx/nano的IIC接口来读取单点激光雷达TFmini-plus的数据,将开发过程记录如下。
首先需要了解IIC通信协议的基本原理,可参考我之前所写的博客:
https://blog.csdn.net/w1050321758/article/details/108956570?spm=1001.2014.3001.5501
#include <stdio.h>
#include <stdint.h&