|
在本篇文章中,我们将主要介绍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使用脉冲激光来计算物体与地平面的距离。
它可用于绘制整个区域的结构图,包括植被高度、密度和其他特征。激光雷达直接测量地面植被的高度和密度,使其成为科学家研究大面积植被的理想工具。
激光雷达如何工作? 激光雷达遵循一个简单的原理——将激光投射到地平面的物体上,并计算返回激光雷达源所需的时间。考虑到光的传播速度(大约每秒 186,000 英里),通过LiDAR测量精确距离的过程非常快。但是,这是非常技术性的。计算物体精确距离的公式如下: 距离=(光速x飞行时间)/2
TFMini-S微型激光测距传感器 Benewake公司的TFMini-S微型距离传感器(TFMini-S Micro LiDAR Distance Sensor)带有非常漂亮的包装。北醒是一家国内的公司,是固态激光雷达传感器和解决方案的领先供应商。TFMini-S微型激光雷达传感器也称为微型单点测距模块。
TFMini-S是TFmini的升级版。 TFMini-S具有独特的光学、结构和电子设计。TFmini-S具有成本低、体积小、功耗低等优点。它还具有多个接口以满足不同的要求。该模块具有UART和I2C接口。同时该板有一个微控制器,类似STM32系列控制器。通过将传感器连接到任何外部微控制器,您可以检索LiDAR数据。它有4个引脚作为电源引脚和UART引脚。红色线是VCC,黑色线是接地线。白色线是RX,绿色线是TX。
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-S传感器的VCC和GND引脚连接到Arduino开发板的5V和GND。同样,将Tx和RX连接到Arduino开发板的D2和D3。您可以使用任意其他支持软件串口的Tx和Rx引脚。
代码/程序 Benewake TFMini传感器有一个专用库文件。可以查看Arduino TFMini库的Github存储库。
我最初使用了TFMini库中的示例代码并上传了代码。代码上传后,但由于传感器无法检查距离,我收到一条错误消息。
然后我修改了部分代码,这次传感器开始工作了。以下是修改后的代码。 - include <SoftwareSerial.h>
- #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);
- }
复制代码
串口监视器输出了与天花板的距离以及信号强度。我将手移近和远离传感器,观察距离的变化。盲区从30cm缩短到10cm。 因此它只会在这个距离之后检测到一些物体。
以上就是本文的全部内容,如果有任何疑问,请在本帖下面进行回复。 |