ATK-LORA 无线通信模块

这篇具有很好参考价值的文章主要介绍了ATK-LORA 无线通信模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

一、ATK-LORA

ATK-LORA 无线通信模块
ATK-LORA正点原子推出的一款小体积、微功率、低功耗、高性能的远距离 LoRa 无线串口模块,该模块采用高效的 ISM 频段射频 SX1278 扩频芯片,其工作频率为 410MHz~441MHz,信道以 1MHz 频率为步进,共有 32 个信道,可在线修改模块的串口速率、发射功率、空中速率、工作模式和自定义通讯密钥等各种参数。ATK-MW1278D 模块的各项基本参数,如下表所示:
ATK-LORA 无线通信模块
LORA模块通过 6 个 2.54mm 间距的排针与外部相连接,方便用户使用和调试,模块外观如下图所示:
ATK-LORA 无线通信模块
各个引脚的详细描述,如下表所示:
ATK-LORA 无线通信模块

二、AT指令集及工作模式

ATK-LORA 无线通信模块
ATK-LORA 无线通信模块
1. 一般模式
发射端: 在一般模式下,发射端模块接收来自串口的用户数据,当用户数据的数据量达到 58 字节时,发射端模块将启动无线发射,此时用户可以继续输入需要发射的数据,当用户输入的数据小于 58 字节时,发射端模块将等待 1 个字节的时间,若期间无用户数据输入,则将此时发射端模块接收到的所有用户数据通过无线发出。当发射端模块开始发送第一个用户数据包的时候,发射端模块的 AUX 引脚将输出高电平,在发射端模块发射出所有用户数据后,发射端模块的 AUX 引脚将输出低电平,此时表明数据包已全部发出,用户可以继续通过串口输出数据。在该模式下发出的数据包,可以被处于一般模式、唤醒模式、信号强度模式和中继模式下的接收端模块接收。

接收端: 在一般模式下,接收端模块将一直打开无线接收功能,可以接收来自一般模式、唤醒模式和信号强度模式下的发射端模块发出的数据包。在接收端模块接收到数据包后,接收端模块的 AUX 引脚将输出高电平,随后大约 2~3ms 后将接收到的数据包通过串口输出给外部控制器,在所有的无线数据都通过串口输出后,接收端的 AUX 引脚将输出低电平。

2. 唤醒模式
发射端: 在唤醒模式下,发射端模块的工作方式与一般模式下的发射端工作方式基本一致,唯一不同的地方在于,唤醒模式下的发射端模块会在每个数据包前自动地添加唤醒码(唤醒码地长度取决于休眠时间的配置)。添加唤醒码的目的是为了唤醒处于省电模式下的接收端模块,因此处于唤醒模式下的发射端模块相较于处于一般模式下的发射端模块,发出的数据包能被处于省电模式下的接收端模块接收。

接收端: 在唤醒模式下,接收端模块的工作方式于处于一般模式下的接收端模块一致。

3. 省电模式
发射端: 在省电模式下,发射端模块将处于休眠状态,期间串口的接收功能将被关闭,无法接收来自外部串口的数据,因此在该模块下,发射端模块不具有无线发射功能。

接收端: 在省电模式下,接收端模块仅能接收来自唤醒模式下发射端模块发出的无线数据。在该模式下,接收端模块将会定时监听唤醒码,一旦接收端模块监听到有效的唤醒码时,接收端模块将持续处于接收无线接收状态,待整个有效数据包接收完毕后,接收端模块的AUX 引脚将输出高电平,随后大约 2~3ms 后将接收到的数据包通过串口输出给外部控制器,在所有的无线数据都通过串口输出后,接收端的 AUX 引脚将输出低电平,随后,接收端模块将继续保持“休眠-监听”的工作状态,通过配置不同的唤醒时间,将使得处于省电模式下的接收端模块具有不同的接收响应延迟和功耗,用户应在通讯延迟和平均功耗之间取一个平衡点。

4. 信号强度模式
信号强度模式可查看通讯双方的信号强度,为评估通讯双方的通讯质量提供参考,实际应用应以实际的丢包率为评估标准。

发射端: 在信号强度模式下,发射端模块的工作方式于处于一般模式下的发射端模块的工作方式一致。

接收端: 在信号强度模式下,接收端模块将在接收到来自发射端的无线数据后输出信号强度的信息。

三、传输模式

1. 透明传输
透明传输指的是传输的数据完全透明,发射端模块串口输入的发射数据与接收端模块串口输出的接收数据是一致的。

