0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用TFMini LiDAR传感器和Arduino实现激光测距

芯情观察猿 来源:芯情观察猿 作者:芯情观察猿 2022-07-19 10:34 次阅读

LiDAR测距应用越来越普及,例如行人检测、车辆检测、障碍物探测等自动驾驶应用,以及道闸防砸、高度计等。本项目以北醒TFMini-S Micro LiDAR传感器为例,演示LiDAR传感器与Arduino的连接,以及测距结果及显示。本项目BOM如下:

Arduino Nano开发板 1

TFMini-S LiDAR传感器 1

JHD162A 16X2 LCD显示器 1

10K电位器 1

面包板 1

跳线 22


基于激光的精确测距能力,LiDAR是一种精确的激光探测及测距器件。LiDAR工作原理与无线电雷达没有区别,即由雷达发射系统发送一个信号,经目标反射后被接收系统收集,通过测量反射光的运行时间而确定目标的距离。至于目标的径向速度,可以由反射光的多普勒频移来确定,也可以测量两个或多个距离,并计算其变化率而求得速度。


poYBAGLWGEiAJn8WAAC2OUmaU7A93.jpeg?source=d16d100b

项目采用的TFmini-S是一款基于TFmini升级的单点测距雷达,盲区降低为10cm,室外测距性能进一步提升,不同反射率的测距精度得到优化,可以实现稳定、精准、高灵敏和高速的距离测量。


连接TFMini-S LiDAR传感器与Arduino


TFMini-S LiDAR可通过UARTI2C接口与Arduino连接。本项目采用UART。


pYYBAGLWGEiAfemCAACe3yRkudU96.jpeg?source=d16d100b

将TFMini传感器的VCC & GND引脚连接到Arduino开发板的5V & GND引脚,Tx、RX引脚连接到Arduino开发板的D2 & D3引脚。


poYBAGLWGEmACbDoAADHEPvEYxk14.jpeg?source=d16d100b

当然,也可以把Tx and Rx连接在其他引脚上,只要支持软件串口即可。


源代码及例程库


北醒官网、Github都提供有TFMini-S LiDAR传感器库文件和例程,具体如下:

include

#include "TFMini.h"

TFMini tfmini;

SoftwareSerial SerialTFMini(2, 3); //The only value that matters here is the first one, 2, Rx

void getTFminiData(int* distance, int* strength)

{

static char i = 0;

char j = 0;

int checksum = 0;

static int rx[9];

if (SerialTFMini.available())

{

rx[i] = SerialTFMini.read();

if (rx[0] != 0x59)

{

i = 0;

}

else if (i == 1 && rx[1] != 0x59)

{

i = 0;

}

else if (i == 8)

{

for (j = 0; j < 8; j++)

{

checksum += rx[j];

}

if (rx[8] == (checksum % 256))

{

*distance = rx[2] + rx[3] * 256;

*strength = rx[4] + rx[5] * 256;

}

i = 0;

}

else

{

i++;

}

}

}

void setup()

{

Serial.begin(115200); //Initialize hardware serial port (serial debug port)

while (!Serial); // wait for serial port to connect. Needed for native USB port only

Serial.println ("Initializing...");

SerialTFMini.begin(TFMINI_BAUDRATE); //Initialize the data rate for the SoftwareSerial port

tfmini.begin(&SerialTFMini); //Initialize the TF Mini sensor

}

void loop()

{

int distance = 0;

int strength = 0;

getTFminiData(&distance, &strength);

while (!distance)

{

getTFminiData(&distance, &strength);

if (distance)

{

Serial.print(distance);

Serial.print("cm\t");

Serial.print("strength: ");

Serial.println(strength);

}

}

delay(100);

}


pYYBAGLWGEmADL1JAACwmwtciao63.jpeg?source=d16d100b

这下,Serial monitor开始显示距离和信号强度,把手在传感器前面来回移动可观察到距离在变化,盲区从30cm缩减到10cm。


poYBAGLWGEqAC4mYAACFbmClVk410.jpeg?source=d16d100b

如果希望通过LCD显示测量结果,就需要在前述电路的面包板上加一个16x2 LCD显示器,并通过10K电位器来调节LCD的对比度。这样,本项目就实现了便携式涉及,可以装起来带去户外体验了。


pYYBAGLWGEqARcdYAADtWrggnRQ50.jpeg?source=d16d100b

#include

LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

#include

#include "TFMini.h"

TFMini tfmini;

SoftwareSerial SerialTFMini(2, 3); //The only value that matters here is the first one, 2, Rx

void getTFminiData(int* distance, int* strength)

{

static char i = 0;

char j = 0;

int checksum = 0;

static int rx[9];

if (SerialTFMini.available())

{

rx[i] = SerialTFMini.read();

if (rx[0] != 0x59)

{

i = 0;

}

else if (i == 1 && rx[1] != 0x59)

{

i = 0;

}

else if (i == 8)

{

for (j = 0; j < 8; j++)

{

checksum += rx[j];

}

if (rx[8] == (checksum % 256))

{

*distance = rx[2] + rx[3] * 256;

*strength = rx[4] + rx[5] * 256;

}

i = 0;

}

else

{

i++;

}

}

}

void setup()

{

lcd.begin(16, 2);

Serial.begin(115200); //Initialize hardware serial port (serial debug port)

while (!Serial); // wait for serial port to connect. Needed for native USB port only

Serial.println ("Initializing...");

SerialTFMini.begin(TFMINI_BAUDRATE); //Initialize the data rate for the SoftwareSerial port

tfmini.begin(&SerialTFMini); //Initialize the TF Mini sensor

}

