STM32学习笔记Lora(一)

19 篇文章 22 订阅
订阅专栏

目录

本文将分为以下几个部分,分别是

  • Lora的介绍
  • 相关AT指令
  • 部分源码理解



正文

Lora介绍

物联网应用中的无线技术有多种,可组成局域网或广域网。组成局域网的无线技术主要有2.4GHz的WiFi,蓝牙、Zigbee等,组成广域网的无线技术主要有2G/3G/4G等。

LoRa 是LPWAN通信技术中的一种,是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案。这一方案改变了以往关于传输距离与功耗的折衷考虑方式,为用户提供一种简单的能实现远距离、长电池寿命、大容量的系统,进而扩展传感网络。目前,LoRa 主要在全球免费频段运行,包括433、868、915MHz等。

本文是使用ATK-LORA-01作为开发模块,是一款体积小,微功率,低功耗,高性能远距离LORA无线串口模块。模块采用高效的ISM频段射频SX1278扩频芯片。
在这里插入图片描述
ATK-LORA-01 模块具有:体积小、灵敏度高、支持低功耗省电,特点包括:
1、工业频段:433Mhz 免申请频段
2、多种功率等级(最大 20dBm,最大 100mW)
3、多种串口波特率、空中速率、工作模式
4、支持空中唤醒功能,低接收功耗
5、双 512 环形 FIFO
6、频率 410-441Mhz,提供 32 个信道
7、接收灵敏度达-136dBm,传输距离 3000 米
8、自动分包传输,保证数据包的完整性




在这里插入图片描述
模块根据MD0的配置与AUX引脚的状态会进入不同的功能,如下所示
在这里插入图片描述
其中通信功能如下,包含4中工作模式:
在这里插入图片描述




相关AT指令

设备地址配置

查询设备配置地址范围
在这里插入图片描述



无线速率和信道配置

配置设备信道和无线速率
在这里插入图片描述
查询设备信道和无线速率设置范围
在这里插入图片描述


发射功率设置

配置设备发射功率
在这里插入图片描述
查询设备配置的发射功率范围
在这里插入图片描述
0:11dbm
1:14dbm
2:17dbm
3:20dbm(默认)



工作模式配置

查询工作模式配置范围
在这里插入图片描述
在这里插入图片描述



发送状态配置

查询设备发送状态配置范围
在这里插入图片描述
在这里插入图片描述



串口配置

在这里插入图片描述
在这里插入图片描述



相关代码

//lora发送命令
//cmd:发送的命令字符串(不需要添加回车了),当cmd<0XFF的时候,发送数字(比如发送0X1A),大于的时候发送字符串.
//ack:期待的应答结果,如果为空,则表示不需要等待应答
//waittime:等待时间(单位:10ms)
//返回值:0,发送成功(得到了期待的应答结果)
//       1,发送失败
sprintf((char*)sendbuf,"AT+TPOWER=%d",LoRa_CFG.power);//设置发射功率
lora_send_cmd(sendbuf,"OK",50);
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;
}
//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;
}



Lora模块发送数据

u8 Dire_Date[]={0x11,0x22,0x33,0x44,0x55};//定向传输数据
u8 date[30]={0};//定向数组
//Lora模块发送数据
void LoRa_SendData(void)
{      
	static u8 num=0;
    u16 addr;
	u8 chn;
	u16 i=0; 
		
	if(LoRa_CFG.mode_sta == LORA_STA_Tran)//透明传输
	{
		sprintf((char*)Tran_Data,"ATK-LORA-01 TEST %d",num);
		u3_printf("%s\r\n",Tran_Data);
		LCD_Fill(0,195,240,220,WHITE); //清除显示
		Show_Str_Mid(10,195,Tran_Data,16,240);//显示发送的数据	
		
		num++;
		if(num==255) num=0;
		
	}else if(LoRa_CFG.mode_sta == LORA_STA_Dire)//定向传输
	{
		
		addr = (u16)obj_addr;//目标地址
		chn = obj_chn;//目标信道
		
		date[i++] =(addr>>8)&0xff;//高位地址
		date[i++] = addr&0xff;//低位地址
		date[i] = chn;//无线信道
		
		for(i=0;i<Dire_DateLen;i++)//数据写到发送BUFF
		{
			date[3+i] = Dire_Date[i];
		}	
		for(i=0;i<(Dire_DateLen+3);i++)
		{
			while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);//循环发送,直到发送完毕   
			USART_SendData(USART3,date[i]); 
		}	
		
        //将十六进制的数据转化为字符串打印在lcd_buff数组
		sprintf((char*)wlcd_buff,"%x %x %x %x %x %x %x %x",
				date[0],date[1],date[2],date[3],date[4],date[5],date[6],date[7]);
		
		LCD_Fill(0,200,240,230,WHITE);//清除显示
		Show_Str_Mid(10,200,wlcd_buff,16,240);//显示发送的数据	
		
	    Dire_Date[4]++;//Dire_Date[4]数据更新
		
	}
			
}



Lora模块接收数据

