【LoRa】Benewake(北醒) TF-Luna(TTL)在LoRa32U4II基于Arduino IDE运用说明

目录

  • 硬件介绍
    • Benewake(北醒) 单点系列标品介绍
    • 【LoRa32U4 II】介绍以及基于Arduino IDE编译环境搭建及测试
  • 北醒TF-luna(TTL)协议说明
    • 串口通讯协议说明
    • 雷达与LoRa32u4 II接线说明
      • Luna接口定义
      • Luna接线示意图
  • 例程说明
    • 从机例程
    • 主机例程
  • 测试

硬件介绍

Benewake(北醒) 单点系列标品介绍

TF-Luna 简要说明
【LoRa】Benewake(北醒) TF-Luna(TTL)在LoRa32U4II基于Arduino IDE运用说明_第1张图片
链接:https://blog.csdn.net/zoran_wu/article/details/121850480

【LoRa32U4 II】介绍以及基于Arduino IDE编译环境搭建及测试

LoRa32U4 II 产品图片
【LoRa】Benewake(北醒) TF-Luna(TTL)在LoRa32U4II基于Arduino IDE运用说明_第2张图片

链接:https://blog.csdn.net/zoran_wu/article/details/121849542

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

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

串口通讯协议说明

串口数据通讯协议
【LoRa】Benewake(北醒) TF-Luna(TTL)在LoRa32U4II基于Arduino IDE运用说明_第3张图片
数据格式及编码解释
【LoRa】Benewake(北醒) TF-Luna(TTL)在LoRa32U4II基于Arduino IDE运用说明_第4张图片

输出数据说明

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

雷达与LoRa32u4 II接线说明

Luna接口定义

【LoRa】Benewake(北醒) TF-Luna(TTL)在LoRa32U4II基于Arduino IDE运用说明_第5张图片

Luna接线示意图

【LoRa】Benewake(北醒) TF-Luna(TTL)在LoRa32U4II基于Arduino IDE运用说明_第6张图片

例程说明

从机例程

此例程主要包含LoRa发送部分TF-luna读取部分

Benewake_TF-luna-TTL_LoRa32U4-II_Sender

#include 
#include 

//LoRa32u4II (868MHz-915MHz) ports
#define SS      8
#define RST     4
#define DI0     7
#define BAND    868E6  //915E6

typedef struct {
  u16 distance;
  u16 strength;
  u16 temp;
  boolean receiveComplete;
} TF;
TF Lidar = {0, 0, 0, false};

void setup() {
  Serial.begin(115200); //通过Serial口给电脑打印雷达数据

  /*使用115200波特率,板子接收异常(看起来像晶振主频不匹配),建议使用9600波特率*/
  Serial1.begin(9600);  //通过Serial1口接收雷达数据
  delay(200);
  while (!Serial); // comment if LoRa32u4 USB port is not used

  LoRa.setPins(SS, RST, DI0);
  Serial.println("LoRa Sender");

  if (!LoRa.begin(BAND)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  Serial.print("Sending packet: ");
}

void loop() {

  if (Lidar.receiveComplete) {
    Lidar.receiveComplete = false;
    LidarDataSerialPrint(&Lidar);
    LidarDataPacketSender(&Lidar);

    // delay(1000);
  }
}
/*硬件中断获取雷达数据*/
void getLidarData(TF * lidar) {
  static unsigned char i = 0;
  unsigned char j = 0;
  unsigned char checksum = 0;
  static unsigned char 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 LidarDataSerialPrint(TF * lidar)
{
  Serial.print("Distance: ");
  Serial.print(lidar->distance);
  Serial.print(" Strength: ");
  Serial.print(lidar->strength);
  Serial.print(" Temp: ");
  Serial.println(lidar->temp);
}
/*从机雷达数据包发送*/
void LidarDataPacketSender(TF * lidar)
{
  LoRa.beginPacket();
  LoRa.print(" Distance: ");
  LoRa.print(lidar->distance);
  LoRa.print(" Strength: ");
  LoRa.print(lidar->strength);
  LoRa.print(" Temp: ");
  LoRa.print(lidar->temp);
  LoRa.endPacket();
}
/*串口中断获取雷达数据*/
void serialEvent1()
{
  getLidarData(&Lidar);
}

主机例程

Benewake_TF-luna-TTL_LoRa32U4-II_Receiver

#include 
#include 

//LoRa32u4II (868MHz-915MHz) ports
#define SS      8
#define RST     4
#define DI0     7
#define BAND    868E6  //915E6

void setup() {
  Serial.begin(115200);
  delay(200);
  while (!Serial);// comment if LoRa32u4 USB port is not used

  Serial.println("LoRa Receiver");
  LoRa.setPins(SS, RST, DI0);

  if (!LoRa.begin(BAND)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  LidarDataPacketReceiver();
}
/*主机雷达数据包接收*/
void LidarDataPacketReceiver()
{
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
    }
    Serial.println("");
  }
}

测试

【LoRa】Benewake(北醒) TF-Luna(TTL)在LoRa32U4II基于Arduino IDE运用说明_第7张图片

你可能感兴趣的:(arduino,LoRa,c语言,物联网,北醒产品,嵌入式硬件)