Arduino · guide
TF-Luna 接入 Arduino CAN / UART:接入与配置指南
TF-Luna 接入 Arduino 的准备、连接、配置与代码要点。原始文件可在资料下载区获取。涉及接口:CAN、UART。
适用范围
TF-Luna · Arduino · CAN、UART
技术说明与操作步骤
TF-Luna 在 Arduino 上的开发例程本例程以 Arduino Uno 和 DUE 板作为示例,主要帮助客户快速熟悉我公司雷达,减少产品的研发周期。
关于 Arduino 的详细介绍请参考以下网站:
英文官网:www.arduino.cc
步骤一:硬件连接
图 1 TF-Luna 与 Uno 板的接线图
图 2 TF-Luna 与 DUE 板的接线图
步骤二:程序编写
该例程功能的实现至少需要 Arduino 的两个串口,一个接收雷达的数据,一个用于将数据输出到电脑端显 示出来。可以复制以下代码粘贴到 IDE 程序编辑窗口,也可直接打开相应附件文件。
/*This program is the interpretation routine of standard output protocol of TF-Luna product on Arduino.
For details, refer to Product Specifications.
For Arduino boards with only one serial port like UNO board, the function of software visual serial port is to be used.
*/
#include <SoftwareSerial.h> //header file of software serial portSoftwareSerial Serial1(2,3); //define software serial port name as Serial1 and define pin2 as RX and pin3 as TX
/* For Arduinoboards with multiple serial ports like DUEboard, interpret above two pieces of code
and directly use Serial1 serial port*/
int dist; //actual distance measurements of LiDAR
int strength; //signal strength of LiDAR
float temprature;
int check; //save check value
int i;
int uart[9]; //save data measured by LiDAR
const int HEADER=0x59; //frame header of data package
void setup() {
Serial.begin(9600); //set bit rate of serial port connecting Arduino with computer
Serial1.begin(115200); //set bit rate of serial port connecting LiDAR with Arduino
}
void loop() {
if (Serial1.available()) { //check if serial port has data input
if(Serial1.read() == HEADER) { //assess data package frame header 0x59
uart[0]=HEADER;
if (Serial1.read() == HEADER) { //assess data package frame header 0x59
uart[1] = HEADER;
for (i = 2; i < 9; i++) { //save data in array
uart[i] = Serial1.read();
}
check = uart[0] + uart[1] + uart[2] + uart[3] + uart[4] + uart[5] + uart[6] + uart[7];
if (uart[8] == (check & 0xff)){ //verify the received data as per protocol
dist = uart[2] + uart[3] * 256; //calculate distance value
strength = uart[4] + uart[5] * 256; //calculate signal strength value
temprature = uart[6] + uart[7] *256;//calculate chip temprature
temprature = temprature/8 - 256;
Serial.print("dist = ");
Serial.print(dist); //output measure distance value of LiDAR
Serial.print('\t');
Serial.print("strength = ");
Serial.print(strength); //output signal strength value
Serial.print("\t Chip Temprature = ");
Serial.print(temprature);
Serial.println(" celcius degree"); //output chip temperature of Lidar
}
}
}
}
}步骤 3:数据查看
将程序下载到 Arduino 板,打开串口监视器, 即可看到雷达实时探测的距离值和相应的信号强度,如图 3:
图 3 雷达数据在串口监视器上的显示
另外也可以在串口绘图器上查看数据曲线,但是要把上述有关串口打印的代码修改一下:
//Serial.print("dist = ");
Serial.print(dist); //output measure distance value of LiDAR
Serial.print(" ");
//Serial.print("strength = ");
Serial.print(strength); //output signal strength value
//Serial.print("\t Chip Temprature = ");
Serial.print(" ");
Serial.print(temprature);
Serial.println();
//Serial.println(" celcius degree");重新编译下载到 Arduino 板,打开串口绘图器即可看到代表 distance,strength 和 temperature 的三条曲线, 如图 4 所示:
图 4 雷达数据在串口绘图器上的图像
使用说明
按原始资料可读取的技术内容编排;具体的产品硬件版本、飞控/软件版本和现场安全边界仍应以原始资料及目标平台当前文档为准。
