arduino与激光雷达?

本文介绍了如何使用Arduino Mega 2560和RPLIDARA1激光雷达进行简单项目,将雷达信息显示在ST7789 IPS显示屏上。首先,详细说明了连接雷达和Arduino的硬件接线步骤,然后介绍了如何安装和使用RPLidar库。在编程部分,展示了如何获取雷达数据并在Adafruit GFX和Arduino_ST7789库的支持下在显示屏上绘制雷达扫描结果。最终实现了在显示屏上以图形方式展示雷达扫描的距离和角度信息。

先上图片:

在这里插入图片描述

一般来说,这样子的激光雷达都是与电脑或者树莓派等等配合使用的,但是暂时没有时间去捣鼓slam算法相关的东西,那有没有方法把它应用在其他简单的项目中呢?
。。。。我看到了角落的arduino。。。。
查了一下资料,确实可以。
于是完成了一个使用arduino获取激光雷达信息,并且在st7789 ips显示屏上绘制雷达信息的项目。

首先控制激光雷达:

硬件方面:

bom:Arduino Mega2560开发板、RPLIDAR A1激光雷达、连接线若干。
接线:
在这里插入图片描述在这里插入图片描述
这里我是重新做了一套连接线用于连接arduino:
AIM8接线

Arduino Mega 引脚 RPLidar A1 引脚
TX1 RX
5V VCC_5V
GND GND
GND GND_MOTO
Pin 3 CTRL_MOTO
5V 5V_MOTO

按照上面的表格连接完成就好啦
在官方给出的数据中,电机的供电电压可以上升至9V,也就是说如果对电机的供电不满意,觉得动力不足 的话,可以尝试给他提供稍微高一些的电压。

编程方面:

需要安装依赖库:RPLidar
RoboPeak开发的RPlidar的Arduino库,但是在Arduino IDE的库管理中没有,所以需要自己安装。
链接:
https://github.com/robopeak/rplidar_arduino
解压后,把「RPLidarDriver」文件夹,放在Arduino IDE 的安装目录下的「libraries」文件夹中,就可以使用RPLiadar库了。
至此,就可以试着控制雷达啦

// 加载RPLidar库
#include <RPLidar.h>

// 创建一个名为lidar的雷达驱动实例 
RPLidar lidar;

//定义控制电机的PWM引脚:
#define RPLIDAR_MOTOR 3 

//绑定指定串口:
lidar.begin(Serial1);

//设置控制电机的PWM引脚为输出模式
pinMode(RPLIDAR_MOTOR, OUTPUT);

//使用以下判断可以返回lidar是否正常工作的值
IS_OK(lidar.waitPoint()

//返回当前距离值,以毫米(mm)为单位
float distance = lidar.getCurrentPoint().distance;

//返回当前角度度数
float angle    = lidar.getCurrentPoint().angle;

//返回该点是否属于一个新的扫描点
bool  startBit = lidar.getCurrentPoint().startBit; 

//返回当前测量的质量
byte  quality  = lidar.getCurrentPoint().quality;

要完成第一张图片的效果,还需要连接显示屏(ips240*240 st7789)

显示屏的接线:
在这里插入图片描述

Arduino Mega 引脚 st7789 引脚
8 TFT_DC
9 TFT_RST
10 TFT_CS
20 TFT_MOSI
21 TFT_SCLK

显示屏方面,需要两个相关库:
Adafruit-GFX-Library
在Arduino "库管理器"中搜索“Adafruit GFX Library”,选择最新版本,点击 安装 进行安装。此库的GitHub地址为:https://github.com/adafruit/Adafruit-GFX-Library
Arduino-ST7789-Library
此库暂时无法通过库管理器安装,可以到GitHub下载包,放到Arduino的库文件目录,重新打开Arduino就会自动加载了。
此库的GitHub地址是:https://github.com/ananevilya/Arduino-ST7789-Library

最终的程序如下:

#include <RPL
### 如何在 Arduino 上使用和配置激光雷达 #### 了解Arduino激光雷达接口方式 为了使Arduino能够操作激光雷达,两者之间需建立有效的通信机制。通常情况下,小型激光雷达模块如YDLIDAR X4或RPLIDAR A1M8通过串口UART(通用异步收发传输器)Arduino相连[^1]。 #### 准备工作 确保拥有合适的硬件组件,包括但不限于Arduino板、选定型号的激光雷达以及必要的连接线缆。对于某些特定类型的激光雷达可能还需要额外的电源供应单元因为其功耗超出Arduino板所能提供的范围[^2]。 #### 连接设置 按照制造商提供的指导手册完成物理上的连线作业;一般而言,这涉及到将激光雷达的数据发送端(TX)接到Arduino接收端(RX),反之亦然,并确认GND接地良好接触以保障信号稳定传递[^3]。 #### 软件准备 安装适用于所选激光雷达设备的Arduino库文件至IDE环境中。例如针对YDLIDAR系列可访问官方GitHub仓库获取最新版本的支持库并依照说明文档导入项目中。 ```cpp #include <Servo.h> // 假设这里引入的是 YDLIDAR 的库, 实际应替换为具体使用的 Lidar 库名 #include "YDLidar.h" ``` #### 编写程序代码 依据个人需求设计具体的扫描逻辑,在此提供一段基础示例用于初始化Lidar对象实例化过程及开启连续测量模式下的数据采集循环: ```cpp void setup() { Serial.begin(115200); // 初始化 Lidar 对象 ydlidar.init(); } void loop() { if (ydlidar.isScanning()) { vector<LaserScan> scans; while(ydlidar.getScan(scans)) { for(auto& scan : scans){ float angle = scan.angle * RAD_TO_DEG; float distance = scan.distance / 1000.0f; Serial.print("Angle:"); Serial.print(angle); Serial.print(", Distance(m):"); Serial.println(distance); delay(1); // 防止过快打印造成缓冲区溢出 } } } else { Serial.println("Failed to start scanning."); } } ``` 上述代码片段展示了如何启动激光雷达进行角度距离信息收集并通过串行监视器输出结果。 #### 测试验证 上传编写的sketch到Arduino开发板之后打开Serial Monitor观察是否有预期中的测距数值被正常显示出来。如果有任何异常情况发生,则应该仔细检查电路连接状况或是重新审视编程语句是否存在错误之处。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值