目录
一、概述
LoRa是semtech公司开发的一种低功耗局域网无线标准,其名称“LoRa”是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。
据悉,Lora传输距离,城区可实现2-3Km,郊区可达15Km。
二、程序编写与实现
程序开发环境使用Keil5。
程序本身的实现比较简单,本文不做太多赘述,源码比较简单,贴出来供大家学习。
三、源码实现
#include "NS_Radio.h"
uint8_t SendData[]={0xff,0xaa};
uint8_t data[255];
void show(int flag)
{
OLED_Clear();
OLED_ShowCHinese(32,0,18);
OLED_ShowCHinese(48,0,19);
OLED_ShowCHinese(64,0,24);
OLED_ShowCHinese(80,0,25);//反馈节点
OLED_ShowCHinese(0,3,26);
OLED_ShowCHinese(16,3,27);
OLED_ShowCHinese(32,3,2);
OLED_ShowCHinese(48,3,3);
OLED_ShowCHinese(64,3,28);//当前状态:
switch(flag)
{
case 0:
OLED_ShowCHinese(32,6,0);
OLED_ShowCHinese(48,6,1);
OLED_ShowCHinese(64,6,2);
OLED_ShowCHinese(80,6,3);//监听状态
break;
case 1:
OLED_ShowCHinese(32,6,4);
OLED_ShowCHinese(48,6,5);
OLED_ShowCHinese(64,6,6);
OLED_ShowCHinese(80,6,7);//收到请求
break;
case 2:
OLED_ShowCHinese(32,6,8);
OLED_ShowCHinese(48,6,9);
OLED_ShowCHinese(64,6,6);
OLED_ShowCHinese(80,6,7);//回复请求
break;
case 3:
OLED_ShowCHinese(32,6,6);
OLED_ShowCHinese(48,6,7);
OLED_ShowCHinese(64,6,12);
OLED_ShowCHinese(80,6,13);//请求成功
break;
}
};
int main( void )
{
Init();
NS_RadioInit(433300000,20,5000,5000);
OLED_Init();
OLED_Display_On();
show(0);
while( 1 )
{
ReadRadioRxBuffer(data);
if(data[0]==0xaa && data[1]==0xff)
{
GpioToggle(&Led2);
show(1);
HAL_Delay(1000);
SX1276Send(SendData,2);
show(2);
HAL_Delay(1000);
show(3);
GpioToggle(&Led2);
memset(data,'\0',255);
HAL_Delay(1000);
show(0);
}
}
}
四、场地实测
本次将lora模块调整至最大频率,一切以保证远距离传输为主,下图为调试图。
完成主副节点配置,按下按键,主节点发送帧,反馈节点收到并返回帧,随后主节点收到完成请求。
本文仅选择性的测试了部分环境,供参考可得出大致数据。
<1>30m复杂环境
情况:正常收发数据
<2>50m复杂环境
情况:信号出现丢失情况
随后我们将反馈节点放到窗口,并下楼测试。
<3>100m空旷环境
情况:正常收发数据
<3>500m空旷环境
情况:正常收发数据
<3>1000m空旷环境
情况:信号偶尔丢失
五、总结
由于我测试的复杂环境非常复杂,处于机房环境,干扰较多,表现差属于正常。空旷环境表现十分优异,基于本Lora模块本身功耗不足,因此,Lora模块传输距离依然值得肯定!