Benewake(北醒) TFmini-S\TFmini Plus\TF-Luna\TF02-Pro IIC模式下雷达在Raspberry Pico MicroPython上的运用

前言

本文介绍了如何将 Benewake 单点 LiDAR 与 Raspberry Pi Pico 微控制器通过MicroPython连接起来。 运用本文档前提:

最终用户手上有 Pico 微控制器和任何单点激光雷达(Luna、TFmini-Plus、mini-S、TF02-pro)
LiDAR接口模式为IIC(默认IIC地址:0x10 )
注: 关于如何配置为IIC模式请参考雷达使用说明书

关于Pico准备工作请参考
2021-09-15 Raspberry Pi Pico 初上手
本文档例程编译经使用Windows 10 64位系统
PICO产品介绍请参考上方链接

PICO与Benewake Lidar的硬件连接

根据 Pico 的规格,它有两个 UART 端口,这些端口可以指向可对应的引脚。 在我们的代码中,我们使用了GPIO-8和9。
需要注意的是,PICO电压供应只有一个引脚,也是3.3V,而Benewake LiDAR的额定电压是5V。 如果电压不是5V,精度会受到影响,误差会超过额定误差,在某些情况下,误差是非线性的,随着距离的增加而增加。 它可能达到40厘米。 因此建议为 LiDAR 使用单独的 5V 电源。
在这里插入图片描述

以上图片的线缆颜色并非匹配目前所有的Benewake雷达,建议接线前详细参考对应的雷达使用说明书

雷达IIC协议说明

在这里插入图片描述
通讯时序
在这里插入图片描述
雷达返回9byte协议格式
在这里插入图片描述
此例程是通过指令获取雷达数据,Luna产品兼容此指令,Luna也可通过内存方式获取,详细请参考Luna使用说明书

例程源码

from machine import Pin, I2C
import time

i2c0 = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000)    #初始化I2C总线   

print(i2c0.scan())    #扫描一下当前设备的地址
address = 16          #雷达默认地址0x10
getLidarDataCmd = bytearray([0x5A,0x05,0x00,0x01,0x60])    #获取距离值指令

def getLidarData(I2C,I2C_ADDR,CMD):
    temp = bytes(9)          #雷达每次返回9BYTE数据
    
    I2C.writeto(I2C_ADDR, CMD)
    temp = I2C.readfrom(16, 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     #获取芯片温度值
        print("distance =%5dcm,strengh = %5d,temperature = %5d℃"%(distance,strengh,temperature))

while True:
    getLidarData(i2c0,address,getLidarDataCmd) #获取雷达测量距离值
    time.sleep(0.1)  # 睡眠100ms

结果输出

USB接口直接打印结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值