Benewake(北醒) TF-Luna (TTL) 雷达在WiFi LoRa 32 (V2)基于Arduino IDE上的运用

2023-11-20 12:30

本文主要是介绍Benewake(北醒) TF-Luna (TTL) 雷达在WiFi LoRa 32 (V2)基于Arduino IDE上的运用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 前言
  • 硬件介绍
    • TF-Luna 简要说明
    • 【WiFi LoRa 32 (V2)】硬件介绍
      • 产品图片
      • 技术参数介绍
      • 电气参数介绍
      • 引脚定义介绍
    • 【WiFi LoRa 32 (V2)】基于Arduino IDE编译环境搭建
      • 前置说明
    • 通过Arduino IDE进行环境搭建
      • 下载Arduino-ESP32开发环境支持
      • 下载Heltec ESP32库
    • 【WiFi LoRa 32 (V2)】测试
  • 北醒TF-luna(TTL)协议说明
    • 串口通讯协议说明
    • 接口定义说明
  • 接线图
  • 例程

前言

此次仅在Windows 10上进行测试,理论上其它版本Win系统以及Mac、Linux系统经可使用,本例程仅供参考。

硬件介绍

TF-Luna 简要说明

在这里插入图片描述
链接:https://blog.csdn.net/zoran_wu/article/details/121850480

【WiFi LoRa 32 (V2)】硬件介绍

WiFi LoRa 32 是 Heltec Automation™ 设计和生产的经典物联网开发板,它是基于 ESP32 + SX127x 的高度集成产品,具有 Wi-Fi、BLE、LoRa 功能,以及锂电池管理系统, 0.96 英寸 OLED 也包括在内。
官方资料请参考:https://heltec.org/project/wifi-lora-32/

产品图片

在这里插入图片描述

技术参数介绍

在这里插入图片描述

电气参数介绍

在这里插入图片描述

引脚定义介绍

在这里插入图片描述

【WiFi LoRa 32 (V2)】基于Arduino IDE编译环境搭建

环境编译环境可以参考官网:https://heltec-automation.readthedocs.io/zh_CN/latest/esp32/quick_start.html
实际有两种方式,官网都有比较详细的教程(推荐直接Arduino IDE安装)

  • 通过Arduino IDE(推荐)
  • 通过Git

前置说明

  • 已经安装Arduino IDE,此部分可以参考Arduino官网说明。
    链接:https://www.arduino.cc/en/software

  • 确定WiFi LoRa 32 (V2)与电脑已经建立串行连接(开发板已经接到电脑USB口),如下图,串行芯片使用的是CP210X,如果还未正常安装,请参考Heltec教程说明:
    链接:https://heltec-automation.readthedocs.io/zh_CN/latest/general/establish_serial_connection.html#for-windows
    在这里插入图片描述

通过Arduino IDE进行环境搭建

下载Arduino-ESP32开发环境支持

  • 打开”Arduino IDE”, 依次点击File->Peferences ,在settings中修改”Board Manager URLs”。
  • 输入最新的ESP32 package URL:
    https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series/releases/download/0.0.5/package_heltec_esp32_index.json
  • 依次点击Tools --> Board --> Boards Manager…,在新弹出的对话框中搜索“Heltec
    ESP32”,然后选择最新版本下载。
  • Heltec
    ESP系列(ESP32和ESP8266)框架的源代码:https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series

操作流程
请添加图片描述

下载Heltec ESP32库

  • 打开”Arduino IDE”,依次点击 Sketch->Include Library->Manage
    Libraries…,在新弹出的对话框中搜索“Heltec ESP32”,选择最新版本下载。
  • Heltec ESP32库的源代码:https://github.com/HelTecAutomation/Heltec_ESP32

操作流程
请添加图片描述

【WiFi LoRa 32 (V2)】测试

此部分用于验证是否可以使用Arduino编程。现在,用Micro-USB数据线将Heltec ESP32开发板连接到电脑,然后选择连接到Heltec ESP32开发板的串行端口。

  • 在“工具”菜单中正确选择开发板和相关选项:
  • 然后选择一个例程,例如XXXXXX_FactoryTest.ino
  • 编译并上传
    操作流程
    请添加图片描述
    测试图
    请添加图片描述

北醒TF-luna(TTL)协议说明

详细可参考北醒官网最新使用说明书:
http://www.benewake.com/