透明传输可以实现一个模块与一个或多个模块之间的无线数据传输,只要各个模块的配置的设备地址、信道和空中速率参数相同,那么这些模块之间就能够进行数据通讯,如下图所示:
ATK-LORA 无线通信模块
2. 定向传输
定向传输指的是在发射端模块串口的输入数据中包含了指定传输对象模块的设备地址和信道信息,发射端模块会将数据发送给与之同一空中速率的指定接收端模块,指定接收端模块的串口仅输出不包含指定传输对象模块的设备地址和信号信息的数据。

定向传输可以在同一空中速率中实现发射端模块定点地向指定接收端模块发送数据,如下图所示:
ATK-LORA 无线通信模块
3. 广播和监听
除了透明传输和定向传输,当接收端模块的设备地址配置为 0xFFFF 时,接收端模块能够监听相同网络地址和空中速率配置的所有数据传输(监听);同时,发射端模块发送的数据,能够发送给其他相同信道和空中速率配置的接收端模块(广播),如下图所示:ATK-LORA 无线通信模块

四、上位机配置

ATK-LORA 无线通信模块
1. 透明传输下
保证模块之前的各配置项相等
发送数据时直接发送想要发送的数据即可

2. 定向传输下
模块地址和通信信道可以不同
发送数据时格式为 模块地址+通信信道+数据

五、stm32通信设计

1. 模块初始化

u8 LoRa_Init(void)
{
   u8 retry=0;
	 u8 temp=1;
	
	 GPIO_InitTypeDef  GPIO_InitStructure;
		
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	//使能PA端口时钟
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);	//使能复用功能时钟

    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//禁止JTAG,从而PA15可以做普通IO使用,否则PA15不能做普通IO!!!	
	
	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;	    	 	 //LORA_MD0
	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
	 GPIO_Init(GPIOA, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
	
	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;				 //LORA_AUX
	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 		     //下拉输入
	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
	 GPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化GPIOA.4
	
	 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource4);
	
	   EXTI_InitStructure.EXTI_Line=EXTI_Line4;
  	 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;	
  	 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  //上升沿触发
  	 EXTI_InitStructure.EXTI_LineCmd = DISABLE;              //中断线关闭(先关闭后面再打开)
  	 EXTI_Init(&EXTI_InitStructure);//根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
	
	   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;			//LORA_AUX
  	 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//抢占优先级2, 
  	 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;		//子优先级3
  	 NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE; //关闭外部中断通道(后面再打开)
   	 NVIC_Init(&NVIC_InitStructure); 
	 
		LORA_MD0=0;
		LORA_AUX=0;
	
	 while(LORA_AUX)//确保LORA模块在空闲状态下(LORA_AUX=0)
	 {
		//Show_Str(40+30,50+20,200,16,"模块正忙,请稍等!!",16,0); 	
		 printf("模块正忙请稍等\r\n");
		 delay_ms(500);
         
	 }
	 usart3_init(115200);//初始化串口3
	 
	 LORA_MD0=1;//进入AT模式
	 delay_ms(40);
	 retry=3;
	 while(retry--)
	 {
		 if(!lora_send_cmd("AT","OK",70))
		 {
			 temp=0;//检测成功
			 break;
		 }	
	 }
	 if(retry==0) temp=1;//检测失败
	 return temp;
}

2. 配置LORA的信道、速率、串口、发射功率、传输模式等

void Lora_set(void)
{
    usart3_init(115200);
		usart3_rx(1);//开启串口3接收
		while(LORA_AUX);//等待模块空闲
		LORA_MD0=1; //进入配置模式
		delay_ms(40);
		Lora_mode=0;//标记"配置模式"
		//为防止通信产生干扰可以自己修改这里的模块配置参数,如果另一侧是用上位机接收,
	  //就在上位机调试APP中修改为对应的参数即可,不然两个模块无法通信
	  lora_send_cmd((u8 *)"AT+CWMODE=0",(u8 *)"OK",200); //设置为一般模式
	  lora_send_cmd((u8 *)"AT+TMODE=0",(u8 *)"OK",200); //设置为透明传输
	  lora_send_cmd((u8 *)"AT+TPOWER=3",(u8 *)"OK",200); //设置发射功率20db
	  lora_send_cmd((u8 *)"AT+WLRATE=24,2",(u8 *)"OK",200); //设置信道为24,空中速率2.4
		lora_send_cmd((u8 *)"AT+WLTIME=0",(u8 *)"OK",200); //设置休眠时间为1S
	  lora_send_cmd((u8 *)"AT+ADDR=00,02",(u8 *)"OK",200); //设置模块地址为2
		lora_send_cmd((u8 *)"AT+UART=7,0",(u8 *)"OK",200);//设置波特率115200,无校验 
	   
		LORA_MD0=0;//退出配置,进入通信 
	  delay_ms(40);
		while(LORA_AUX);//判断是否空闲(模块会重新配置参数)
		USART3_RX_STA=0;
		Lora_mode=1;//标记"接收模式"
	  usart3_init(115200);
		Aux_Int(1);//设置LORA_AUX上升沿中断	
	
}

