目录
基础资料
基于Air103开发板:🚗 Air103 - LuatOS 文档
探讨重点
对官方社区库接口lora模块库调用及示例进行复现及分析,了解RF射频技术及LORA模组的基本原理及操作方法。
实现功能
基于air103+lora模组组合,进行远距离无线数据传输应答,板载LED显示通讯状态,串口工具实时监测数据收发情况。
软件及工具版本
LuatOS@AIR103 base 22.12 bsp V0015 32bit
LuatOS-SOC接口文档:lora驱动模块
数据手册:LLCC68-datasheet
硬件准备
Air103开发板2块,面包板2块, KT-FCC68 LORA模组2个,Air103板载LED2个(组1:绿色,组2:红色)个,导线若干。
接线
2组Air103与Lora模块分别连接,组成LORA-1#通信模块和LORA-2#通信模块。
Lora管脚丝印 | SPI功能 | Air103 PIN |
SCK | (PB2) | |
MISO | SPI0_MISO | (PB3) |
MOSI | SPI0_MOSI | (PB5) |
NSS | SPI0_CS | (PB4) |
SX NREST | res | (PB0) |
BUSY | busy | (PB1) |
DIO1 | dio1 | (PB6) |
GND | GND | GND |
VDD RFS | 3V3 | 3V3 |
供电电压:1.8-3.6 V,直接采用3V3开发板输出。
标准SPI接口,使用SPI0:
可参考:
管脚设置(设备初始化):
lora.init("llcc68",{id = 0,cs = pin.PB04,res = pin.PB00,busy = pin.PB01,dio1 = pin.PB06})
工具版本
Luatools 2.1.85
任意串口调试工具(本文使用llcom1.1.1.9,波特率9600)一、
一、什么是LoRa
LoRa是一种专用于远距离低功耗的无线通信技术,其调制方式相对于其他通信方式大大增加了通信距离,可广泛应用于各种场合的远距离低速率物联网无线通信领域。比如自动抄表、楼宇自动化设备、无线安防系统、工业监视与控制等。具有体积小、功耗低、传输距离远、抗干扰能力强等特点,可根据实际应用情况对天线增益进行调节。
本例中采用的KT-FCC68无线模块,基于美国Semtech 公司的射频芯片LLCC68。LLCC68 具有超过-129dBm 的高灵敏度,+22dBm 的功率输出,有LORA的加持下在抗干扰性能、通信距离都远超现在的FSK、GFSK 调制方式的产品,该模块具有体积小、功耗低、传输距离远、抗干扰能力强等特点,可广泛应用于物联网各种无线通信领域。由于传输距离增加,可以大幅减少中继器的使用,简化了系统设计
二、基本特性(摘自模块规格说明书)
● 频率范围:410MHz 到510MHz ● 最大输出功率:22dBm
● 最大工作电流140mA ● 休眠电流180nA
● 接受高灵敏度:129dBm@FSK 调制,速率1.2KBPS
● FSK、MSK、GFSK 和Lora TM 调制模式
● LoRa 模式下共道抑制19 dB ● 供电电压:1.8-3.6 V
● 数据传输率:@FSK,1.2-300kbps @Lora TM,1.76-62.5kbps
● 工作温度范围:-20 ~ +70°C
● 理想条件下,通信距离可达5km
● SPI 通信接口,可直接连接各种单片机使用
三、Air103+Lora模组使用及分析
2组Air103与Lora模块分别连接,组成1#通信模块和2#通信模块,硬件规格一致,便于调试。
sys.taskInit:
--频道设置
lora.set_channel(433000000)
--LORA模组发送参数配置
lora.set_txconfig("llcc68",
{mode=1,power=22,fdev=0,bandwidth=0,datarate=9,coderate=4,preambleLen=8,
fixLen=false,crcOn=true,freqHopOn=0,hopPeriod=0,iqInverted=false,timeout=3000}
)
--LORA模组接收参数配置
lora.set_rxconfig("llcc68",
{mode=1,bandwidth=0,datarate=9,coderate=4,bandwidthAfc=0,preambleLen=8,symbTimeout=0,fixLen=false,
payloadLen=0,crcOn=true,freqHopOn=0,hopPeriod=0,iqInverted=false,rxContinuous=false}
)
--1#模组开机或重启后发送信息(仅1次)
lora.send("lora1's first PING to lora2!!!")
sys.subscribe函数
采用sys订阅消息的方式,进行消息回调处理。
1#模组消息回调函数功能:
1#通信模块发送完毕后打开红灯(LEDA),循环接收2#模组发送信息(Here is Lora2!Received your PING!)完毕发送提示信息"Got message True (Here is LORA-1)!! "之后LEDA关闭,之后按周期重新执行。
主要代码:
sys.subscribe("LORA_TX_DONE", function()
LEDA(0)
lora.recive(1000)
end)
sys.subscribe("LORA_RX_DONE", function(data, size)
log.info("LORA_RX_DONE(lora1): ", data, size)
lora.send("Got message True (Here is LORA-1)!! ")
LEDA(1)
end)
2#模组消息回调函数功能:
2#通信模块发送完毕后打开绿灯(LEDB),循环接收1#模组发送信息(Got message True (Here is LORA-1)!!)完毕发送提示信息"Here is Lora2!Received your PING! "之后LEDB关闭,之后按周期重新执行。
主要代码:
sys.subscribe("LORA_TX_DONE", function()
LEDB(0)
lora.recive(900)
end)
sys.subscribe("LORA_RX_DONE", function(data, size)
log.info("LORA_RX_DONE(lora2): ", data, size)
lora.send("Here is Lora2!Received your PING! ")
LEDB(1)
end)
日志log
LORA-1#模组LOG:
[2022-12-24 13:20:12.245] AT+RESET
[2022-12-24 13:20:12.245]
[2022-12-24 13:20:12.245] OK
[2022-12-24 13:20:12.462] I/main auth ok 85104250303938373512007********* AIR103
[2022-12-24 13:20:12.462] I/main LuatOS@AIR103 base 22.12 bsp V0015 32bit
[2022-12-24 13:20:12.462] I/main ROM Build: Dec 19 2022 13:21:10
[2022-12-24 13:20:12.465] D/main loadlibs luavm 180208 11680 12168
[2022-12-24 13:20:12.465] D/main loadlibs sys 12288 5184 5184
[2022-12-24 13:20:12.465] I/user.mainlorademo1.0.0
[2022-12-24 13:20:13.253] I/user.LORA_RX_DONE(lora1): Here is Lora2!Received your PING! 34
[2022-12-24 13:20:14.000] I/user.LORA_RX_DONE(lora1): Here is Lora2!Received your PING! 34
[2022-12-24 13:20:14.749] I/user.LORA_RX_DONE(lora1): Here is Lora2!Received your PING! 34
[2022-12-24 13:20:15.511] I/user.LORA_RX_DONE(lora1): Here is Lora2!Received your PING! 34
[2022-12-24 13:20:16.241] I/user.LORA_RX_DONE(lora1): Here is Lora2!Received your PING! 34
[2022-12-24 13:20:16.989] I/user.LORA_RX_DONE(lora1): Here is Lora2!Received your PING! 34
[2022-12-24 13:20:17.752] I/user.LORA_RX_DONE(lora1): Here is Lora2!Received your PING! 34
[2022-12-24 13:20:18.595] I/user.LORA_RX_DONE(lora1): lora2's first PING to lora1!!!31
LORA-2#模组LOG:
[2022/12/24 13:20:18.2560] → I/main auth ok 85104250303938373506004A52145******** AIR103
I/main LuatOS@AIR103 base 22.12 bsp V0015 32bit
I/main ROM Build: Dec 24 2022 10:04:06
D/main loadlibs luavm 180208 11680 12168
D/main loadlibs sys 12288 5184 5184
I/user.mainlorademo1.0.0
[2022/12/24 13:20:39.7953] → I/user.LORA_RX_DONE(lora2): Got message True (Here is LORA-1)!! 36
[2022/12/24 13:20:40.5400] → I/user.LORA_RX_DONE(lora2): Got message True (Here is LORA-1)!! 36
[2022/12/24 13:20:41.2875] → I/user.LORA_RX_DONE(lora2): Got message True (Here is LORA-1)!! 36
[2022/12/24 13:20:42.0185] → I/user.LORA_RX_DONE(lora2): Got message True (Here is LORA-1)!! 36
[2022/12/24 13:20:43.1275] → I/user.LORA_RX_DONE(lora2): lora1's first PING to lora2!!!31
[2022/12/24 13:20:43.8763] → I/user.LORA_RX_DONE(lora2): Got message True (Here is LORA-1)!! 36
[2022/12/24 13:20:44.5916] → I/user.LORA_RX_DONE(lora2): Got message True (Here is LORA-1)!! 36