lora sx1268 sx1302通信与实际测试结论
Posted 为了维护世界和平_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lora sx1268 sx1302通信与实际测试结论相关的知识,希望对你有一定的参考价值。
概念
Lora是一种无线通信的调频技术
特点
• 低功耗:
• 通信距离远:城镇可达2-5 Km , 郊区可达15 Km,
• 抗干扰强:LoRa抗干扰性能是比较优秀的,但是通信距离远,功耗又低,抗干扰又强,这三者是不可能三角距离较近容易出现信号干扰,造成丢包
• lora网关:基站,接收节点数据。基站使用有线或者无线网络将数据转发。
• 节点:节点之间可以通信
lora频率范围: 470-510
sx1268\\sx1302 芯片范围:470-490,
天线范围,中心频点490,增益3dbi
网关、节点的容量
sx1268 单通道、sx1302 8通道
数据发送时间
使用SX1261Calculator_setup.exe工具,计算一个包发送的时间
- SF小,发送的时间短,意味着相同的时间内,可以发送更多的数据
- 发送数据越长,时间越大
- 数据长度是阶梯形状上涨;例如:20 21 22 字节长度 发送时间是相同的
例如2s发送一次数据的节点容量
Sx1268的容量 = 通道数*(2s*1000/每个包发送的时间)
Sx1302的容量:8通道,并且有不同的扩频因子。不同的扩频因子下,不同的通道的数据是不干扰的。
总容量 = sf5(容量)+sf6(容量)+sf7(容量) + sx12(容量)
SF越小,频率越高,发送越快
SF越大,灵敏度越小,可接收到的距离越远
理论计算
工具下载链接
信号值与信号衰减
1)影响信号的因素
2)介质损耗
3)信号值的参考
4)
- lora节点模块间不能靠的太近,容易产生干扰
- 天线位置和放置的角度对信号有影响,天线需要根据实际的结构空间进行定制(将中心频点拉正)
通信距离实测
基站安装在与节点平行高度
金属的实际测试
测试方法:使用天花板,铝扣板制作一个封闭空间,测试铝扣板对信号的影响
测试结论:金属遮挡有严重衰减,大约-20dbm
节点到节点通信
硬件:两块sx1268
使用串口通信
参数:
发送方的发送频点 = 接收方的接收频点
SF 发送与接收需要使用相同的扩频因子
程序理解
sx1268
SPI接口,收发函数
static void transfer(int fd, uint8_t const *tx, uint8_t const *rx, size_t len)
int ret;
struct spi_ioc_transfer tr =
.tx_buf = (unsigned long)tx,
.rx_buf = (unsigned long)rx,
.len = len,
.delay_usecs = delay,
.speed_hz = SPI_SPEED,
.bits_per_word = bits,
;
ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);//只有一组
if (ret < 1)
pabort("can't send spi message");
sx1302
packforward 启动脚本
#!/bin/sh
# This script is intended to be used on SX1302 CoreCell platform, it performs
# the following actions:
# - export/unpexort GPIO23 and GPIO18 used to reset the SX1302 chip and to enable the LDOs
#
# Usage examples:
# ./reset_lgw.sh stop
# ./reset_lgw.sh start
# GPIO mapping has to be adapted with HW
#
#
SX1302_RESET_PIN=64
SX1302_POWER_EN_PIN=60
WAIT_GPIO()
sleep 1
init()
# setup GPios
echo "$SX1302_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$SX1302_POWER_EN_PIN" > /sys/class/gpio/export; WAIT_GPIO
# set GPIOs as output
echo "out" > /sys/class/gpio/gpio$SX1302_RESET_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$SX1302_POWER_EN_PIN/direction; WAIT_GPIO
reset()
#echo "CoreCell reset through GPIO$SX1302_RESET_PIN..."
#echo "CoreCell power enable through GPIO$SX1302_POWER_EN_PIN..."
#write output for SX1302 CoreCell power_enable and reset
echo "1" > /sys/class/gpio/gpio$SX1302_POWER_EN_PIN/value; WAIT_GPIO
echo "1" > /sys/class/gpio/gpio$SX1302_RESET_PIN/value; WAIT_GPIO
echo "0" > /sys/class/gpio/gpio$SX1302_RESET_PIN/value; WAIT_GPIO
#echo "1" > /sys/class/leds/hy_stationboard_rola0_power/brightness; WAIT_GPIO
#echo "1" > /sys/class/leds/hy_stationboard_rola0_rest/brightness; WAIT_GPIO
#echo "0" > /sys/class/leds/hy_stationboard_rola0_rest/brightness; WAIT_GPIO
term()
# cleanup all GPIOs
if [ -d /sys/class/gpio/gpio$SX1302_RESET_PIN ]
then
echo "$SX1302_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$SX1302_POWER_EN_PIN ]
then
echo "$SX1302_POWER_EN_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
case "$1" in
start)
#term # just in case
init
reset
;;
stop)
reset
term
;;
*)
echo "Usage: $0 start|stop"
exit 1
;;
esac
exit 0
以上是关于lora sx1268 sx1302通信与实际测试结论的主要内容,如果未能解决你的问题,请参考以下文章
LoRa模块SX1278/SX1262/SX1268/SX1212的参数对比
Lora 模块E22-400T22D(SX1268, 22dBm)