先上图片:

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

首先控制激光雷达:

硬件方面:

bom:Arduino Mega2560开发板、RPLIDAR A1激光雷达、连接线若干。
接线:

这里我是重新做了一套连接线用于连接arduino:

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 <RPLidar.h>
#include <Adafruit_GFX.h>
#include <Arduino_ST7789.h>
#include <SPI.h>
#include <TFT_eSPI.h>
TFT_eSPI tft1 = TFT_eSPI();#define TFT_DC    8
#define TFT_RST   9
#define TFT_CS    10
#define TFT_MOSI  20
#define TFT_SCLK  21
#define RPLIDAR_MOTOR 3   RPLidar lidar;
Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_CS);
float pi = 3.1415926;
float data[360];void setup() {Serial.begin(115200);lidar.begin(Serial1);tft.init(240, 240);   pinMode(RPLIDAR_MOTOR, OUTPUT);Serial.println("Initialized");analogWrite(RPLIDAR_MOTOR, 255);lidar.startScan();
}void loop() {tft.fillScreen(BLACK);tft.setTextWrap(true);tft.setTextColor(BLUE);tft.setTextSize(2);tft.setCursor(20, 30);tft.print("by: Albert.H");tft.setTextSize(3);tft.setCursor(30, 60);tft.print("Scaning...");Serial.println("start scan");long int time_start = millis();int time_delay = 10000;while (millis() < time_start + time_delay) {Scan();}Serial.println("OK");//for (int i = 0; i < 360; i++) {//Serial.println(data[i]);//}ScreanShow();Serial.println("END");delay(1000000);
}void Scan() {if (IS_OK(lidar.waitPoint())) {float distance = lidar.getCurrentPoint().distance; //distance value in mm unitint angle = lidar.getCurrentPoint().angle;   //anglue value in degreeif (distance != 0.0) {data[angle] = distance;}}
}void ScreanShow() {tft.fillScreen(BLACK);for (int i = 0; i < 360; i++) {float angle = i;int x = (data[i] * cos(angle / 180.0 * pi)) / 100 + 120;int y = (data[i] * sin(angle / 180.0 * pi)) / 100 + 120;tft.drawLine(120, 120, x, y, RED);}tft.drawCircle(120, 120, 100, GREEN);tft.drawCircle(120, 120, 70, GREEN);tft.drawCircle(120, 120, 40, GREEN);tft.drawCircle(120, 120, 10, GREEN);tft.setTextSize(1);tft.setTextColor(GREEN);tft.setTextWrap(true);tft.setCursor(120, 120 + 100);tft.print("10m");tft.setCursor(120, 120 + 70);tft.print("7m");tft.setCursor(120, 120 + 40);tft.print("4m");tft.setCursor(120, 120 + 10);tft.print("1m");byte  quality  = lidar.getCurrentPoint().quality;tft.setTextWrap(true);tft.setTextColor(YELLOW);tft.setTextSize(3);tft.setCursor(10, 10);tft.print(quality);tft.setCursor(10, 10);tft.print(quality);
}

效果:

参考文章:
RPLIDAR的参考
IPS显示屏的参考

arduino与激光雷达?相关推荐

  1. AI人工智能的局限性--王垠

    人工智能的局限性 有人听说我想创业,给我提出了一些"忽悠"的办法.他们说,既然你是程序语言专家,而现在人工智能(AI)又非常热,那你其实可以搞一个"自动编程系统" ...

  2. 2022年 大学生工程训练比赛[物料搬运]

    本人和团结参加了2022年大学生工程训练(简称工训赛)校赛选拔,准备了几个月的时间和花费了较多的资金,由于疫情等多种情况,很遗憾未能参加湖南省省赛,过了这么久还是写个博客记录参赛准备和调试过程. 目录 ...

  3. ROS+Bebop2无人机+YOLO算法实现无人机视角的实时目标检测

    前言: 很久之前,用TK1玩过一段时间的ROS,再加上各种硬件(Arduino.激光雷达.编码电机等),模仿着做过Turtlebot小车,实现了部分Turtlebot部分的功能,最后因为雷达被我玩烧了 ...

  4. arduino控制小车转向_利用XECU和激光雷达快速搭建入门级的自动驾驶小车

    利用XECU和激光雷达快速搭建入门级的自动驾驶小车 1 简介 如果关注过我们之前的推文和视频演示,相信大家对我们的XECU应该已经很熟悉了.那么今天就向大家介绍一下,如何利用我们的XECU和激光雷达快 ...

  5. ROS移动机器人 Solidworks整个机器人设计文件(三维 激光雷达 arduino nvidia)(SLDPRT SLDASM)

    还是17年本科时制作的毕业设计,基于solidworks 2014所制作. 文件里包含了制作的整个移动机器人的SolidWorks原文件. 是设计完各个零件然后组合在一起的,所以适用性很强,可以根据你 ...

  6. 基于树莓派4b的ubuntu20.04mate配合思岚科技A1激光雷达读取数据,建图、保存和基于arduino的下位机控制

    首先确保你已经在树莓派或者自己的电脑上配置好ROS 安装准备 mkdir -p ~/turtlebot_ws/src cd ~/turtlebot_ws/src git clone https://g ...

  7. arduino 机器视觉编程_万物皆可仿真的MATLAB/Simulink神奇在哪?解析如何将其应用于一整套机器人设计开发流程...

    MATLAB/Simulink:万物皆可仿真 MATLAB是由美国MathWorks公司出品的一款商业数学软件.它是一个多功能的科学计算平台,将算法开发.数据分析.矩阵计算等诸多强大功能集成在一个易于 ...

  8. 「雕爷学编程」Arduino动手做(21)——激光开关模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  9. ZZ 自制低成本3D激光扫描测距仪(3D激光雷达),第二部分

    为什么80%的码农都做不了架构师?>>>    转自:http://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_2.html ...

最新文章

  1. 工业云计算在中国工业领域的发展与应用趋势
  2. 浅析如何才能提高网站的信息交互能力?
  3. js 字符串加减法_JavaScript (+) 加法运算符
  4. JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence
  5. 变废为宝:将旧电脑改造成强劲的防火墙和路由器(1)
  6. Java是先难后易吗_在解决问题的时候,是先难后易还是先易后难?
  7. bootstrap 模态框无法使用_模态窗 Modal Window - 产品中的??注意力设计
  8. 【TensorFlow】TensorFlow从浅入深系列之六 -- 教你深入理解经典损失函数(交叉熵、均方误差)
  9. 【海洋女神原创】关于installshield“完美卸载”的改进方法
  10. 不存在理想中的那种单元测试
  11. 最全中文停用词表(可直接复制)
  12. 迪士尼超级IP版图日趋完整
  13. Azure School女神相邀,把每分钟都过的更充实
  14. dtft变换的性质_DTFT及其性质
  15. html表头和左侧固定js,固定表头jquery datatable的使用与定制
  16. SSM Service ServiceImpl 优缺点
  17. 【字节跳动实习】后端日常实习的三次面试+hr面 面经
  18. Breast Cancer Wisconsin (Diagnostic) Data Set
  19. Python开发——函数【迭代器、生成器、三元表达式、列表解析】
  20. Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)

热门文章

  1. 几种常见的RC滤波器-RC低通滤波器
  2. 垃圾识别系统Python
  3. his java_中航JavaHis住院医生站操作手册
  4. makensis.exe编译nsi脚本的选项使用
  5. python实现对文本内容的修改_介绍python对文件操作实现全文或单行替换
  6. unity基础(1)
  7. 如何在win10系统上使用旧版本的IE浏览器
  8. 10.5k Star!可快速搭建私人网盘的开源项目
  9. 金属制品行业B2B交易管理系统:充分整合行业资源,助力企业开拓市场营销渠道
  10. VBA使用FileSystemObject将读取或写入文本文件