风筝
发表于: 2022-4-6 10:40:07 | 显示全部楼层

在本篇文章中,我们将主要介绍TFMini-S Micro LiDAR雷达测距传感器与Arduino开发板的连接方式。同时还简要介绍了激光雷达技术和激光雷达的工作和应用。 LiDAR,即激光探测和测距,是一种很流行的遥感方法,用于测量物体的确切距离。您可能已经看到最新的iPhone或三星手机在背面使用LiDAR传感器以获得最佳相机性能。


激光雷达有很多应用,我们来看看Benewake的激光雷达传感器,称为TFMini-S微型激光雷达距离传感器。该激光雷达传感器可以测量长达12米的距离。这个传感器的成本约为40美元,有很多东西需要学习。


在本文中,我们将介绍TFMini-S LiDAR传感器与Arduino的连接。然后使用TFMini库和基本示例,可以计算距离和信号强度。


所需的组件

●    Arduino Nano开发板

●    TFMini-S微型激光雷达测距传感器

●    连接跳线

●    面包板


什么是激光雷达及其工作原理?

LiDAR,即激光探测和测距(Light Detection and Ranging),是一种非常流行的遥感方法,用于测量物体的确切距离。 LiDAR使用脉冲激光来计算物体与地平面的距离。

LiDAR.jpg


它可用于绘制整个区域的结构图,包括植被高度、密度和其他特征。激光雷达直接测量地面植被的高度和密度,使其成为科学家研究大面积植被的理想工具。


激光雷达如何工作?

激光雷达遵循一个简单的原理——将激光投射到地平面的物体上,并计算返回激光雷达源所需的时间。考虑到光的传播速度(大约每秒 186,000 英里),通过LiDAR测量精确距离的过程非常快。但是,这是非常技术性的。计算物体精确距离的公式如下:

距离=(光速x飞行时间)/2


TFMini-S微型激光测距传感器

Benewake公司的TFMini-S微型距离传感器(TFMini-S Micro LiDAR Distance Sensor)带有非常漂亮的包装。北醒是一家国内的公司,是固态激光雷达传感器和解决方案的领先供应商。TFMini-S微型激光雷达传感器也称为微型单点测距模块。

TFMini-S-LiDAR-Sensor.jpg


TFMini-S是TFmini的升级版。 TFMini-S具有独特的光学、结构和电子设计。TFmini-S具有成本低、体积小、功耗低等优点。它还具有多个接口以满足不同的要求。该模块具有UART和I2C接口。同时该板有一个微控制器,类似STM32系列控制器。通过将传感器连接到任何外部微控制器,您可以检索LiDAR数据。它有4个引脚作为电源引脚和UART引脚。红色线是VCC,黑色线是接地线。白色线是RX,绿色线是TX。

TFMini-S-LiDAR-Sensor-Pinout.jpg


TFMini-S的探测盲区从30cm缩短到10cm,提高了不同反射率的户外性能和精度。距离范围不受环境光干扰,可与室内范围保持一致,精度进一步优化。 可实现稳定、准确、灵敏、高频范围的检测。


特性

●    操作范围为0.1~12m

●    电源电压 - 5V

●    帧速率为10 – 1000Hz

●    工作温度0℃~60℃

●    通讯接口——UART

●    精度 – ±6cm@(0.1-6m), ±1%@(6m-12m)

●    视场 - 2°


TFMini-S微型激光测距传感器与Arduino的连接

让我们将TFMini-S微型激光测距传感器与Arduino开发板连接起来。您可以将传感器与UART接口或I2C接口连接。但我更喜欢UART接口。连接相当简单。

TFmini-LiDAR-Arduino-Connection.jpg


将TFMini-S传感器的VCC和GND引脚连接到Arduino开发板的5V和GND。同样,将Tx和RX连接到Arduino开发板的D2和D3。您可以使用任意其他支持软件串口的Tx和Rx引脚。

Interfacing-TFMini-S-Micro-LiDAR-Distance-Sensor-with-Arduino.jpg


代码/程序

Benewake TFMini传感器有一个专用库文件。可以查看Arduino TFMini库的Github存储库


我最初使用了TFMini库中的示例代码并上传了代码。代码上传后,但由于传感器无法检查距离,我收到一条错误消息。

Serial-TF-Sensor-Error.jpg


然后我修改了部分代码,这次传感器开始工作了。以下是修改后的代码。

  1. include <SoftwareSerial.h>
  2. #include "TFMini.h"
  3. TFMini tfmini;

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

  5. void getTFminiData(int* distance, int* strength)
  6. {
  7.   static char i = 0;
  8.   char j = 0;
  9.   int checksum = 0;
  10.   static int rx[9];
  11.   if (SerialTFMini.available())
  12.   {
  13.     rx[i] = SerialTFMini.read();
  14.     if (rx[0] != 0x59)
  15.     {
  16.       i = 0;
  17.     }
  18.     else if (i == 1 && rx[1] != 0x59)
  19.     {
  20.       i = 0;
  21.     }
  22.     else if (i == 8)
  23.     {
  24.       for (j = 0; j < 8; j++)
  25.       {
  26.         checksum += rx[j];
  27.       }
  28.       if (rx[8] == (checksum % 256))
  29.       {
  30.         *distance = rx[2] + rx[3] * 256;
  31.         *strength = rx[4] + rx[5] * 256;
  32.       }
  33.       i = 0;
  34.     }
  35.     else
  36.     {
  37.       i++;
  38.     }
  39.   }
  40. }


  41. void setup()
  42. {
  43.   Serial.begin(115200);       //Initialize hardware serial port (serial debug port)
  44.   while (!Serial);            // wait for serial port to connect. Needed for native USB port only
  45.   Serial.println ("Initializing...");
  46.   SerialTFMini.begin(TFMINI_BAUDRATE);    //Initialize the data rate for the SoftwareSerial port
  47.   tfmini.begin(&SerialTFMini);            //Initialize the TF Mini sensor
  48. }

  49. void loop()
  50. {
  51.   int distance = 0;
  52.   int strength = 0;

  53.   getTFminiData(&distance, &strength);
  54.   while (!distance)
  55.   {
  56.     getTFminiData(&distance, &strength);
  57.     if (distance)
  58.     {
  59.       Serial.print(distance);
  60.       Serial.print("cm\t");
  61.       Serial.print("strength: ");
  62.       Serial.println(strength);
  63.     }
  64.   }
  65.   delay(100);
  66. }
复制代码

串口监视器输出了与天花板的距离以及信号强度。我将手移近和远离传感器,观察距离的变化。盲区从30cm缩短到10cm。 因此它只会在这个距离之后检测到一些物体。

Result.jpg


with-Library.jpg


以上就是本文的全部内容,如果有任何疑问,请在本帖下面进行回复。

跳转到指定楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-21 18:55 , Processed in 0.043502 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表