3. lora发送命令

//lora发送命令
//cmd:发送的命令字符串(不需要添加回车了),当cmd<0XFF的时候,发送数字(比如发送0X1A),大于的时候发送字符串.
//ack:期待的应答结果,如果为空,则表示不需要等待应答
//waittime:等待时间(单位:10ms)
//返回值:0,发送成功(得到了期待的应答结果)
//       1,发送失败
u8 lora_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
	u8 res=0; 
	USART3_RX_STA=0;
	if((u32)cmd<=0XFF)
	{
		while((USART3->SR&0X40)==0);//等待上一次数据发送完成  
		USART3->DR=(u32)cmd;
	}else u3_printf("%s\r\n",cmd);//发送命令
	
	if(ack&&waittime)		//需要等待应答
	{
	   while(--waittime)	//等待倒计时
	   { 
		  delay_ms(10);
		  if(USART3_RX_STA&0X8000)//接收到期待的应答结果
		  {
			  if(lora_check_cmd(ack))break;//得到有效数据 
			  USART3_RX_STA=0;
		  } 
	   }
	   if(waittime==0)res=1; 
	}
	return res;
} 

4. 接收应答

//lora发送命令后,检测接收到的应答
//str:期待的应答结果
//返回值:0,没有得到期待的应答结果
//其他,期待应答结果的位置(str的位置)
u8* lora_check_cmd(u8 *str)
{
	char *strx=0;
	if(USART3_RX_STA&0X8000)		//接收到一次数据了
	{ 
		USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加结束符
		strx=strstr((const char*)USART3_RX_BUF,(const char*)str);
	} 
	return (u8*)strx;
}

5. AUX中断设置

//mode:配置的模式 0:关闭 1:上升沿 2:下降沿
void Aux_Int(u8 mode)
{
    if(!mode)
	{
		EXTI_InitStructure.EXTI_LineCmd = DISABLE;//关闭中断
		NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE;	
	}else
	{
		if(mode==1)
			 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿
	    else if(mode==2)
			 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿
		
		EXTI_InitStructure.EXTI_LineCmd = ENABLE;
		NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;		
	}
	Int_mode = mode;//记录中断模式
	EXTI_Init(&EXTI_InitStructure);
	NVIC_Init(&NVIC_InitStructure);  
    
}

//LORA_AUX中断服务函数
void EXTI4_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line4))
	{  
	   if(Int_mode==1)//上升沿(发送:开始发送数据 接收:数据开始输出)     
	   {
		  if(Lora_mode==1)//接收模式
		  {
			 USART3_RX_STA=0;//数据计数清0
		  }
		  Int_mode=2;//设置下降沿触发
		  LED0=0;//DS0亮
	   }
       else if(Int_mode==2)//下降沿(发送:数据已发送完 接收:数据输出结束)	
	   {
		  if(Lora_mode==1)//接收模式
		  {
			 USART3_RX_STA|=1<<15;//数据计数标记完成
		  }else if(Lora_mode==2)//发送模式(串口数据发送完毕)
		  {
			 Lora_mode=1;//进入接收模式
		  }
		  Int_mode=1;//设置上升沿触发
          LED0=1;//DS0灭		   
	   }
     Aux_Int(Int_mode);//重新设置中断边沿
	   EXTI_ClearITPendingBit(EXTI_Line4); //清除LINE4上的中断标志位  
	}	
}

6. 通信测试

m=LoRa_ReceData();
key=KEY_Scan(0);
if(key==WKUP_PRES)
	u3_printf("Hello Lora");
if(m[0]=='1')
	printf("yes \r\n");

ATK-LORA 无线通信模块文章来源地址https://www.toymoban.com/news/detail-467505.html

到了这里,关于ATK-LORA 无线通信模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【毕业设计 - 教学】单片机常用模块:433无线数传通信

    Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机开发常用模块:433无线数传模块 单片机常用模块:433无线数传模块 大家可用于 课程设计 或 毕业设计 无线收发模块433MHz,采用高频射频技术,所以又称RF433射频小模块。它以全数字技术生产的单IC射频前端和ATMEL的A

    2024年02月12日
    浏览(41)
  • 基于STM32的正点原子LORA模块通信网络

    LoRa是semtech公司开发的一种低功耗局域网无线标准,其名称“LoRa”是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。 距离往往可达

    2023年04月08日
    浏览(31)
  • 无线通信安全作业4

    1.请分析WEP协议中IV的作用和由于IV引发的安全缺陷。 首先我们来看WEP协议中IV的作用。 WEP基于RC4算法,而RC4算法作为流密码加密算法,用RC4加密的数据丢失会导致加解密失步从而导致后面的数据丢失,WEP需要在每帧重新初始化密钥流,所以引入初始向量IⅣ。WEP使用IV和密钥级

    2024年02月03日
    浏览(70)
  • 无线通信发展历程分析

    摘要: 当前,移动、无线技术领域正处在一个高速发展的时期,各种创新移动、无线技术不断涌现并快速步入商用,移动、无线应用市场异常活跃,移动、无线技术自身也在快速演进中不断革新。无线通信未来的发展趋势表现为:从大范围公众移动通信来看,3G或超3G技术将是

    2024年02月05日
    浏览(41)
  • 熵 | 无线通信知识

    熵定义: H ( X ) = E [ − l o g 2 p ( x ) ] = − ∑ x ∈ X p ( x ) l o g 2 p ( x ) H(X)=E[-log_2p(x)]=-sum_{xin X}p(x)log_2p(x) H ( X ) = E [ − l o g 2 ​ p ( x )] = − x ∈ X ∑ ​ p ( x ) l o g 2 ​ p ( x ) note H(X)是X的平均香农信息内容 H(X)是每个符号的平均信息量 二元问题(抛硬币),H(X)取值为[H(X),H(X)+1] 为

    2024年02月09日
    浏览(36)
  • 商用无线通信:信道带宽

    GSM: 200 kHz WCDMA: 5 MHz cdma2000 1X: 1.25 MHz TD-SCDMA: 1.6 MHz LTE: 1.4 MHz /3 MHz /5 MHz /10 MHz / 15 MHz /20 MHz 5G(Rangel 频段):5 MHz/15 MHz/ 20 MHz/30 MHz/40 MHz/50 MHz/60 MHz/ 70 MHz/80 MHz/90 MHz/100 MHz 5G (Range2 Hif): 50 MHz/100 MHz/ 200 MHz/400 MHz Wi-Fi: 22 MHz/20 MHz/40 MHz/80 MHz/ 80 MHz +80 MHz /160 MHz ZigBee: 2 MHz NB-IoT: 200 kHz

    2024年04月17日
    浏览(31)
  • 5G | 无线通信基础知识

    eMBB:增强性移动带宽 uRLLC:超高可靠低时延 mMTC:大规模机器通信 1 10 100 1ms时延、10Gbps数据速率、100万每平方公里连接数 增强覆盖:提升手机功率和上下行频谱共享 提高效率:Massive MIMO、调制编码、多址、双工、全双工 降低时延:优化无线覆盖 优点:分集增益、复用增益

    2024年02月09日
    浏览(37)
  • 【物联网无线通信技术】802.11无线安全认证

    本文由简入繁介绍了IEEE802.11i无线局域网安全技术的前世今生,帮助路由器开发者对WLAN的加密安全策略有一个概念上的认知,能够更好地分析STA掉线以及漫游等问题。 目录 WEP WPA WPA/WPA2-PSK认证过程 802.11i WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议对在两台设备间

    2024年02月11日
    浏览(36)
  • 无线通信安全:防止窃取与侵入

    无线通信安全是现代社会中的一个重要问题,随着无线通信技术的发展,我们的生活中越来越多的设备都需要通过无线方式进行通信。这种无线通信技术的广泛应用带来了很多的好处,但同时也带来了一系列的安全问题。无线通信安全的核心在于保护通信的机密性、完整性和

    2024年02月20日
    浏览(25)
  • 通信行业无线基本概念

    fast roaming(快速漫游) :使用户在不同的基站(access point)间可以平滑的切换,在802.11r协议标准中定义。 band steering(波段转向) :在双频段(2.4G和5G)都可用的情况下,使终端设备优先连接5G信号。 beacon帧: 链路层传输wifi信息的管理帧,beacon帧传输内容可包含ssid name(

    2024年01月18日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包