前言
本文介绍了如何将 Benewake 单点 LiDAR 与 Raspberry Pi Pico 微控制器通过MicroPython连接起来。 运用本文档前提:
最终用户手上有 Pico 微控制器和任何单点激光雷达(Luna、TFmini-Plus、mini-S、TF02-pro、TF03-UART)
LiDAR接口模式为TTL(默认标品协议)
关于Pico准备工作请参考
2021-09-15 Raspberry Pi Pico 初上手
本文档例程编译经使用Windows 10 64位系统
PICO产品介绍请参考上方链接
PICO与Benewake Lidar的硬件连接
根据 Pico 的规格,它有两个 UART 端口,这些端口可以指向可对应的引脚。 如(GP0,GP1),(GP4,GP5),(GP8,GP9),(GP12,GP13),(GP16,GP17)都适合UART通讯。 在我们的代码中,我们使用了GPIO-8和9。
需要注意的是,PICO电压供应只有一个引脚,也是3.3V,而Benewake LiDAR的额定电压是5V。 如果电压不是5V,精度会受到影响,误差会超过额定误差,在某些情况下,误差是非线性的,随着距离的增加而增加。 它可能达到40厘米。 因此建议为 LiDAR 使用单独的 5V 电源。
注
以上图片的线缆颜色并非匹配目前所有的Benewake雷达,建议接线前详细参考对应的雷达使用说明书
雷达协议说明
关于北醒雷达的协议,可以参考对应雷达的使用说明书
串口协议
雷达输出协议解析
例程源码
from machine import UART, Pin
import time
uart1 = UART(1, baudrate=115200, tx=Pin(8), rx=Pin(9)) #定义雷达接收接口
uart0 = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1)) #定义结果打印输出
def getLidarData(UART1,UART0):
temp = bytes()
if UART1.any() > 0:
temp += UART1.read(9)
if temp[0] == 0x59 and temp[1] == 0x59 :
distance = temp[2] + temp[3] * 256 #获取距离值
strengh = temp[4] + temp[5] * 256 #获取信号强度值
temperature= (temp[6] + temp[7]* 256)/8-256 #获取芯片温度值
#UART0.write(bytes(temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8]))
UART0.write(temp)
#UART0.write('\r\n')
print("distance =%5dcm,strengh = %5d,temperature = %5d℃"%(distance,strengh,temperature))
while True:
getLidarData(uart1,uart0)
结果输出
USB接口输出
串口0雷达原数据输出