本文介绍了北醒单点系列雷达IIC模式下使用CH341芯片转接板读取雷达数据的例程
例程下载:
链接: https://pan.baidu.com/s/1KVJ-fINxUgKZny2Gdi8T2A
提取码: 6ax8
可支持雷达版本:TFluna\TFmini-S\TFmini-Plus\TF02-Pro
注:需要先确认雷达是否转换成IIC模式
具体转换方式请参考对应的雷达使用说明书
CH341转接板
在这里插入图片描述
例程测试系统:Windows 10
Python 版本:3.8 32位(64位会报错)

硬件接线:

请参照雷达使用说明书接线,请确认供电是否按照雷达使用说明书供电
ch341转接板请确认是否在IIC模式下,并已安装好对应的驱动
驱动下载地址
链接:https://pan.baidu.com/s/1itjyDsSWQRZeqSw11F1URw 提取码: wi4y

#! /usr/bin/env python
#coding=utf-8
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) #50ms
                    目录硬件接线:源码本文介绍了北醒单点系列雷达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&