TFmini-Plus在Arduino上的开发例程

2023-05-16

TFmini-Plus在Arduino上的开发例程

本例程以Arduino Uno 和 DUE板作为示例,主要帮助客户快速熟悉我公司雷达,减少产品的研发周期。
关于Arduino的详细介绍请参考以下网站:
英文官网:www.arduino.cc

北醒(北京)光子科技有限公司: http://www.benewake.com

步骤一:硬件连接

  • TFmini-Plus与Uno板的接线图
    在这里插入图片描述
  • TFmini-Plus与DUE板的接线图

在这里插入图片描述

步骤二:程序编写

该例程功能的实现至少需要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板,打开串口监视器, 即可看到雷达实时探测的距离值和相应的信号强度,如图:
在这里插入图片描述
另外也可以在串口绘图器上查看数据曲线,但是要把上述有关串口打印的代码修改一下:

//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的三条曲线,如下图所示:
在这里插入图片描述
图 雷达数据在串口绘图器上的图像

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TFmini-Plus在Arduino上的开发例程 的相关文章

  • Fedora 中的 Arduino 上传错误“stk500_recv(): 程序员没有响应”

    我正在尝试上传库存Blink在 Fedora Core 15 Linux 中使用 Arduino IDE 绘制草图 我收到此错误 avrdude stk500 recv 程序员没有响应 要重现该问题 通过 USB 线插入 Arduino U
  • printf 的包装

    我在Arduino下编码 我想开发串行打印格式化功能 所以我尝试使用sprintf未知大小的缓冲区 基本上 我们可以避免谈论 Arduino 及其串行输出 并考虑将文本写入缓冲区 然后使用printf 我试过这个 include
  • Arduino I2S 正弦波

    我正在开发一个项目 我想通过组合不同的正弦波来生成 简单 声音 我使用的是 arduino mkrZero 因为它内置了 I2S 接口 并且似乎有足够的处理能力来满足我的需求 I have wired my system exactly l
  • 如何将值从 Arduino 发送到 Python,然后使用该值

    我正在构建一个使用 Python 进行远程控制的机器人 通过简单的 GUI 通过互联网发送控制消息 我的部分代码 GUI 和控制系统 运行得很好 但我陷入了困境 我正在尝试使用视差平传感器来获取与物体的距离信息Arduino Mega ht
  • DCF77 解码器与噪声信号

    我几乎完成了我的开源 DCF77 解码器项目 当我注意到标准 Arduino DCF77 库在噪声信号上表现非常差时 这一切就开始了 特别是当天线靠近计算机或洗衣机正在运行时 我永远无法从解码器中获取时间 我的第一个方法是向输入信号添加 数
  • 如何通过蓝牙在Raspberry Pi 4和Arduino Nano BLE之间进行读写?

    我能够通过 Rpi4 的 bluepy 和 Arduino Nano BLE 的 ArduinoBLE h 连接 Raspberry Pi 4 和 Arduino Nano BLE 不幸的是 当我尝试从 Rpi4 写入 Arduino Na
  • Python自动选择串口(适用于Arduino)

    目前 Python 程序必须知道设备 Arduino 位于哪个端口 然后 Python 才能与设备进行通信 Problem 每当设备拔出并重新插入时 其 COM 端口都会发生变化 因此必须再次向 Python 提供正确的串行端口 以便它找到
  • ESP32 Arduino-ide如何获取唯一id

    我试图自动为每个 esp32 设置一个唯一的 id 在我使用提供该方法的 ESP IDF 框架对设备进行编程之前esp efuse mac get default 这将返回一个 8 字节值 该值在我手上的所有设备上都是唯一的 在arduin
  • 在Python中快速绘制数据

    我正在尝试使用 arduino 绘制来自 mpu6050 imu 的数据 MPU6050 发送数据的速度比绘图快 Arduino 代码从串口提供 6 个数据 即偏航 俯仰 滚动 轴 ay 和 az 我需要快速情节的建议 Python代码 i
  • 如何实现Android Open Accessory模式即服务?

    我一直在研究 Android 开放配件开发套件 依照指示Google 提供的 DemoKit 示例 http developer android com guide topics usb accessory html 我在使解决方案适应我的
  • 带/不带类的回调函数指针 C++

    我被困 我正在尝试形成一个函数 它将吃掉无类函数指针和对象中的函数指针 这是我当前的代码 希望能解释更多 它应该在 Arduino 上运行 所以我不能使用大型库 首先 我在 Arduino 上使用这个库 SimpleTimer A time
  • 为什么使用 libnfc 和 PN532 SHIELD 时“找不到 NFC 设备”

    我在 ArchLinux 上安装了 libnfc 并通过我的 Adafruit PN532 arduino SHIELD 使用它 nfc list返回消息 未找到 NFC 设备 我在 etc nfc devices d pn532 conf
  • ESP8266 I2C从机不确认数据

    我有一个 TM4C123 处理器作为 I2C 主处理器 一个 ESP8266 作为从处理器 对于 ESP 我使用的是 Arduino IDE 并在 2 5 2 版安装了 ESP8266 支持 它应该支持 I2C 从模式 但是 我无法让它工作
  • 当我启动程序时,Arduino IDE (Win10) 崩溃

    我的 Arduino IDE Win10 上的版本为 1 8 12 在启动时崩溃 运行arduino debug exe我收到此错误消息 C Program Files x86 Arduino gt arduino debug exe Se
  • 无法将 minicom 的输出保存到文件中

    当我使用Minicom从串口捕获数据时 我需要将大数据保存到一个文件中 名为minicom cap 但是 如果我按 Ctrl A 和 L 来捕获文件 则失败 没有创建文件 minicom cap之前并不存在 我的下载目录已正确创建 我的操作
  • ESP32:dsb1820 温度传感器给出恒定的负 127 读数

    我正在尝试使用连接到 esp32 微控制器的单个 dsb1820 温度传感器来获取温度读数 传感器连接到 esp32 的 GPIO 4 我打算将温度读数发送到云端 我面临的问题是温度读数总是给出值 127 我在网上某处读到 当 dsb182
  • Arduino CLI 编译器“ino”和一些基本草图导致编译错误

    我正在尝试使用 cli 编译器 ino 编译基本的以太网 UDP Sketch 我从他们的 github 存储库下载了最新版本 ino init然后是 src sketch ino 的内容 include
  • 如何将 Android 应用程序正确连接到支持蓝牙的 Arduino 微控制器上的 RFCOMM 套接字?

    我正在与我大学的一些学生合作开发一个简单的蓝牙 Android 应用程序 该应用程序将用于与连接有蓝牙模块的 Arduino 微控制器进行串行通信 RFCOMM 据我所知 我正在使用正确的蓝牙地址和 UUIDRFCOMM SPP 00001
  • PHP 通过 TCP/IP 发送消息

    我尝试通过 TCP IP 从 PHP 网站向 Arduino 发送消息 使用以下代码我可以从 php 网站发送消息 问题是 当第一次调用该网站时 消息不会立即发送 网站刷新几次后 消息就会到达 但逻辑上很多次 就像网站刷新量一样 已经尝试将
  • 多次客户端打印后,Arduino (Uno) 以太网客户端连接失败

    我正在使用带有以太网扩展板的 Arduino Uno 发送多次 HTTP 请求后 客户端 println 客户端连接时开始失败 故障时间似乎是随机的 并且循环中的序列读数可能在 1000 和 7000 之间变化 该错误与以太网发送缓冲区溢出