//Lora模块接收数据
void LoRa_ReceData(void)
{
    u16 i=0;
    u16 len=0;
   
	//有数据来了
	if(USART3_RX_STA&0x8000)
	{
		len = USART3_RX_STA&0X7FFF;
		USART3_RX_BUF[len]=0;//添加结束符
		USART3_RX_STA=0;

		for(i=0;i<len;i++)
		{
			while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕   
			USART_SendData(USART1,USART3_RX_BUF[i]); 
		}
		LCD_Fill(10,260,240,320,WHITE);
		if(LoRa_CFG.mode_sta==LORA_STA_Tran)//透明传输
		{	
			Show_Str_Mid(10,270,USART3_RX_BUF,16,240);//显示接收到的数据

		}else if(LoRa_CFG.mode_sta==LORA_STA_Dire)//定向传输
		{
			//将十六进制的数据转化为字符串打印在lcd_buff数组
			sprintf((char*)rlcd_buff,"%x %x %x %x %x",
			USART3_RX_BUF[0],USART3_RX_BUF[1],USART3_RX_BUF[2],USART3_RX_BUF[3],USART3_RX_BUF[4]);
				
			Show_Str_Mid(10,270,rlcd_buff,16,240);//显示接收到的数据	
		}
		memset((char*)USART3_RX_BUF,0x00,len);//串口接收缓冲区清0

	}

}
LoRa无线通信技术介绍(四)基于STM32的SPI驱动
DT程序员的博客
03-14 1047
详细介绍LoRa基于STM32的SPI驱动和时序逻辑
STM32F103 LORA配置
03-10
lora模块配置,基于stm32f103,配置文件,有需要的可免费下载
STM32、NBIOT、Lora模块烧写方法-Hex文件烧录步骤详解-新大陆物联网设备-NEWLab开发板
qq_39724355的博客
10-28 4167
本小节内容相对简单,属于STM32开发中的基础部分,是STM32开发的基础,烧录程序的方法有很多,本节仅仅介绍到了关于的烧录方法,后面会发布其他教程
STM32--LoRa通信模块
最新发布
qq_47258284的博客
05-09 1408
模块根据MD0的配置与AUX引脚的状态会进入不同的功能其中在通信功能下,包含4种工作模式。
STM32使用LORA模块通信
热门推荐
qq_54706971的博客
05-22 2万+
目录 一、模块使用方法 1、模块简介 2、硬件及功能 3、传输方式 二、模块上手 1、连接 2、编写代码 usart3.h usart3.c lora.h lora.c 一、模块使用方法 本文以正点原子ATK-LORA-01模块为例进行介绍。 1、模块简介 ATK-LORA-01-V3.0(V3.0是版本号,下面均以ATK-LORA-01表示该产品)是ALIENTEK推出的一款体积小、微功率、低功耗、高性能远距离LORA无线串口模块。模块设计是采用高效的IS...
基于STM32的正点原子LORA模块通信网络
qq_41321089的博客
12-14 3587
应当有上级节点,同级节点,下级节点,每个节点的级别。LoRa是semtech公司开发的一种低功耗局域网无线标准,其名称“LoRa”是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。将2个LORA模块的数据都存储到STM32中,最好是外接一个EEPROM,将数据记录在EEPROM中,每次启动STM32,只要将原来的数据从EERPOM中读取一遍就可以了。
基于STM32Lora无线抄表系统
qq_35654286的博客
04-10 985
基于LoRa的无线通信的电力抄表系统,采集节点数据,通过LoRa无线通信进行数据传输,最后再网关节点上显示。本设计有详细使用和说明文档,上手容易!基于STM32Lora无线抄表系统。
基于LoRa技术的STM32处理器无线程序升级系统设计(学习
Caramel_biscuit的博客
07-03 640
如果所有数据帧都接收完毕,则对接收到的数据进行CRC32校验,如果校验值和首帧的CRC32校验值一致,则配置PA3输出低电平,PA2产生一个负脉冲复位待升级程序的STM32处理器,然后通过串口一次性将bin文件的长度信息、文件内容以及CRC32值都发送给待升级程序的处理器,并重新配置PA2及PA3为高电平,然后等待STM32的串口返回值,如果收到“ok”代表文件传送成功,如果收到“error”表示文件传送失败,无论收到ok还是error都要重新等待发送端下次发送新的bin文件。
STM32使用LORA模块通信代码
08-27
STM32使用LORA模块通信代码
STM32+LORA_lora_LORASTM32_STM32F103_STM32+lora_
09-29
基于stm32f103zet6的LORA源码
stm32L07+lora开发例程
01-16
stm32L07+lora开发例程,包括loraWan,lora点对对应用实例,sx1276驱动等所有源文件,Lora轻松入门
lora标准1.0
09-23
2015年版1.0标准规范,主流应用版本。芯片基本基于该版本。
STM32_SX1278实现LORA通信STM32F103完美实现
11-30
STM32_SX1278实现LORA通信STM32完美实现。使用单片机STM32F103CB控制Lora芯片SX1278实现Lora通信的项目文件,测试过可用。效果完美,适用于STM32F103系列芯片。
stm32上的lora开发
04-11
使用stm32f103c8t6采用sl1278lora模块为基础的开发代码
STM32F103C8T6+LORA模块
10-27
STM32F103C8T6+LORA模块,并与上位机进行交互配置,解析数据,
LORA-STM32开发系列教程LORA点对点
m0_53608652的博客
10-28 355
LORA-STM32开发系列教程LORA点对点
STM32实现基于HAL库的LoRa通信(SPI接口)
qq_1070971363的博客
09-04 3932
STM32CubeIDE实现基于STM32LoRa通信程序移植(SPI接口),操作非常简单,程序功能:用于测试LoRa的通信距离和丢包率
STM32单片机驱动ATK-Lora-01和配置学习
iguessyoureright的博客
11-01 2266
最近手里有两块白嫖的ATK-Lora-01模块放着也是放着,决定拿出来研究一下,因为网上很少有相关的内容资料可供参考,因此爬了不少资料和代码,在这里记录一下学习过程。
stm32f103 连接lora
01-07
stm32f103是一种微控制器芯片,具有丰富的外设和强大的处理能力,通常用于嵌入式系统和物联网设备。LoRa是一种长距离、低功耗的无线通信技术,常用于物联网设备的通信。 要连接stm32f103和LoRa模块,首先需要选择一个兼容的LoRa模块,例如SX1278。然后,将LoRa模块连接到stm32f103的GPIO引脚上,以便进行数据的发送和接收。接下来,在stm32f103的开发环境中,需要编写代码来控制LoRa模块,包括初始化LoRa模块、设定通信频率、发送和接收数据等操作。 在代码的编写过程中,需要利用stm32f103的串口通信功能来和LoRa模块进行数据交互,并且根据LoRa模块的特性来配置传输参数,如扩频因子、带宽、脉冲位置调制等。同时,还需要处理LoRa模块返回的数据,进行解析和处理。在整个过程中,还需要考虑LoRa模块的功耗管理,以确保在低功耗环境下实现长距离通信。 最后,在连接stm32f103和LoRa模块之后,需要进行严格的测试和验证,确保通信的稳定性和可靠性。通过适当的调试和优化,可以实现stm32f103和LoRa模块的高效连接,为物联网设备的数据传输提供可靠的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Proteus仿真-步进电机 50317
  • Proteus仿真-数码管显示温度(实验三) 37710
  • Proteus仿真-矩阵键盘(实验一) 31899
  • DataGrip创建MySQL数据库与使用 30976
  • STM32F103 TFTLCD显示实验(一) 22444

分类专栏

  • python 1篇
  • AIGC 1篇
  • go语言 15篇
  • 分布式定时器 1篇
  • kafka 3篇
  • etcd 1篇
  • 分布式 4篇
  • 抖音极简版 1篇
  • grpc 1篇
  • RTOS 1篇
  • DIYRTOS 2篇
  • 小熊派 7篇
  • RTT 2篇
  • 对接华为OC平台 1篇
  • 安卓 7篇
  • 个人 4篇
  • 计算机网络原理 1篇
  • 新大陆 6篇
  • LInux 2篇
  • 深度学习 11篇
  • STM32 19篇
  • 图像处理 3篇
  • 接口调用 1篇

最新评论

  • 安卓控制新大陆云平台(三)

    Lzjusc2017: 代码没有了不好意思,太久了,但实现一个demo就行,不难

  • 图解分布式定时器从零实现 | go语言(一)

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/618351229。

  • 图解Kafka架构学习笔记(一)

    计算机王: Kafka原来是这样的,谢谢博主的文章

  • Proteus仿真-步进电机

    2401_82366351: 电机是点一下转一下 加减速貌似没什么作用 不知道是我哪里搞错了

  • STM32F103 实验 PWM输出

    Marxwell@cn: 这个代码运行起来没有PWM,是完全的高电平

大家在看

  • 35岁后的互联网产品人的职场路该怎么走? 1321
  • C语言重要算法之一——冒牌排序详解(干货满满,欢迎各位朋友的观看)
  • 789、基于51单片机的空气检测(日历,烟雾,温湿度,有害气体)
  • 重磅|粉丝福利|专栏1.4|负荷预测|场景削减|集群划分系列
  • 基于改进粒子群算法的含碳捕集微网多时间尺度低碳经济调度(Matlab代码实现)

最新文章

  • python | moviepy音视频剪辑VideoFileClip使用
  • ComfyUI-APISR 动漫的超分模型
  • go语言 | 快速生成数据库表的 model 和 queryset
2024年7篇
2023年15篇
2020年9篇
2019年59篇
2018年4篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源西安赛格电脑城有限公司起名实业江汉大学地址起名字公司免费起名称测分数宝宝起名女姓氏三才五格起名起名方法帕尔马俱乐部京华烟云赵薇版大野茜里牛宝宝取名宜用字男孩起名纸醉金迷的意思赵姓女孩起名物联网公司名称起名起名八字 周易酷9张姓女人起名高分毓婷医疗器材有限公司起名大全球队起名杜琪峰复仇不祥之刃姓罗什么起名找人起名一般要多少钱动画片大小说起名 产生器含有土的起名起名网 三通起姓名1518叶凡唐若雪淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化