串口通讯协议说明

串口数据通讯协议
在这里插入图片描述
数据格式及编码解释
在这里插入图片描述

输出数据说明

  • Dist(Distance):代表测量输出的距离值,默认单位为 cm
  • Strength:指信号强度,默认输出值会在 0-65535 之间。当测距档位一定时,测距越远,信号强度越低;目标物反射率越低,信号强度越低。
  • Temp(Temperature):表征芯片内部温度值。摄氏度 = Temp / 8 - 256

接口定义说明

在这里插入图片描述
:详细请参考官方使用说明书

接线图

从机接线
在这里插入图片描述
:主机直接接电脑即可

例程

从机雷达数据采集及接收例程

/******************************************************************************@file    main.c@author  zoran.wu@version V1.0.0@date    2021-02-19@brief   此文件包含关于ESP32从机设定和北醒TF系列雷达数据读取
******************************************************************************@attention
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "heltec.h"           //ESP32 LORA(V2)库文件
#define BAND    433E6         //设定无线频率 you can set band here directly,e.g. 868E6,915E6byte localAddress = 0xFD;     //设定本机地址 address of this device
byte destination = 0xBB;      //设定主机地址 destination to send to
byte msgCount = 0;            // count of outgoing messages/*设定雷达数据存放的结构*/
typedef struct {int distance;        //雷达距离值int strength;        //雷达的信号强度值int temp;            //雷达的芯片温度boolean receiveComplete;
} TF;int count = 0;TF Lidar1 = {0, 0, 0, false};void setup() {/*库文件里面包含设定串口的配置,默认波特率115200,8N1数据格式*/Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.LoRa Enable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);/*Serial1.begin(unsigned long baud, uint32_t config, int8_t rxPin, int8_t txPin, bool invert)The txPin & rxPin can set to any output pin */Serial1.begin(115200, SERIAL_8N1, 22, 23);
}void loop() {while (!Lidar1.receiveComplete) {getLidarData(&Lidar1);/*经过测试,速度太快主机接收异常,异常原因为发送库程序时间太长,此部分加一个获取多次数据后发一次*/if (Lidar1.receiveComplete) {count++;if (count > 50) {count = 0;sendMessage();}Lidar1.receiveComplete = false;Serial.print("Distance: ");Serial.println(String(Lidar1.distance, DEC) + "cm ");}}
}void getLidarData(TF* Lidar) {static char i = 0;char j = 0;int checksum = 0;static int rx[9];if (Serial1.available()) {rx[i] = Serial1.read();if (rx[0] != 0x59) {i = 0;} else if (i == 1 && rx[1] != 0x59) {i = 0;} else if (i == 8) {for (j = 0; j < 8; j++) {checksum += rx[j];}if (rx[8] == (checksum % 256)) {Lidar->distance = rx[2] + rx[3] * 256;Lidar->strength = rx[4] + rx[5] * 256;Lidar->temp = (rx[6] + rx[7] * 256) / 8 - 256;Lidar->receiveComplete = true;}i = 0;} else {i++;}}
}
void sendMessage() {String SendMessage1 = "";LoRa.beginPacket();                   // start packetLoRa.write(destination);              // add destination addressLoRa.write(localAddress);             // add sender addressSendMessage1 = "Distance: " + String(Lidar1.distance);LoRa.write(SendMessage1.length());        // add payload lengthLoRa.print(SendMessage1);                 // add payloadLoRa.endPacket();                     // finish packet and send it
}

从机串口打印雷达数据
在这里插入图片描述

主机接收例程