随机推荐

  • QNAP威联通配置docker下的mysql外部网络访问问题

    QNAP的ContainerStation的mysql 容器默认配置是NAT网络是不行的 直接把mysql容器的网络设置改成host并重启 xff0c 就可以在外部连入了 注意需要设置容器的环境变量来配置root密码 需要配置下 MYSQL
  • Python数据可视化教程之基础篇

    点击上方 AI遇见机器学习 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 开运张 作者 知乎专栏 来源 https zhuanlan zhihu com p 55642042 经过学习之后 xff0c 我总结了利用py
  • 终身学习楷模!吴恩达74岁父亲8年完成146门课

    点击上方 AI遇见机器学习 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 学习真谛和乐趣在于保持敏锐的头脑 xff0c 以及发现美的能力 作者 贝爽 我们需要保持精神年轻 xff0c 保持好奇心 这是一位74岁老先生的
  • 通过CMakeLists.txt和shell脚本实现自动化编译

    这是项目的整个目录结构 span class hljs comment 此种方式配置犹如Vs中的配置一样 span span class hljs comment CMakeLists file span span class hljs k
  • MAC 安装JD-GUI

    今天升级MAC系统到最新版本 12 0 1 xff0c 然后突然发现JD GUI xff08 v 1 6 xff09 运行不了了 然后就删除重新下载新的 xff0c 发现还是不行 xff0c 在网上搜资料 xff0c 都说需要修改运行文件
  • mysql使用笔记

    创建数据库 create database database name 删除数据库 drop database database name 创建表 span class token comment 最简单的语法 span span clas
  • 华为携手去哪儿、九牧等企业,共论鸿蒙生态发展蓝图

    11月5日 xff0c 在华为开发者大会2022 xff08 Together xff09 上 xff0c 华为携手中软国际 九牧集团 深开鸿 开鸿智谷 去哪儿 鸿湖万联6家鸿蒙合作伙伴代表 xff0c 分享了基于OpenHarmony技术
  • 桌面客户端框架技术选型

    摘自 技术怪咖 欧阳森林 作为客户端的架构选型主要面临以下几个方面的需求 xff1a 1 开发速度快 xff0c 能够快速迭代 xff0c 快速试错 2 客户端能够跨平台 xff0c 同时适应Windows和Mac平台 3 用户界面友好 x
  • python金融数据爬虫与数据分析学习(一)

    本文针对以下链接进行学习 链接 爬取东方财富网上的股票信息 由于后来发现爬的都是指数基金的股票 xff0c 便转向观看其它文章 目前发现一个比较好的python开源的财经数据包接口 xff0c Tushare Tushare简介 Tusha
  • 股票基础知识

    股票基础知识 定义沪股通 深股通 港股通动态市盈率 静态市盈率 TTM市盈率量比股息率前十大股东与前十大流动股东区别 tushare可以获取的信息日线行情每日指标个股资金流向沪深港股通持股明细沪深港通每日整体资金流向每日涨跌停统计港股通十大
  • kubernetes安装部署

    k8s是一款辅助管理容器的平台 负责容器的部署 xff0c 扩缩容和负载均衡 k8s集群是有master节点和work节点组成 xff0c master 一个 是主节点 xff0c 负责管理和控制 work是工作节点 xff08 很多 xf
  • js 中set去重并转为数组

    const items 61 new Set 1 2 3 4 5 5 去重 const array1 61 items 2 转成数组
  • fast lio测试

    fast lio2代码编译及运行 编译 fast lio2仓库地址 一 安装依赖 ubuntu18 43 ros环境下 xff0c pcl和eigen可默认使用ros自带版本 xff0c 所以只需安装 livox驱动包 livox ros
  • 机器人开发常见第三方库、软件安装和使用

    写在前面 大多数情况下 xff0c 没有人比官方更懂官方 xff0c 所以编译安装 库配置及简单使用优先看官方github仓库README或者官网 xff0c 当然不排除有些博文或者教程有更好的表达方式更详细的说明cmake 编译三件套 通
  • Android UDP 通信总结 (终于从坑中爬起来了)

    2018 08 02 最近做的项目要求为 xff1a 一端为电视端 xff0c 一端为手机端 xff0c 实现电视端与手机端通过UDP进行通信 解释 xff1a 就是两个机器在同一个局域网内 xff08 即两端连接的同一个WiFi xff0
  • ES6之Promise常见面试题

    ES6 谈一谈 promise 所有的 ES6 特性你都知道吗 xff1f 如果遇到一个东西不知道是 ES6 还是 ES5 你该怎么区分它 es6的继承和es5的继承有什么区别 promise封装ajax let const的优点 es6
  • docker容器内关于pip的trick

    在运行某个文本检测算法的时候 xff0c 运行setup py脚本 xff0c 生成了dist目录 xff0c 且在此目录下生成了 dlocr 0 1 SNAPSHOT tar gz文件夹 下一步需要pip install dlocr 0
  • 用两台TFmini Plus实现PPT切换

    1 PPT自动切换模块简介 本模块利用北醒公司两台TFmini Plus Arduino DUE板 一个低功率红外激光指向灯 两个LED指示灯 一个单向开关 一个双向开关和连接线结合设计 系统作用 xff1a 通过检测人的手势 xff0c
  • 用两台TFmini Plus实现 PPT切换

    1 PPT自动切换模块简介 本模块利用北醒公司两台TFmini Plus Arduino DUE板 一个低功率红外激光指向灯 两个LED指示灯 一个单向开关 一个双向开关和连接线结合设计 系统作用 xff1a 通过检测人的手势 xff0c
  • TFmini-Plus在Arduino上的开发例程

    TFmini Plus在Arduino上的开发例程 本例程以Arduino Uno 和 DUE板作为示例 xff0c 主要帮助客户快速熟悉我公司雷达 xff0c 减少产品的研发周期 关于Arduino的详细介绍请参考以下网站 xff1a 英