void loop()

{

int distance = 0;

int strength = 0;

getTFminiData(&distance, &strength);

while (!distance)

{

getTFminiData(&distance, &strength);

if (distance)

{

Serial.print(distance);

Serial.print("cm\t");

Serial.print("strength: ");

Serial.println(strength);

lcd.setCursor(0, 0);

lcd.print("Dis: ");

lcd.print(distance);

lcd.print(" cm");

lcd.setCursor(0, 1);

lcd.print("Str: ");

lcd.print(strength);

}

}

delay(500);

lcd.clear();

}


结果显示,TFMini-S LiDAR传感器最大测距为12m,由于户外障碍物比室内少很多,测距准确度高达90%。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48137

    浏览量

    740406
  • 激光测距
    +关注

    关注

    9

    文章

    143

    浏览量

    27014
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184898
  • LIDAR
    +关注

    关注

    10

    文章

    305

    浏览量

    29003
收藏 人收藏

    评论

    相关推荐

    proteus中可以什么组合来实现具有激光测距传感器的功能

    proteus中可以什么组合来实现具有激光测距传感器的功能
    发表于 05-20 14:58

    baumer激光测距传感器独特应用

    简单的统计学原理,即平均法则实现了1mm的分辨率,并且能保证响应速度。BAUMER堡盟传感器远距离激光测距仪在工作时向目标射出一束很细的激光
    发表于 04-27 12:32

    Dimetix Ag激光测距传感器激光传感器DLS-A

    Dimetix AG致力于为各种需要多用途测距传感器激光传感器的行业提供设备。基于徕卡测量系统许可使用的DISTO技术,Dimetix开发的激光
    发表于 10-24 14:09

    激光测距传感器的应用

    `汽车防撞探测:一般来说,大多数现有汽车碰撞预防系统的激光测距传感器使用激光光束以不接触方式用于识别汽车在前或者在后形势的目标汽车之间的距
    发表于 11-12 11:07

    高频激光测距传感器

    小体积高性能激光测距传感器:100khz高速测量,精度0.7mm,距离0-300m
    发表于 07-27 19:41

    【北醒TFmini-S 测距/避障激光雷达传感器免费试用连载】基于北醒TFmini-S 测距/避障激光雷达传感器关键地区人员靠近防撞提醒装置

    项目名称:基于北醒TFmini-S 测距/避障激光雷达传感器关键地区人员靠近防撞提醒装置试用计划:申请理由本人在嵌入式和电路领域有五年多的学习和开发经验,曾设计过北斗和GPS定位救生装
    发表于 05-28 17:29

    【北醒TFmini-S 测距/避障激光雷达传感器免费试用连载】传送带货物监测

    TFmini-S 测距/避障激光雷达传感器完善生产线货物监测功能。项目计划①根据文档,对传感器使用快速入门②在开发板上开发
    发表于 05-28 17:31

    【北醒TFmini-S 测距/避障激光雷达传感器免费试用连载】基于FPGA平台的YOLO-Complex点云数据加速

    开发验证。项目计划①基于YOLO-Complex算法,开发RTL工程,实现点云算法,目前完成度80%;②学习北醒TFmini-S 测距/避障激光雷达
    发表于 05-28 17:32

    【北醒TFmini-S 测距/避障激光雷达传感器免费试用连载】自动壁障安全闸门

    项目名称:自动壁障安全闸门试用计划:申请理由:北醒专注于固态激光雷达,推出的TFmini系列拥有低成本、体积小、低功耗三大优点。TFmini-S作为升级版本拥有小巧轻便,更高性能的特点,应用的领域
    发表于 05-28 17:33

    【北醒TFmini-S 测距/避障激光雷达传感器试用连载】——上位机测试

    更是吃惊,非常小巧的传感器,非常轻便。作为一款激光雷达,小巧轻便会非常有优势。如果运用在重量控制严格、位置空间有限的无人机上,优势会非常明显。通过对比我们可以看到,它的大小基本只有学生的橡皮擦那么大
    发表于 06-13 22:08

    【北醒TFmini-S 测距避障激光雷达传感器试用连载】+3.传感器数据稳定性测试

    ` 本帖最后由 川楠 于 2020-6-22 10:13 编辑 【北醒TFmini-S 测距避障激光雷达传感器试用连载】+3.传感器数据
    发表于 06-20 14:25

    LDS激光测距传感器

    比较全的传感器产品介绍 激光测距传感器获取距离信息。当激光投射到障碍物上时,会在传感器里形成光斑
    发表于 09-14 07:44

    红外激光传感器测距控制系统的相关资料推荐

    控制目标通过红外激光传感器测到的数据,交给单片机进行处理后控制直线推杆的运动情况控制方式通过激光传感器的反馈数据(实测距离值),判断推杆的运
    发表于 02-15 07:20

    使用LiDAR激光传感器实现AGV小车自主导航

    探测和测距的远程感应技术,利用脉冲激光的形式测量不同的距离,激光 LiDAR 传感器帮助机器人定位、导航和躲避障碍物,这样机器人就能够感知周
    的头像 发表于 05-20 13:06 2527次阅读

    什么是LiDAR激光探测与测距

    LiDAR激光探测与测距LiDAR是Light Detection And Ranging(激光探测与
    的头像 发表于 04-30 14:41 3033次阅读
    什么是<b class='flag-5'>LiDAR</b>(<b class='flag-5'>激光</b>探测与<b class='flag-5'>测距</b>)