/******************************************************************************@file    main.c@author  zoran.wu@version V1.0.0@date    2021-02-19@brief   此文件包含关于ESP32主机接收部分
******************************************************************************@attention
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "heltec.h"#define BAND    433E6  //you can set band here directly,e.g. 868E6,915E6String outgoing;              // outgoing messagebyte localAddress = 0xBB;     // address of this device
byte destination = 0xFD;      // destination to send tobyte msgCount = 0;            // count of outgoing messages
long lastSendTime = 0;        // last send time
int interval = 2000;          // interval between sendsvoid setup()
{//WIFI Kit series V1 not support Vext controlHeltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.LoRa Enable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);Serial.println("Heltec.LoRa Duplex");
}void loop()
{// parse for a packet, and call onReceive with the result:onReceive(LoRa.parsePacket());
}void onReceive(int packetSize)
{if (packetSize == 0) return;          // if there's no packet, return// read packet header bytes:int recipient = LoRa.read();          // recipient addressbyte sender = LoRa.read();            // sender addressbyte incomingLength = LoRa.read();    // incoming msg lengthString incoming = "";while (LoRa.available()){incoming += (char)LoRa.read();}if (incomingLength != incoming.length()){   // check length for errorSerial.println("error: message length does not match length");return;                             // skip rest of function}// if the recipient isn't this device or broadcast,if (recipient != localAddress && recipient != 0xFF) {Serial.println("This message is not for me.");return;                             // skip rest of function}// if message is for this device, or broadcast, print details:Serial.println("Received from: 0x" + String(sender, HEX));Serial.println("Sent to: 0x" + String(recipient, HEX));Serial.println("Message length: " + String(incomingLength));Serial.println("Message: " + incoming);Serial.println();
}

主机接收到从机数据后打印
在这里插入图片描述

这篇关于Benewake(北醒) TF-Luna (TTL) 雷达在WiFi LoRa 32 (V2)基于Arduino IDE上的运用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/394611

相关文章

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

poj 2431 poj 3253 优先队列的运用

poj 2431: 题意: 一条路起点为0, 终点为l。 卡车初始时在0点,并且有p升油,假设油箱无限大。 给n个加油站,每个加油站距离终点 l 距离为 x[i],可以加的油量为fuel[i]。 问最少加几次油可以到达终点,若不能到达,输出-1。 解析: 《挑战程序设计竞赛》: “在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“在到达加油站i时,就获得了一

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网

企业安全之WiFi篇

很多的公司都没有安全团队,只有运维来负责整个公司的安全,从而安全问题也大打折扣。我最近一直在给各个公司做安全检测,就把自己的心得写下来,有什么不足之处还望补充。 0×01  无线安全 很多的公司都有不怎么注重公司的无线电安全,有钱的公司买设备,没钱的公司搞人力。但是人的技术在好,没有设备的辅助,人力在牛逼也没有个卵用。一个好的路由器、交换机、IDS就像你装备了 无尽、狂徒、杀人书一

[环境配置]ubuntu20.04安装后wifi有图标但是搜不到热点解决方法

最近刚入手一台主机,暗影精灵8plus电竞主机,安装ubuntu后wifi怎么都搜不到热点,前后重装系统6次才算解决问题。这个心酸历程只有搞技术人才明白。下面介绍我解决过程。 首先主机到手后是个windows10系统,我用无线网连接了一下,可以正常上网,说明主机有无限网卡且正常。然后我就直接开始安装Ubuntu20.04了,安装成功后发现wifi有图标但是搜不到热点,我想是不是无线网卡驱动有没有

SOMEIP_ETS_095: SD_Check_subscribe_eventgroup_ttl_expired

测试目的: 验证DUT(Device Under Test)能够检测到测试器(Tester)的订阅已过期(ttl = 3秒),并且在TTL过期后不响应测试器触发的事件。 描述 本测试用例旨在确保DUT能够识别测试器的订阅已过期,并在订阅过期后不响应测试器通过TriggerEventUint8方法触发的事件。 测试拓扑: 具体步骤: TESTER:发送订阅事件组消息,用于事件组0x0

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消

野火霸天虎V2学习记录

文章目录 嵌入式开发常识汇总1、嵌入式Linux和stm32之间的区别和联系2、stm32程序下载方式3、Keil5安装芯片包4、芯片封装种类5、STM32命名6、数据手册和参考手册7、什么是寄存器、寄存器映射和内存映射8、芯片引脚顺序9、stm32芯片里有什么10、存储器空间的划分11、如何理解寄存器说明12、如何操作寄存器的某一位 STM32F407芯片学习1、stm32单片机启动流程s

『功能项目』更换URP场景【32】

上一章已经将项目从普通管线升级到了URP管线 现在我们打开上一篇31项目优化 - 默认管线转URP的项目, 进入战斗场景 将Land的子级全部隐藏 将新的URP场景预制体拖拽至Land子级 对场景预制体完全解压缩 将Terrain拖拽至Land的直接子级 将Terrain设置为Land 与 静态Static 清除烘培 重新烘培 修改脚本:LoadRe