使用 Arduino Uno 和 TF-Luna 激光雷达进行无线距离监测
扫描二维码
随时随地手机看文章
该项目使用带有 TF-Luna 激光雷达传感器的 Arduino Uno 来实时测量距离。Arduino 通过 I2C 从 TF-Luna 读取距离数据并对其进行处理。测量得到的距离随后通过 XBee S2C 模块进行无线传输。
在接收端,另一个与系统(Arduino/PC)相连的 XBee 模块会接收传输的数据,并显示或记录距离信息。
该装置提供了一种简单的无线距离监测系统,无需在感应单元和接收单元之间进行物理连接。它可用于基本的远程监测、障碍物检测或监控应用。
项目概述
•内容类型:硬件/物联网
•平台:Arduino 单元(ATmega328P)
•IDE:Arduino IDE
•配置工具:迪吉·XCTU
•协议:I2C(TF-Luna 激光雷达)+ UART(Xbee)
设备与组件
•微控制器
•Arduino UNO(采用 ATmega328P 芯片,工作电压为 5 伏)
传感器
•Benewake TF-Luna 激光雷达——测量范围为 0.2 米至 8 米,支持 I2C 或 UART 接口
无线的
•Digi XBee S2C(ZigBee)
•适用于 3.3 伏逻辑电平转换的 XBee 探针板/护板(推荐使用)
被动元件及配件
•跳线(M-M 和 M-F)
•面包板
•USB转串口适配器(适用于连接至电脑的接收型 XBee 设备)
软件与工具
•Arduino IDE — 软件开发与串行监视器
•Digi·XCTU — 蓝牙模块固件更新及 AT 模式配置
•Wire.h — 内置的 Arduino I2C 库(无需单独安装)
•SoftwareSerial.h — 用于控制 XBee 的发送/接收功能
其工作原理:
该项目通过使用以 I2C 模式运行的 TF-Luna 激光雷达传感器(地址为 0x10)来持续测量距离实现。Arduino Uno 使用 Wire 库初始化 I2C 总线,并在循环内部发送一个命令(0x00)以向传感器请求测量数据。然后,它从 TF-Luna 请求 7 个字节的数据,并在读取这些字节到数组之前检查是否所有字节都已可用。通过使用位移运算将两个字节组合起来计算距离:(data[1] << 8) | data[0],同时也以类似的方式提取信号强度。测量到的距离会打印到串行监视器中以用于调试,然后使用 snprintf 将其转换为格式化字符串(例如,“ D 120\n”)。这个字符串通过 XBee 模块使用软件串口(在引脚 2(RX)和 3(TX)上)以 9600 波特速率无线传输。由于 XBee 正在以透明(AT)模式运行,它直接将接收到的串行数据无线传输。在接收端,另一个 XBee 模块将相同的数据输出到连接的系统中,从而实现实时无线距离监测。循环以 1 秒的延迟运行,定期发送更新的距离值。
布线与引脚连接
TF-Luna 与 Arduino Uno(I2C)之间的连接
•SDA → A4 : I2C 数据
•SCL → A5 : I2C 时钟
•GND → GND :公共接地点
•VCC(5V)→ 5V:电源供应器
Xbee S2C 与 Arduino Uno(软件串口)
•DOUT(TX)→ D2 :Xbee 发送 → Arduino 接收
•DIN(RX)→ D3:Arduino 发送 → XBee 接收
•GND → GND :公共接地点
•VCC(3.3V)→ 3.3V:电源(使用稳压后的 3.3V)
使用 XCTU 进行 XBee 配置
在使用之前,请先通过 XCTU 对 Xbee 进行配置。
代码概述
分步操作:
1. 图书馆与设置
2. 设置功能
3. 从 TF-Luna 获取数据
4. 从传感器读取数据
5. 提取距离与信号
6. 调试输出
7. 对 Xbee 数据进行格式化处理
8. 通过 XBee 发送
9. 延误
完整流程
TF-Luna(I2C)
↓
Arduino 读取 7 个字节
↓
提取距离
↓
转换为字符串
↓
通过软件串口发送(使用引脚 3)
↓
XBee 发射器 )) ) XBee 接收器
↓
接收器显示“D 120”
注释
注意事项:
- 仅使用 3.3 伏电源为 XBee 模块供电 - 确保线路连接正确并保持公共接地端连接良好
提示:
使用 Digi XCTU 配置 XBee 之前,请先进行设置 - 使用串行监视器进行调试 - 保持数据格式简单以便于解析
补充说明: - 若通信失败,请检查波特率和发送/接收连接 - 避免信号干扰以获得更好的无线性能 - 可通过添加多个传感器或节点来扩展系统
本文编译自hackster.io





