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)

基于HaaS100实现LoRa点对点通信

低功耗远距离lora模块:SX1262与SX1278SX1276射频无线收发器芯片对比分析以及选型指南

LoRa---她的芯片和她的几种工作模式

SX1261手册部分翻译