TFmini-Plus在Arduino上的开发例程
本例程以Arduino Uno 和 DUE板作为示例,主要帮助客户快速熟悉我公司雷达,减少产品的研发周期。
关于Arduino的详细介绍请参考以下网站:
英文官网:www.arduino.cc
北醒(北京)光子科技有限公司: http://www.benewake.com
步骤一:硬件连接
- TFmini-Plus与Uno板的接线图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190801174020928.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzc1NDAzNg==,size_16,color_FFFFFF,t_70)
- TFmini-Plus与DUE板的接线图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190801174139558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzc1NDAzNg==,size_16,color_FFFFFF,t_70)
步骤二:程序编写
该例程功能的实现至少需要Arduino的两个串口,一个接收雷达的数据,一个用于将数据输出到电脑端显示出来。可以复制以下代码粘贴到IDE程序编辑窗口。
/*
This program is the interpretation routine of standard output protocol of TFmini-Plus 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 port
SoftwareSerial 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板,打开串口监视器, 即可看到雷达实时探测的距离值和相应的信号强度,如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190801174259270.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzc1NDAzNg==,size_16,color_FFFFFF,t_70)
另外也可以在串口绘图器上查看数据曲线,但是要把上述有关串口打印的代码修改一下:
//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的三条曲线,如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190801174352241.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzc1NDAzNg==,size_16,color_FFFFFF,t_70)
图 雷达数据在串口绘图器上的图像
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)