使用 Arduino 从 LeddarVu8 激光雷达获取数据
Acquiring data from LeddarVu8 Lidar using Arduino
我正在做一个房间可视化项目,类似于此(摘自 this video):
我使用来自 leddartech 的 LeddarVu8(见下图),arduino uno(带 rs485shield):
我还使用了 leddartech 的 simple16channel (no lcd) 提供的代码:
#include "C:\Program Files (x86)\Arduino\libraries\Leddar.h"
/*
Simple Leddar(TM) Example - Without LCD
Language: Arduino
This program lists the detections read on the serial port of the Arduino.
Can be used with Arduino IDE's Serial Monitor.
Shields used:
* RS-485 Shield
Created 01 Jun. 2015
by Pier-Olivier Hamel
This example code is in the public domain.
*/
Leddar16 Leddar1(115200,1);
//Baudrate = 115200
//Modbus slave ID = 01
void setup()
{
//Initialize Leddar
Leddar1.init();
}
void loop()
{
char result = Leddar1.getDetections();
if (result >= 0)
{
for (int i = 0; i < Leddar1.NbDet; i++)
{
Serial.print("Segment: ");
Serial.print(Leddar1.Detections[i].Segment);
Serial.print(" Distance: ");
Serial.print(Leddar1.Detections[i].Distance);
Serial.print("\n");
}
}
else
{
Serial.print("Error: ");
Serial.print((int)result);
Serial.print("\n");
}
delay(50);
}
(来自 https://support.leddartech.com/downloads/files/89-leddarsdk3-2-0-pi2-tar-gz)
问题是arduino的串口监视器只输出一系列?????
。这是为什么?
The problem is that serial monitor of the arduino only outputs a series of ?????. Why is that?
因为您已经将激光雷达的TX连接到Arduino的TX。串行监视器 window "listens" 到 Arduino TX 引脚(通过 USB),因此串行监视器实际上正在监听激光雷达。 LIDAR 序列号 运行 为 115200,但您的串行监视器可能设置为 9600。当波特率不匹配时,您将得到乱码。
另请注意,您有两个串行 TX 引脚相互连接。如果 Arduino 和 LIDAR 同时尝试传输,这也会破坏字符。
您可以将 LIDAR RX 连接到 Arduino TX,将 LIDAR TX 连接到 Arduino RX。这将允许您在串行监视器 window 上查看 Leddar 库命令。它还会导致所有 Serial
打印到激光雷达(和 PC)。如果 Leddar 命令数据包具有特殊格式,这可能没问题。这将允许 Leddar 忽略您的调试打印,因为它们的格式不正确。
在该配置中,您必须断开 Arduino 引脚 0 才能通过 USB 上传新草图。有些人在那根电线上放了一个开关,以便于断开连接。
我正在做一个房间可视化项目,类似于此(摘自 this video):
我使用来自 leddartech 的 LeddarVu8(见下图),arduino uno(带 rs485shield):
我还使用了 leddartech 的 simple16channel (no lcd) 提供的代码:
#include "C:\Program Files (x86)\Arduino\libraries\Leddar.h"
/*
Simple Leddar(TM) Example - Without LCD
Language: Arduino
This program lists the detections read on the serial port of the Arduino.
Can be used with Arduino IDE's Serial Monitor.
Shields used:
* RS-485 Shield
Created 01 Jun. 2015
by Pier-Olivier Hamel
This example code is in the public domain.
*/
Leddar16 Leddar1(115200,1);
//Baudrate = 115200
//Modbus slave ID = 01
void setup()
{
//Initialize Leddar
Leddar1.init();
}
void loop()
{
char result = Leddar1.getDetections();
if (result >= 0)
{
for (int i = 0; i < Leddar1.NbDet; i++)
{
Serial.print("Segment: ");
Serial.print(Leddar1.Detections[i].Segment);
Serial.print(" Distance: ");
Serial.print(Leddar1.Detections[i].Distance);
Serial.print("\n");
}
}
else
{
Serial.print("Error: ");
Serial.print((int)result);
Serial.print("\n");
}
delay(50);
}
(来自 https://support.leddartech.com/downloads/files/89-leddarsdk3-2-0-pi2-tar-gz)
问题是arduino的串口监视器只输出一系列?????
。这是为什么?
The problem is that serial monitor of the arduino only outputs a series of ?????. Why is that?
因为您已经将激光雷达的TX连接到Arduino的TX。串行监视器 window "listens" 到 Arduino TX 引脚(通过 USB),因此串行监视器实际上正在监听激光雷达。 LIDAR 序列号 运行 为 115200,但您的串行监视器可能设置为 9600。当波特率不匹配时,您将得到乱码。
另请注意,您有两个串行 TX 引脚相互连接。如果 Arduino 和 LIDAR 同时尝试传输,这也会破坏字符。
您可以将 LIDAR RX 连接到 Arduino TX,将 LIDAR TX 连接到 Arduino RX。这将允许您在串行监视器 window 上查看 Leddar 库命令。它还会导致所有 Serial
打印到激光雷达(和 PC)。如果 Leddar 命令数据包具有特殊格式,这可能没问题。这将允许 Leddar 忽略您的调试打印,因为它们的格式不正确。
在该配置中,您必须断开 Arduino 引脚 0 才能通过 USB 上传新草图。有些人在那根电线上放了一个开关,以便于断开连接。