目录
前言
本例程仅用作参考,目前仅在win10 64位上测试,使用的Python版本为
3.8.6 32bit
Benewake(北醒) TF-LC02产品简要说明
性能参数
产品图片及尺寸
Arduino开发板介绍
参考链接:常用Arduino板介绍
Benewake(北醒) TF-LC02 接口及通讯协议说明
接口定义
串口协议说明
通讯协议说明
功能码说明
接线示意图
注:线路颜色仅供参考,具体参照实际线路颜色定义
例程说明
Python库需求说明
- numpy
- pyserial
注:以下例程因为是自动扫描COM口,建议在使用的时候关闭其它无关的COM口
# -*- coding: utf-8 -*-
# 添加自动扫描COM口的程序 @1
import serial.tools.list_ports #@1 获取COM口列表库
import time
import numpy as np
# @1 start 获取现有COM口程序
ports = serial.tools.list_ports.comports()
for p in ports:
print(p.device) #一般会查找最后一个COM口,建议关闭其它无关的COM口后进行测试
print(len(ports), 'ports found')
ser = serial.Serial()
ser.port = p.device #设置端口
ser.baudrate = 115200 #设置雷达的波特率
cmd = bytes.fromhex('55 AA 81 00 FA')
def getLidarData():
while True:
ser.write(cmd)
count = ser.in_waiting #获取接收到的数据长度
if count > 7:
recv = ser.read(8) #读取数据并将数据存入recv
#print('get data from serial port:', recv)
ser.reset_input_buffer() #清除输入缓冲区
if recv[0] == 0x55 and recv[1] == 0xAA and recv[7] == 0xFA: # python3
distance = np.int16(recv[5] + np.int16(recv[4] << 8))
print('distance = %5d mm' % (distance))
ser.reset_input_buffer()
time.sleep(0.005) #50ms
else:
time.sleep(0.005) #50ms
if __name__ == '__main__':
try:
if ser.is_open == False:
try:
ser.open()
except:
print('Open COM failed!')
getLidarData()
except KeyboardInterrupt: # Ctrl+C
if ser != None:
ser.close()
运行结果显示
附录
已生成EXE文件,可直接打开测试
按上面介绍的接线方式接好后直接双击:
链接: https://pan.baidu.com/s/1g2juQx42QmY71aFwGK6YKA 提取码: cpju
测试结果