电子说
一 概述
随着物联网(IoT)的快速发展,低功耗广域网(LPWAN)技术在无线通信领域的重要性日益凸显。其中,LoRa(Long Range)技术凭借其独特的扩频调制机制和超远传输距离,在智能城市、农业监测、工业自动化等领域取得了显著的应用成果。本文将系统性地介绍LoRa技术的基本原理、核心特点、存在的缺点以及广泛的应用场景。
LoRa全称(Long Range Radio)是基于Semtech公司开发的一种低功耗局域网无线标准,其目的是为了解决功耗与传输难覆盖距离的矛盾问题。一般情况下,低功耗则传输距离近,高功耗则传输距离远,LoRa技术解决了在同样的功耗条件下比其他无线方式传播的距离更远的技术难题,实现了低功耗和远距离两种兼顾的效果。
二LoRa技术原理
LoRa是一种基于 chirp spread spectrum (CSS) 扩频调制技术的无线通信方案,由美国Semtech公司开发。其工作原理在于通过线性频率调制(LFM)产生“啁啾”信号,每个数据包的载波频率随着时间线性变化。这种调制方式允许信号在强干扰环境下保持良好的穿透力与抗多径衰落能力,从而实现远距离传输。
LoRa技术采用先进的前向纠错编码(FEC)技术来增强数据传输的可靠性,即使在信号强度较低的情况下也能保证一定的数据完整性。此外,它支持多种扩频因子选择,以适应不同的传输速率和距离需求。
三LoRa技术特点
● 长距离通信:LoRa 技术能够实现长距离的通信覆盖,其通信范围可以达到数公里到数十公里,非常适合于远距离物联网应用,例如农业监测、智能城市等。
● 低功耗(电池寿命长):LoRa 设备以及其通信协议被设计为低功耗的,所以 LoRa 网络中的设备可以长时间运行,即使是由电池供电的设备也可以有较长的使用寿命。
● 广域覆盖:LoRa 网络可以提供广泛的覆盖范围,不仅覆盖城市地区,也能够较好地穿透障碍物,提供深度的室内和地下覆盖,适用于各种不同环境下的物联网应用。
● 抗干扰能力:LoRa 技术采用了频率扩散调制技术,使得其在频繁干扰的环境中依然能够保持稳定的通信连接,从而提高了其在复杂电磁环境下的可靠性。
● 低成本:LoRa 技术的部署相对成本较低,设备价格低廉,且由于其长距离通信能力,可以减少基础设施的需求,从而降低了整体的部署成本。
● 开放标准:LoRa 是一种开放的通信标准,因此厂商和开发者可以基于 LoRa 技术进行开发,极大的促进了 LoRa 生态系统的发展和创新。
四LoRa技术的不足之处
数据传输速率:LoRa在传输距离上有突出表现,同样牺牲了数据传输速率,通常在几十至几百kbps之间,不适合需要高速率传输的应用场景。
网络可靠性:尽管LoRa网络设计之初考虑了稳健性,但在高密度部署或复杂环境中仍可能面临网络拥塞、信号干扰等问题。
标准化与兼容性:LoRa主要依托于私有协议LoRaWAN,虽然已在全球范围内得到广泛应用,但相对于其他一些全球统一标准的通信技术还是有较大的差距的。
五 LoRa应用场景
智慧城市:用于智能照明、环境监测、停车管理等市政设施的数据采集与远程控制。
农业监测:实现农田土壤湿度、温度、光照等参数的实时监测,助力精准农业发展。
资产追踪:在物流和供应链管理中,对货物进行实时定位和状态跟踪。
工业物联网:为工厂自动化提供无线监控解决方案,如生产设备的状态监测和预测性维护。
总结而言,LoRa技术作为LPWAN领域的关键推动者之一,以其特有的技术优势服务于众多物联网应用场景,尤其在低速、低功耗、远距离通讯方面展现出巨大潜力。然而,面对快速发展的物联网市场和技术演进,LoRa还需不断改进和完善,以应对更高的可靠性和安全性需求。
六 LoRa组件的使用
1 Gitee链接地址
Demo位于amaziot_bloom_os_sdksamplelibraries21.1_lora_rtx
Gitee源码地址:https://gitee.com/ning./hongdou
Github源码地址:https://github.com/ayumid/hongdou
编译指令:.build.bat -l .amaziot_bloom_os_sdksamplelibraries21.1_lora_rtx
2 组件功能介绍
初始化Lora模块。
3.26 Lora AM-HD-E-REV-06-020
3.25 Lora AM-HD-E-INIT-06-018
3 代码讲解
1 dev_lora_send
功能:该函数用于初始化lora模块。
参数:
参数 | 释义 |
data | 发送数据缓冲区指针 |
len | 发送数据长度 |
返回值:无
示例:
dev_lora_send("abcdefghijklmnopqrstuvwxyz", strlen("abcdefghijklmnopqrstuvwxyz"));
2 dev_lora_module_packet_init
功能:该函数用于,将发送数据长度写入Lora模块寄存器。
参数:
参数 | 释义 |
len | 发送数据长度 |
返回值:无
示例:
dev_lora_module_packet_init(strlen("abcdefghijklmnopqrstuvwxyz"));
4 Demo实战
4.1 概述
上电后,模组会一直等待其它lora模块发送的数据。
上电后,模组会每隔3s发送不同长度的数据
4.2 测试
测试步骤:
参考编译教程,和文档开头的编译指令,进行编译
按照编译教程选择对应的选项
烧录
4.3 宏定义介绍
sample_lora_rtx_uart_printf
输出日志到DEBUG 串口,日志比较少,可以输出到这个串口,如果日志比较多,需要输出到usb口,以免不必要的问题出现
sample_lora_rtx_catstudio_printf
输出日志到USB 串口,使用catstudio查看,catstudio查看日志需要更新对应版本mdb.txt文件,软件打开filtter过滤日志,只查看用户输出的日志
LORA_RTX_TASK_STACK_SIZE
栈空间宏定义
4.4 全局变量介绍
lora_rtx_task_stack
任务栈空间,本例使用数组实现,用户在做项目时,可以预先估算下当先任务需要的大致栈空间,OS没有提供可以查看栈空间使用情况的API
lora_rtx_task_ref
Lora任务指针
4.5 函数介绍
Phase1Inits_enter
底层初始化,本例空
Phase1Inits_exit
底层初始化,本例空
Phase2Inits_enter
底层初始化,本例空
Phase2Inits_exit
创建主任务
代码片段:
int ret; ret = OSATaskCreate(&lora_rtx_task_ref, lora_rtx_task_stack, LORA_RTX_TASK_STACK_SIZE, 120, "lora_rtx_task", lora_rtx_task, NULL); ASSERT(ret == OS_SUCCESS); sample_lora_rtx_uart_printf("Phase2Inits_exitn");
_task
主任务,代码发分为两部分,一部分是发送不定长数据;另一部分是上电后等待其它模块发送的数据,收到后打印到串口。
代码片段:
while(1) { //这里实现了发送任意长度的字节,可以使用另一个模块来接收 // sample_gpio_sleep(3); // dev_lora_module_packet_init(strlen("1234567980")); // dev_lora_send("1234567980", strlen("1234567980")); // sample_gpio_sleep(3); // dev_lora_module_packet_init(strlen("abcdefghijklmnopqrstuvwxyz")); // dev_lora_send("abcdefghijklmnopqrstuvwxyz", strlen("abcdefghijklmnopqrstuvwxyz")); //这里实现了接收其它模块发来的数据 status = OSAMsgQRecv(lora_data_msgq, (void *)&rcv_data, sizeof(LORA_RCV_DATA_MSG_T), OSA_SUSPEND); if (status == OS_SUCCESS) { if(NULL != rcv_data.data) { sample_lora_rtx_uart_printf("lora data len:%d %sn", rcv_data.len, rcv_data.data); free(rcv_data.data); rcv_data.data = NULL; } } }
4.6 固件
4.6.1 实现每隔3s发送不定长数据
点击下载 Lora Demo固件
4.6.1 实现接收其它lora模块的数据
点击下载 Lora Demo固件
注:本文部分内容来源于网络,如有侵权,请及时联系我们。
本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki:Cellular IoT Wiki 知识库(https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf)
欢迎同学们走进AmazIOT知识库的世界!
这里是为物联网人构建的技术应用百科,以便帮助你更快更简单的开发物联网产品。
Cellular IoT Wiki初心:
在我们长期投身于蜂窝物联网 ODM/OEM 解决方案的实践过程中,一直被物联网技术碎片化与产业资源碎片化的问题所困扰。从产品定义、芯片选型,到软硬件研发和测试,物联网技术的碎片化以及产业资源的碎片化,始终对团队的产品开发交付质量和效率形成制约。为了减少因物联网碎片化而带来的重复开发工作,我们着手对物联网开发中高频应用的技术知识进行沉淀管理,并基于 Bloom OS 搭建了不同平台的 RTOS 应用生态。后来我们发现,很多物联网产品开发团队都面临着相似的困扰,于是,我们决定向全体物联网行业开发者开放奇迹物联内部沉淀的应用技术知识库 Wiki,期望能为更多物联网产品开发者减轻一些重复造轮子的负担。
Cellular IoT Wiki沉淀的技术内容方向如下:
奇迹物联的业务服务范围:基于自研的NB-IoT、Cat1、Cat4等物联网模组,为客户物联网ODM/OEM解决方案服务。我们的研发技术中心在石家庄,PCBA生产基地分布在深圳、石家庄、北京三个工厂,满足不同区域&不同量产规模&不同产品开发阶段的生产制造任务。跟传统PCBA工厂最大的区别是我们只服务物联网行业客户。
连接我们,和10000+物联网开发者一起降低技术和成本门槛
让蜂窝物联网应用更简单~~
哈哈你终于滑到最重要的模块了,
千万不!要!划!走!忍住冲动!~
欢迎加入飞书“开源技术交流群”,随时找到我们哦~
点击链接如何加入奇迹物联技术话题群(https://rckrv97mzx.feishu.cn/docx/Xskpd1cFQo7hu9x5EuicbsjTnTf)可以获取加入技术话题群攻略
Hey 物联网从业者,
你是否有了解过奇迹物联的官方公众号“eSIM物联工场”呢?
这里是奇迹物联的物联网应用技术开源wiki主阵地,欢迎关注公众号,不迷路~
及时获得最新物联网应用技术沉淀发布
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !