简介
TFmini-i LiDAR 是一款工业级中距离测距传感器,最大测量距离可达12m,帧率1-1000Hz可调。它有一个 PC/ABS/PMMA 外壳,具有 IP65 防水和防尘性能。它支持宽范围的输入电压(7-30V),具有反向保护用来保护内部电路,采用RS485通讯接口,标准Modbus 协议,内置多种操作模式,供用户更改参数和配置以满足不同的应用。TFmini-i雷达可以通过TTL转485扩展板在Arduino UNO R3上使用,也可通过usb转485模块在树莓派上使用,DF会提供这两个方式的使用方法,让TFmini-i激光雷达使用起来更加简单。
TFmini-i雷达如何工作?
TFmini-i是基于脉冲飞行时间(PTOF)的单点LiDAR,它采用非相干能量接收方式,主要是基于脉冲计数的检测。TFmini-i发射窄脉冲激光,经透射透镜准直形成准直光,被被测目标反射后进入接收系统,通过接收透镜聚焦于APD探测器。通过电路放大和滤波计算发射信号和接收信号之间的时间,并通过光速计算TFmini-i与被测目标之间的距离。
特点
- 7-30V宽电压供电
- 支持输入电压反接保护
- RS485接口通讯
- 1-1000Hz帧率可调
- 检测范围0.1-12m
- 防护等级IP65,更适合工业场景
- 兼容Arduino UNO R3与树莓派
应用场景
- 车辆、行人检测
- 车辆防撞和安全警告系统
- 无人机辅助起飞和降落
- 高度计
技术规格
尺寸图
引脚示意图
标号 | 名称 | 功能描述 |
---|---|---|
红色 | VCC | 7-30V电源供电 |
白色 | RS485-B | RS485-B线 |
绿色 | RS485-A | RS485-A线 |
N/A | / | / |
蓝色 | UART_RXD | 串口接收(调试) |
棕色 | UART_TXD | 串口发送(调试) |
黑色 | GND | 地线 |
请勿将串口调试线与RS485线混接,否则会导致雷达MCU损坏。
使用教程
准备
- 硬件
TFmini-i激光雷达 x1
Arduino UNO R3 x1
树莓派 x1
- 软件
Arduino IDE,点击下载 Arduino IDE
在Arduino上使用方法
烧录代码前,先将扩展板的开关拨到OFF端,代码烧录完成后,开关拨到ON端,串口波特率选择115200.
请勿将串口调试线与RS485线混接,否则会导致雷达MCU损坏。
连接图
示例代码
uint8_t Com[8] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x84, 0x0a};
void setup()
{
Serial.begin(115200); //初始化串口
}
void loop()
{
int Distance =readDistance();
Serial.print("Distance = ");
Serial.print(Distance);
Serial.println(" CM");
delay(500);
}
int readDistance(void)
{
uint8_t Data[10] = {0};
uint8_t ch = 0;
bool flag = 1;
int Distance = 0;
while (flag) {
delay(100);
Serial.write(Com, 8);
delay(10);
if (readN(&ch, 1) == 1) {
if (ch == 0x01) {
Data[0] = ch;
if (readN(&ch, 1) == 1) {
if (ch == 0x03) {
Data[1] = ch;
if (readN(&ch, 1) == 1) {
if (ch == 0x02) {
Data[2] = ch;
if (readN(&Data[3], 4) == 4) {
if (CRC16_2(Data, 5) == (Data[5] * 256 + Data[6])) {
Distance = Data[3] * 256 + Data[4];
//Serial.println(Distance);
flag = 0;
}
}
}
}
}
}
}
}
Serial.flush();
}
return Distance;
}
uint8_t readN(uint8_t *buf, size_t len)
{
size_t offset = 0, left = len;
int16_t Tineout = 500;
uint8_t *buffer = buf;
long curr = millis();
while (left) {
if (Serial.available()) {
buffer[offset] = Serial.read();
offset++;
left--;
}
if (millis() - curr > Tineout) {
break;
}
}
return offset;
}
unsigned int CRC16_2(unsigned char *buf, int len)
{
unsigned int crc = 0xFFFF;
for (int pos = 0; pos < len; pos++)
{
crc ^= (unsigned int)buf[pos];
for (int i = 8; i != 0; i--)
{
if ((crc & 0x0001) != 0)
{
crc >>= 1;
crc ^= 0xA001;
}
else
{
crc >>= 1;
}
}
}
crc = ((crc & 0x00ff) << 8) | ((crc & 0xff00) >> 8);
return crc;
}
在树莓派上使用教程
1、接线图
2、安装wiringpi库
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb //下载wiringpi库
sudo dpkg -i wiringpi-latest.deb //安装wiringpi库
cd Desktop/ //进入桌面目录
git clone https://github.com/DFRobotdl/TF02-i.git //下载示例代码并保存在桌面
cd TF02-i/
3、查看usb设备
在终端输入
sudo ls -l /dev
找到刚刚接入树莓派的usb设备(每次usb设备接入树莓派,设备端口都会变化,所以每次接入树莓派都需要查看实际的端口)
4、编译并运行示例代码
使用终端打开程序所在的文件夹,编译并运行
gcc -Wall -lwiringPi -o TF02 TF02.c
sudo ./TF02
最后就能看到准确的测量距离值了
常见问题
还没有客户对此产品有任何问题,欢迎通过 qq 或者论坛联系我们!
更多问题及有趣的应用,可以访问论坛进行查阅或发帖