通知设置 新通知
SX1301网关已开启了lorawan_server和lrgateway服务,查询loraway_server提示说Active:failed
lorawan • 雪梨君 回复了问题 • 2 人关注 • 1 个回复 • 1785 次浏览 • 2018-07-14 13:08
LPMD002用户手册--SDK使用开发指南
lorawan • 雪梨君 发表了文章 • 2 个评论 • 4916 次浏览 • 2018-05-30 17:20
1本文目的
通过本文的说明介绍用户将了解和熟悉LPMD002节点模块的SDK开发使用流程。
注:本文默认用户已经熟悉IAR软件的安装和使用方法以及相关仿真下载工具的使用,故这方面内容不在本文说明范围之内,下同。
2 SDK开发环境
IAR6.20 FOR ARM
3.1完全符合LoraWan 1.0.1协议标准
3.2支持ClassA和ClassC协议
3.3支持ABP和OTAA激活
3.4支持上下行双向通信
3.5支持低功耗
4 SDK使用方法
IAR6.20 FOR ARM
LPKT002-SDK-V2.00\IAR\loranode.eww
4.4编译工程:
结果如下所示,
该头文件定义了lorawan的基础配置参数,如下:
宏定义 | 说明 |
#define OVER_THE_AIR_ACTIVATION | 1-OTAA激活 0-ABP激活 |
#define LORAWAN_PUBLIC_NETWORK | True-公开网络 False-私有网络 |
#define LORAWAN_DEVICE_EUI | DEVICE_EUI,8字节 |
#define LORAWAN_APPLICATION_EUI | APPLICATION_EUI,8字节 OTAA模式和ABP模式均需要设置 |
#define LORAWAN_APPLICATION_KEY | APPLICATION_KEY,16字节 OTAA模式需要设置 |
#define LORAWAN_NETWORK_ID | 网络ID |
#define LORAWAN_DEVICE_ADDRESS | 设备地址,4字节 ABP模式需手动设置 |
#define LORAWAN_NWKSKEY | NWKSKEY,16字节 |
#define LORAWAN_APPSKEY | APPSKEY,16字节 ABP模式需要设置 |
4.5.2头文件“LoRaMac-definitions.h”及信道
该头文件定义了lorawan的基础通信配置的参数,其中根据不同频段参数有所不同,
使用频段为USE_BAND_470(标准CN470~510频段),
根据lorawan协议的设计通过:
#define LORA_MAX_NB_CHANNELS 96
可知该频段总共支持96个上行信道,具体的信道配置如下:
for( uint8_t i = 0; i < LORA_MAX_NB_CHANNELS; i++ )
{
Channels.Frequency = 470.3e6 + i [i] 200e3; //ast c
Channels[i].DrRange.Value = ( DR_5 << 4 ) | DR_0;
Channels[i].Band = 0;
}
即从470.3Mhz开始,信道间隔200Khz,489.3Mhz结束。
由lorawan协议可知与96上行信道对应的下行信道只有48个,从500.3Mhz开始,信道间隔200Khz,509.7Mhz结束
#define LORAMAC_FIRST_RX1_CHANNEL ( (uint32_t) 500.3e6 )
#define LORAMAC_LAST_RX1_CHANNEL ( (uint32_t) 509.7e6 )
通过下面函数与上行信道对应,
RxWindowSetup( LORAMAC_FIRST_RX1_CHANNEL + ( Channel % 48 ) LORAMAC_STEPWIDTH_RX1_CHANNEL, RxWindowsParams[0].Datarate, RxWindowsParams[0].Bandwidth, RxWindowsParams[0].RxWindowTimeout, false );
其中利用( Channel % 48 )将上行信道分为0~47和48~95,分别与下行的信道的0~47对应。
另外还有1个固定的下行RX2信道
#define RX_WND_2_CHANNEL { 505300000, DR_0 }
实际单sx1301网关只有8上行信道,所以需要设置sdk的信道掩码,只开启需要的信道即可,
如图所示LoRaMacParamsDefaults.ChannelsMask数组元素为uint16_t类型,其中每1bit代表一个信道,所以该6个长度的数组,总共可代表16*6=96个信道,并且每一元素都是LSB,即
0x00FF;//bit 15~0
0x0000;//bit 31~16
0x0000;//bit 47~32
0x0000;//bit 63~48
0x0000;//bit 79~64
0x0000;//bit 95~80
所以在本例中LoRaMacParamsDefaults.ChannelsMask[0] = 0x00FF;表示只使用0~7信道。
本sdk功能是OTAA自动入网,10S间隔,按确认上行方式发送数据,默认工作流程如下:
该函数执行基础硬件初始化,其中BoardUnusedIoInit( ); 该函数为低功耗处理用的IO配置函数,为满足低功耗,不用使用的IO应做如下处理:
GpioInit( &ioPin, UNUSEDPINPA0, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 );
其中的串口相关配合如下:
此处串口收发均采用fifo+irq方式处理,用户可以更改。
串口接受处理如下:
建议采用状态机方式进行数据接受。
该函数为状态机式主循环,主循环根据以下状态机依次执行,
l DEVICE_STATE_INIT状态:最主要的初始化以下三个回调函数,
LoRaMacPrimitives.MacMcpsConfirm = McpsConfirm;
用户上行确认类事件,如确认上行,非确认上行回复的处理等,通信流程在此处理
LoRaMacPrimitives.MacMcpsIndication = McpsIndication;
下行通知类事件,如接受应答,读取数据包rssi,snr等,接受数据处理均在该函数中进行,如下
LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm;
系统上行类事件,如join请求处理,linkcheck请求处理等,主要处理OTAA 入网
l DEVICE_STATE_JOIN状态:根据OVER_THE_AIR_ACTIVATION宏定义决定采用OTAA还是ABP入网,然后从Comissioning.h头文件中读取数据进行配置,默认配置如下:
l DEVICE_STATE_SEND:
周期发送数据,10S
发送函数
该发送调用通过
准备好的数据,可以修改AppData数组更改发送的数据
l DEVICE_STATE_CYCLE:
自动开启定时器
l DEVICE_STATE_SLEEP:
低功耗函数
TimerLowPowerHandler( );
该函数内部由USE_DEBUGGER宏定义控制是否真正进入低功耗状态,
关于低功耗:
除了上文介绍的IO口处理,其他如IIC,UART,SPI,HSEIO,LSEIO等程序本身可以控制的都在低功耗前关闭,唤醒后开启。
SDK给出了示例可以参考,如下图所示:
低功耗除了程序本身外,还取决于硬件设计的,如使用有源晶振,无源晶振,IO外置的上下拉电阻等,本司另提供LPMD003小体积低功耗高性能lorawan模块,有意可联系客户。
LPGWMD002用户手册--硬件设计开发指南
lorawan • 雪梨君 发表了文章 • 0 个评论 • 3520 次浏览 • 2018-05-30 17:08
LPGWMD002是一款10通道 (8 x Multi-SF + 1 x Standard LoRa + 1 x FSK) LoRa/LoRaWAN网关和集中器模块。模块上提供了miniPCIE接口,用户可以利用此接口将嵌入式系统主板与LPGWMD002相连接,快速开发出自定义网关。
LPGWMD002的硬件设计有硬件SPI接口和通过FT232HQ进行虚拟SPI转换的USB接口,模块出厂均为硬件SPI接口模式(支持和接受出厂定制为USB接口1)。
LPGWMD002模块支持和接受定制化的频段需求2,模块出厂默认是的频段是CN470~510Mhz。
注1,2:根据订货信息下单或联系工作人员。
模块采用标准MINIPCIE52PIN引脚定义:
序号 | 名称 | 类型 | 说明 |
2,6,48,52 | VDD | PW | 电源+5V |
4,9,15,18,21,26-29,34,35,40,50 | GND | PW | 地 |
8 | GWM-RESET | I/O | 高电平复位,高电平保持时间>100ns,该引脚内部下拉电阻10KΩ。 |
10 | GWM-SCK | I/O | SX1301 SPI-SCK |
12 | GWM-MISO | O | SX1301 SPI-MISO |
14 | GWM-MOSI | I | SX1301 SPI-MOSI |
16 | GWM-CS | I/O | SX1301 SPI-CS |
39 | GPIO4 | I/O | SX1301 GPIO4 |
41 | GPIO3 | I/O | SX1301 GPIO3 |
43 | GPIO2 | I/O | SX1301 GPIO2 |
45 | GPIO1 | I/O | SX1301 GPIO1 |
47 | GPIO0 | I/O | SX1301 GPIO0 |
51 | PPS | I/O | GPS PPS 信号输入 |
36 | USBD-(DM) | I/O | FT232HQ USBD-(DM) |
38 | USBD+(DP) | I/O | FT232HQ USBD+(DP) |
1,3,5,7,11,13,17,19-20,22-25,28,30-33,37,42,44,46,49 | RESERVER | NC | 保留(空) |
3.1模块外边框尺寸为40x62.5mm±0.2mm,定位孔直径为2.6mm,接口等详细位置见下图:
3.2MiNiPCIE封装顺序定义(正面图):
3.3MiNiPCIE封装顺序定义(反面图):
3.4MiNiPCIE金手指封装定义(参考标标准miniPCIE尺寸):
3.5建议配套使用的插座型号:
天线接口为射频连接器,要求天线的特征阻抗为50欧姆。
模块采用标准SMA作为输出天线接口,在天线满足阻抗,增益,频段等参数的条件下,用户可以很据自己的需要自由选配天线。
5.1绝对最大电气值:
注意:为避免输入功率过大,当发射端功率>模块最大输入功率15dBm时,应保持收发两端距离>1米。
5.2通用电气参数:
5.3IO口电气参数:
5.4SPI电气参数:
6.1输出功率参数配置:
6.2输出特性
6.3接收性能参数:
参考上图:
7.1模块使用SPI接口时只需要将5V电源及地以及RESET,SCK,MOSI,MISO,CS连接至相应的HOST主机上即可;
7.2模块使用USB接口时只需要将5V电源及地以及USBDM,USBDP连接至相应的HOST主机上即可。
注:VDD电源需满足5V/1A的供电要求。
LPGWMD002用户手册--软件设计开发指南
lorawan • 雪梨君 发表了文章 • 0 个评论 • 3200 次浏览 • 2018-05-30 16:59
LPGWMD002支持硬件SPI或USB方式连接LinuxHost主机构成lorawan网关,下面将分别对这两种使用场景进行说明,帮助用户快速熟悉模块的使用和操作流程。
本文还将对模块驱动代码工程进梳理,有利于客户进行优化和二次开发。
2.1基础概念
下图是lorawan网络的基础系统构架,其中LPGWMD002是lorawan网络的核心模块,由它进行无线数据的收发;但是部分协议处理的相关工作由外部的Host主机系统以及lorawanserver完成。
2.2 Host主机系统
参考上图需要由Host主机系统配合LPGWMD002来构成Gateway(此处我们假设用户已经准备好了linux(包括嵌入式linux)系统的Host主机系统,如Raspberry PI或类似的系统,同样我们假设用户对基础的linux操作已经熟悉,包括命令行操作、代码编译操作等)。
本文所有的操作及使用均在Debian 8 “Jessie” Linux发型版上进行,依赖的硬件平台为Raspberry PI3 B+或CM3。虽然本文操作均在Raspberry PI上进行,但是在其他类似的linux系统同样也适用,但是可能有些微小差别(本文不负责解释和说明)。
参考《LPGWMD002-miniPCIE接口sx1301模块-硬件设计开发指南-V1.00.pdf》文档第7节之7.1所述将模块与LinuxHost主机,此处根据需要使用硬件SPI或者USB接口,注意电源供电需满足条件。
Semtech提供了开源的sx1301驱动代码,并将其存储在( https://github.com/ )上,github仓库地址(https://github.com/Lora-net ),此处存放所有官方提供的lorawan相关的代码资源,本文所有用到的驱动代码为:
https://github.com/Lora-net/lora_gateway
注1:本文所用的SPI驱动版本为3.2.1,其他版本可参考本文以及github文档自行处理,恕不通知。
注2:本文所用的USB驱动版本为3.0.1,该版本为最后支持USB驱动的固件版本之一,在此之后官方删除了对USB的支持。
2.5.1获取源码
A)sudo apt-get install git
B)mkdir -p ~/LoRa/lora_gateway
C)cd ~/LoRa/lora_gateway
D)git clone https://github.com/Lora-net/lora_gateway.git
2.5.2Host主机系统配置
E)驱动源码需要使用主机系统的 “native” SPI,源码中的设备名为 “/dev/spidev0.0”,通过以下一系列操作开启主机系统的“native” SPI,最后需要重启生效:
sudo raspi-config->Advanced Options->SPI->YES->sudo reboot
F)配置完SPI接口还需配置RESET控制引脚,此处需要编写一个脚本文件,假设使用 Raspberry Pi 的 GPIO 17 (pin 11)作为RESET引脚,内容如下:
#!/bin/bash
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
echo "1" > /sys/class/gpio/gpio17/value
sleep 5
echo "0" > /sys/class/gpio/gpio17/value
sleep 1
echo "0" > /sys/class/gpio/gpio17/value
然后保存为“LPGWMD002-SPI_reset.sh”,以后每次Raspberry Pi重启后需手动执行该复位脚本,使sx1301正常复位后开始工作。
2.5.3驱动配置
通过修改ora_gateway/libloragw/library.cfg中的相关配置,可以打印相关信息,用于测试和调试
DEBUG_AUX = 0
DEBUG_SPI = 0
DEBUG_REG = 0
DEBUG_HAL = 0
DEBUG_GPS = 0
只需将相应的项设置成=1即可开始相关调试信息。
2.5.4编译驱动
G)cd ~/LoRa/lora_gateway
H)make
执行完该命令后将在目录“lora_gateway\libloragw”编译生成 “libloragw.a” 备用,以及测试程序如:“test_loragw_reg”,“test_loragw_hal”等,可以之后测试sx1301硬件寄存器功能等‘
将在“lora_gateway”下再生成“lora_gateway\util_tx_test”等目录可以用于测试sx1301通信功能,如:
A)cd lora_gateway/util_tx_test
B)./util_tx_test –r 1255 –f 471.5
执行完后将按如下所示参数进行周期数据发送。
Sending -1 packets on 471500000 Hz (BW 125 kHz, SF 10, CR 1,
16 bytes payload, 8 symbols preamble) at 14 dBm, with 1000 ms
between each
INFO: concentrator started, packet can be sent
Sending packet number 1 ...OK
Sending packet number 2 ...OK
Sending packet number 3 ...OK
...
其他不在赘述,更详细内容请参考每个文件夹下的“readme.md”说明文件。
2.6.1安装扩展驱动
LPGWMD002通过USB连接到Host主机,需要安装“libmpsse”驱动。
A)sudo apt-get update
B)sudo apt-get install git --assume-yes
C)sudo apt-get install libftdi-dev --assume-yes
D)mkdir –p ~/LoRa/libmpsse
E)cd ~/LoRa/libmpsse
F)wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libmpsse/
libmpsse-1.3.tar.gz
G)tar zxvf libmpsse-1.3.tar.gz
H)cd libmpsse-1.3/src
I)./configure --prefix=/usr --disable-python
J)make
K)sudo make install
L)cd /etc/udev/rules.d
M)sudo wget N)https://raw.githubusercontent.com/mirakonta/lora_gateway/master/libloragw/99-libftdi.rules
O)sudo udevadm control --reload-rules
P)sudo udevadm trigger
2.6.2获取源码
R)sudo apt-get install git
S)mkdir -p ~/LoRa/lora_gateway
T)cd ~/LoRa/lora_gateway
U)git clone https://github.com/Lora-net/lora_gateway.git
2.6.3驱动配置
通过修改ora_gateway/libloragw/library.cfg中的相关配置,可以打印相关信息,用于测试和调试
CFG_SPI= ftdi
CFG_BRD= ref_1301_868
此处为源码中对应的硬件版本号,只是一个宏定义,在此默认它就是LPGWMD002。
DEBUG_AUX = 0
DEBUG_SPI = 0
DEBUG_REG = 0
DEBUG_HAL = 0
DEBUG_GPS = 0
只需将相应的项设置成=1即可开启相关调试信息。
2.6.4编译驱动
同2.5.4所述,不再赘述。
3 lora_gateway源码结构及HAL库使用说明
本文使用https://github.com/Lora-net/lora_gateway仓库中V5.0.1版本进行说明。
是配合Semtech的SX1301AP2参考设计所用的文件。
是sx1301的HAL层(LoRa concentrator Hardware Abstraction Layer),通过这个C库用户可以通过API调用实现对sx1301的配置以及数据收发,这个HAL层由以下6(8)个子模块构成,
目录是lora_gateway\libloragw\src:
l loragw_hal:主模块,包含高等级函数来配置和使用集中器
l loragw_reg:这个模块用来操作集中器的寄存器
l loragw_spi:通过SPI接口来操作集中器的寄存器
l loragw_aux:包含一个主机需要的wait_ms函数,用于指定ms的延时
l loragw_gps:通过基准时基来同步集中器内部计数,例如例程中的GPS授时。
l loragw_radio:配置 SX125x 和 SX127x。
l loragw_fpga (only for SX1301AP2 ref design):SX1301AP2参考设计才需要,用于操作FPGA的寄存器,以及配置FPGA功能。
l loragw_lbt (only for SX1301AP2 ref design):SX1301AP2参考设计才需要,用于配置和使用LBT功能。
文件lora_gateway\libloragw\library.cfg用来配置HAL库调试信息的输出,
DEBUG_AUX = 0
DEBUG_SPI = 0
DEBUG_REG = 0
DEBUG_HAL = 0
DEBUG_LBT = 0
DEBUG_GPS = 0
如需输出某种打印信息将DEBUG_xx置成 = 1即可。
3.3目录lora_gateway\util_xx_xx类似的文件
均为使用通过API调用HAL库的例子程序,这些例子同样可以做为测试功能使用。
l lora_gateway\util_lbt_test:这个软件用来测试“Listen-Before-Talk”的信道时间戳。
l lora_gateway\util_pkt_logger:这个软件用来让sx1301使用JSON配置文件,以及将所有的包记录于一个log文件。
l lora_gateway\util_spectral_scan:这个软件用来扫描基站工作环境的频谱。
l lora_gateway\util_spi_stress:这个软件通过Host主机读取sx1301的寄存器文件来检测的连接的稳定性。
l lora_gateway\util_tx_continuous:这个软件用来设置sx1301为持续TX模式,用于频谱测试。
l lora_gateway\util_tx_test:这个软件用来做发包测试。包里有少量非协议格式信息,但可以用来检测基站下行功能,需要使用另一台基站来做接收。
3.4文件lora_gateway\reset_lgw.sh
他是依赖于特定平台的通过GPIO口复位sx1301的脚本文件,需要在每次使用sx1301功能前执行此脚本复位芯片。
3.5.1软件细节
这个库按照ANSI C99进行编写。loragw_aux模块中的ms精确延时含有POSIX格式函数,嵌入式平台可以用硬件定时器进行重写。
library.cfg 中 DEBUG_xxx 如果置为1,则会用 fprintf 输出对应的调试信息。
对于交叉编译,需要设置 Makefile 中的 ARCH 和 CROSS_COMPILE 变量,或者在 shell 环境中,使用正确的工具链名字和路径。
例如:
l export PATH=/home/foo/rpi-toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH
l export ARCH=arm
l export CROSS_COMPILE=arm-linux-gnueabihf-
libloragw目录下的Makefile会解析 library.cfg 文件,产生一个config.h的C头文件,包含 #define 选项。那些选项会使能或禁用loragw_xxx.h 文件和 .c 原文件中的代码。library.cfg 也用来直接选择动态链接库。
注:树莓派系统自带编译和以直接编译本文代码。
如果想在其他系统使用编译后的库,你需要导出这些文件:
l libloragw/library.cfg -> 根配置文件
l libloragw/libloragw.a -> 静态库
l libloragw/readme.md -> license要求
l libloragw/inc/config.h -> 从 library.cfg 衍生出的C配置标志
l libloragw/inc/loragw_.h -> 你需要用到的头文件 (例如. _hal and _gps)
在这个库链接到你的应用之后,只有 license 文件要求在程序文件中拷贝和保留。
3.6.1 设置软件环境
对一个典型应用,你需要这么做:
l 源码中包含 loragw_hal.h
l 编译时链接 libloragw.a 静态库文件
l 由于 loragw_aux 的依赖关系,需要链接 librt 库
如果应用需要直接访问集中器配置寄存器的话(例如做些高级配置),你还需要这样做:
l 源码中包含 loragw_reg.h
3.6.2 使用软件API
要在你的应用中使用 HAL,需要遵守如下规则:
l 在射频启动之前需要配置好 radios path 和 IF+modem path
l 只有在调用了 start 函数之后,配置才会传送给硬件
l 只有在 radio 使能,同时IF+modem 使能,以及集中器启动后,才能接收数据包。
l 只有在 radio 使能,以及集中器启动后,才能发送数据包。
l 改变配置之前,必须停止集中器。
一个对HAL的典型应用流程图如下:
<configure the radios and IF+modems>
<start the LoRa concentrator>
loop {
<fetch packets that were received by the concentrator>
<process, store and/or forward received packets>
<send packets through the concentrator>
}
<stop the concentrator>
注意:lgw_send 在LoRa集中器仍然发包时,或者即使在准备开始发包时,是非阻塞立即返回。当有数据包在发送时,将无法收到任何数据。你的应用需要考虑发包的时长,或者在尝试发包前检查下状态(使用 lgw_status)。当前一包未完成时立即发一包,会导致前一包无法发送,或者发送部分(会导致接收端出现CRC错误)。
3.7.1 硬件版本
loragw_reg 和 loragw_hal 是针对Semtech硬件编写的程序:
Semtech SX1301 芯片
Semtech SX1257 or SX1255 收发器
如果硬件版本和库版本不匹配的话,这个库将无法使用。你可以用 test_loragw_reg 来测试软硬件是否匹配。
loragw_spi 的SPI函数适合平台相关的,如果你用别的SPI接口可能需要重写这个函数:
SPI master matched to the Linux SPI device driver (provided)
SPI over USB using FTDI components (not provided)
native SPI using a microcontroller peripheral (not provided)
你可以用 test_loragw_spi 来测试SPI通信。
为了使用库中的GPS模块,主机必须要通过串口连接GPS接收器,串口连接必须以“tty”设备出现在 /dev/ 目录,启用这个程序的用户必须用读写这个设备的权限。使用 chmod a+rw 来允许所有用户能操作指定的tty设备,或者使用sudo来运行你的程序(例如. sudo ./test_loragw_gps)。
当前版本,库只从串口读取数据,在GPS接收器上电后会收到他们发出NMEA帧 以及 u-blox 模块私有的 UBX 消息。
GPS接收器必须在发出PPS脉冲后发出UBX消息,让内部集中器的时间戳可以用GPS时基校准。如果GPS接收器发出了GGA NMEA语句,gateway则可以进行3D定位。
如何配置和使用STlink给 LPTD001烧录固件
lorawan • 雪梨君 发表了文章 • 0 个评论 • 2488 次浏览 • 2018-05-30 16:27
1 硬件连接
如下图,正确连接 转接板、排线(注意排线的接插方向)、节点电源线(节点需要供电)
2驱动及STM32 ST-LINK Utility安装
2.1安装软件路径:
2.2驱动安装
请根据电脑系统版本选择相应的驱动文件,安装过程略。
2.3 STM32 ST-LINK Utility软件安装
STM32 ST-LINK Utility集成开发环境的安装比较简单(基本上就是一路Next下去)。还是按照常规安装教程(截图)讲述一下吧,以上面下载的“STM32 ST-LINK Utility v4.0.0 setup.exe”软件为例讲述。
操作系统要求:
Windows XP、Windows 7、Windows 10
256M内存及以上、30M硬盘以上
1.解压软件,双击“STM32 ST-LINK Utility v4.0.0.exe”,进入准备安装(解压)过程。
2.进入安装向导,点击“Next”。
3.同意许可,点击“Yes”。
4.选择安装路径(这里默认),点击“Next”。
5.进入安装过程,不到一分钟时间。
6.安装最后提示“安装驱动”,点击“下一步”,最后点击“完成”安装完成。
7.点击“Finish”完成上位机软件及ST-LINK驱动的安装。
8.查看版本:打开软件-> Help - > About, 可以看见版本是更新了的。
2.4、基本使用方法
1.Keil和IAR生成hex的配置
STM32 ST-LINK Utility软件主要是下载程序(可执行hex文件),因此需要编程工具生成hex文件才行,下面将讲述常用工具Keil和IAR生成hex的配置。
A.Keil生成hex配置
Project ->Options for Target -> Output 勾选上“Create HEX File”(如下图)
B.IAR生成hex配置
Project ->Options -> Output Coverter -> 勾选上“Generate additional output”、选择输出格式为“Intel extended”,再次设置输出名称就配置好了(如下图)。
2.读取STM32内部FLASH及芯片信息
使用ST-Link连接硬件(STM32芯片),打开STM32 ST-LINK Utility软件,连接芯片:Tarage -> connect或直接点击连接快捷按钮(如下图)。
【读取FLASH信息的前提是没有添加读保护】
点击“连接按钮”之前可以设置读取FLASH的起始地址、读取长度和数据显示的宽度。
3.打开程序(hex)
在上一步连接好芯片,并正确识别芯片之后,打开需要下载的程序(hex)文件。打开hex文件可以从菜单栏(File -> Open File)打开,也可以直接讲hex文件拖动到FLASH区域(就像从电脑复制文件到U盘一样)。
4.下载程序(hex)
在上一步打开hex文件完成之后,点击“下载”(可以Taraget -> Program,也可以直接点击下载快捷按钮,如下图)
弹出信息确认窗口,如hex文件路径、验证方式等,确认信息无误后点击“Start”开始下载程序。
【如:我将可执行hex文件命名为“ExecutableFile.hex”,位于桌面】
下载过程时间长短与程序大小有关,一般都很快,出现“Verification...OK”,说明下载成功。
如何在网关侧查看数据流等调试信息
lorawan • 雪梨君 发表了文章 • 1 个评论 • 2360 次浏览 • 2018-05-30 15:48
注:以下操作均以假设用户了解linux相关开发操作为前提。
1、使用ftp工具登录网关并在下图路径下找到gps_pkt_fwd.c文件,并下载此文件。
2、打开gps_pkt_fwd.c文件,定位找出下图标注的两行代码,取消注释,如下图。保存后,上传替换掉原文件。
3、ssh登录并重启网关,重新连接网关。
4、如下图使用make命令编译lrgateway。
5、编译完成后,执行 sudo systemctl stop lrgateway.service 命令,关闭lrgateway自动服务。
6、执行./gps_pkt_fwd手动开启lrgateway服务。
7、此时节点发送数据,就会打印出网关上行与下行的调试信息,如下图。(前提是按照指导手册已经完成节点及NS相关配置并且已经可以完成节点ns的双向通信测试)
关于lora的七个你不得不知的“谣言”
lorawan • 雪梨君 发表了文章 • 0 个评论 • 3199 次浏览 • 2018-05-30 13:58
LoRa和LoRaWAN作为低功率广域网(LPWAN)的典型代表正迅速引起全球的关注,网关正在世界各地涌现。 对于普通大众来说,LoRa的能力和潜力不是神秘就是完全不可思议。 是时候消除一些关于LoRa和LoRaWAN的“谣言”了。
1、Lora就是Lorawan ?!
LoRaWAN是基于网络的通信协议和系统架构,而LoRa是实现远距离通信链路的物理无线电层。 LoRaWAN协议和网络架构直接影响节点的电池寿命,网络容量,服务质量,安全性以及网络服务的各种应用。
LoRa是将数据调制为电磁波的技术。 它使用一种称为CSS(Chirp Spread Spectrum)扩频技术的传输方法,对频率调制的“chirps”中的数据进行编码。这种传输方法已用于军事和太空通信几十年。
2、Lora信号不能真正传输10KM?!
在典型的LoRaWAN网络中,覆盖范围取决于许多因素:室内/室外部署,消息的有效负载,使用的天线等。平均而言,在部署有室外网关的城市环境中,您可以预期长达2至3公里 全覆盖,而在农村地区可以达到5到7公里。 在极限条件下,可以达到 702 km!
(请参考
https://www.thethingsnetwork.org/article/ground-breaking-world-record-lorawan-packet-received-at-702-km-436-miles-distance)
LoRa的范围取决于““radio line-of-sight”。400-900 MHz范围的无线电波可能会“绕射”一些障碍物,但会被吸收或反射。理论上 这意味着只要没有物理障碍阻挡它,信号就可能达到地平线。 提高LoRa设备的高度 - 例如将它们放置在屋顶或山顶上,将最大化它们的通信范围。其他因素,如天线增益,也将对通信范围产生巨大影响。
3、现在没有办法使终端设备工作10年以上?!
LoRaWAN的独特功能之一是电池寿命长。 为了达到这个目的,设备通常被编程为当不传送消息时进入深度睡眠模式,从而最大限度地延长电池寿命。 当然任何节点的寿命仍然取决于电池的容量,但长时间睡眠会大大延长充电周期。
另外,基于LoRa TM扩频调制技术,它的远距离优势得益于调制增益,而不是靠增大发射功率(那将消耗更多电能)。该射频芯片的电流消耗如下:休眠<0.2uA,空闲=1.6mA,接收=12mA,发射(最大功率)=120mA.
4、lorawan安全性不高?!
安全一直是任何无线技术的重要方面。 LoRaWAN利用两层安全性:一个用于网络,另一个用于应用程序。 网络安全确保了网络中节点的真实性,而应用层的安全性确保了网络运营商无法访问最终用户的应用数据。
另外一个好处是低功耗CSS扩频信号非常难以检测和截取。
5、我必须付费使用lorawan 系统?!
如果你是一个LoRaWAN爱好者,全球范围内有一个开放免费平台“The Things Network”,
全球500多个城市有超过24,000开发者在使用。在网络覆盖范围内,你只需要一个终端设备就可以免费接入lorawan网络。 如果您在没有覆盖的地区,您也可以随时设置一个基站接入网络。当然国内有类似的平台,给开发者提供免费试用。
此外,你也可以使用自己的电脑随时搭建一个属于自己的lorawan NS 服务器,快速启动自己的物联网应用。
6、如果没有GPS接收机无法实现lorawan节点定位跟踪功能?!
LoRaWAN可以为低功耗广域网提供定位解决方案,为一系列电池供电的应用终端提供所需的位置信息。任何正在工作的LoRaWAN终端都支持定位功能,而不需要增加额外的BOM成本,并且不需要额外的处理能力。
当一个LoRaWAN终端的上行数据被三个或三个以上基站接收到,那么它就可以被定位。这些上行数据并不需要是特定的位置信息,它们可以普通的LoRaWAN数据帧结构。多个基站同时接收到相同的上行数据,则终端的位置信息就可以通过多点定位技术得到。下图是多点定位的过程示意图。
7、随着NBIOT的普及lora将没有自己的生存空间?!
LoRa与NB-IoT并不只是竞争,说起LoRa,很多人会将其与NB-IoT做对比,因为两者都是国内目前最具代表性的LPWAN技术,它们的技术参数差异不大,难免会让人进行 “既生瑜、何生亮”的对比。但事实上,LoRa与NB-IoT之间的关系并不是简单的竞争,如果说,LoRa在国内也有运营商级别覆盖的网络,这个时候可以理解为竞争关系,但事实上,国内LoRa并没有运营商的网络,这个时候LoRa更多的是担任对NB-IoT进行补充的角色,是合作的关系。
相比于NB-IoT提供主干网络,LoRa在未来的物联网时代更像是扮演一个“wifi”的角色,LoRa网络主要在两个层次对于NB-IoT网络进行补充。
第一个层次是物理空间进行网络覆盖补充,因为在未来的物联网应用场景中,有大量的应用是运营商的网络无法覆盖的,比如说地下管廊还有偏远山区等等,这些环境的网络连接就需要LoRa等网络连接更为合适。
第二个层次是商业层次的补充,物联网项目的商业需求复杂多变,有一些物联网项目并不需要公网,而是希望采用私有化的网络进行连接,更加符合自己的商业利益,比如说数据的安全性,成本的考虑等等,这个层次的商业需求也是LoRa网络相比于NB-IoT的优点所在。
LORAWAN开发中常见问题集锦(FAQ)-第一期
lorawan • 雪梨君 发表了文章 • 0 个评论 • 4550 次浏览 • 2018-05-30 13:15
1.问:什么是LoRa?
答:LoRa是低功耗广域网通信技术中的一种,是Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输技术,是Semtech 射频部分产生的一种独特的调制格式。 LoRa射频部分的核心芯片是SX1276和SX1278。这类芯片集成规模小、效率高,为LoRa无线模块带来高接收灵敏度。而网关芯片则采用的是集成度更高、信道数更多的SX1301。用SX1301作为核心开发出的LoRa网关,可以与许许多多的LoRa模块构成多节点的复杂的物联网自组网。
2.问:开发套件对开发者有何帮助呢?
答:用我们的套件可以评估和测试lorawan协议下的数据通信格式、通信距离、信号质量评估等;并且我们提供sx1301网关模块的设备驱动,用户可以将网关核心模块集成到兼容该驱动的任意linux系统上;同时提供终端节点的SDK,可用于二次开发。
其中终端节点SDK提供源代码,加速二次开发。
3.问:这个套件提供硬件原理图和芯片手册么?
答:提供网关应用扩展板原理图和芯片资料(包含芯片手册);终端节点提供接硬件接口引脚定义资料和原理图。
4.问:sx1301核心网关模块提供什么硬件接口?
答:模块带有USB和SPI接口用于和HOST主机的通信,USB和SPI两者二选一。
5.问:这套评估套件目前支持的工作频率是?
答:目前默认是470Mhz工作频段,如需其他频段请咨询客服。
6.问:sx1301核心网关模块可以和单片机通信么?比如STM32。
答:目前不支持直接和普通单片机通信,只能配合linux嵌入式开发平台使用。
7.问:sx1301核心网关模块接口定义是?
答:网关接口如下图,详细资料见套件配套光盘资料。
8. 网关和终端的通讯距离是是多少?
答:无遮挡5~8公里,市区情况下2~3公里。
9. 你们LoRAwan网关,理论上可以支持到多少个终端模块?
答:lorawan网关支持设备数量跟设备发包频次、数据包大小、平台处理能力等密切相关要综合考虑 ,理论支持10万。
10、购买你们的开发套件提供什么样的技术支持?
答:首先产品具有完备的技术使用手册,只要按照手册一步一步操作即可跑通流程,针对产品本身使用提供全程技术支持;其次针对终端节点提供SDK源码包供二次开发使用,提供基础使用指导服务,不提供具体开发指导服务;
11、 网关模块、终端模块是否可以单独购买?
答:单独的1301网关模块、终端节点模块原则上只针对批量用户和购买过套件的客户。
12、 贵公司是否承接项目定制开发?
答:我公司承接lorawan相关项目定制,需要出具需求文档,由技术人员评估后,再由商务人员跟您回复。
13、 网关模块是否支持连接其他网络服务器?
答:开发套件的网关是连接我们的网络服务器,如果连接至其他的网络服务器,需要在网关上安装与要连接的网络服务器对应的SDK,该工作由客户自己或网络服务器厂家完成。
14、 开发套件支持的lorawan协议版本是?
答:lorawan1.0.1
15、 开发套件实现了classA、classB、classC吗?
答:目前实现了classA和classC
16、你们网关源码 是官方github上开源的吗?
答:网关是基于官方github上源码优化的,解决了多个官方BUG并进行了多处优化。
17、我看你们这个套件里还有树莓派,你们是拿来做什么的?
答:树莓派是网关的主控板,基于linux系统的,用于控制SX1301网关模块。
18、你们的系统是必须要NS(网络服务器)才能使用的?NS(网络服务器)是否可以不用?
答:现在开发套件演示操作起来必须配合NS。如果需要省掉现有的NS有两个解决办法:
1,使用嵌入式本地NS,即在网关的linux主板板上实现嵌入式NS服务,如有需求请联系客服进行定制化开发服务;2,不使用lorawan协议,通过修改终端和网关应用代码,通过自有协议,实现类似功能。
19. 问:这个套件提供NS(网络服务器)么?
答:提供NS(网络服务器)云平台系统,并配合套件提供不一年使用期限的免费账号用于套件的评估测试。
20. 问:LoRa是扩频技术吗?
答:LoRa是一种扩频技术,但它不是直接序列扩频。直接序列扩频通过调制载波芯片来传输更多的频谱,从而提高编码增益。而LoRa调制与多状态FSK调制类似,使用未调制载波来进行线性调频,使能量分散到更广泛的频段。
21. 问: LoRa是Mesh网络、点对点传输还是星形网络?
答:LoRa调制技术本身是一个物理层(PHY layer)协议,能被用在几乎所有的网络技术中。Mesh网络虽然扩展了网络覆盖的范围,但是却牺牲了网络容量、同步开销、电池使用寿命。随着LoRa技术链路预算和覆盖距离的同时提升,Mesh网络已不再适合,故采用星形的组网方式来优化网络结构、延长电池寿命、简化安装。LoRa网关和模块间以星形网方式组网,而LoRa模块间理论上可以以点对点轮询的方式组网,当然点对点轮询效率要远远低于星形网。
22. 问:LoRa技术与SIGFOX,NWave的区别在哪里?
答:总的来说,LoRa技术采用的是一种扩频技术;SIGFOX公司使用窄带BPSK调制技术;NWave公司使用Weightless标准,与SIGFOX公司使用的技术较为相似。
目前使用超窄带技术的公司可供选择的收发器芯片较多,而LoRa仅能使用Semtech提供的芯片。
23. 问:什么是LoRa网关?
答:LoRa网关位处LoRa星形网络的核心位置,是终端和服务器(Server)间的信息桥梁,是多信道的收发机。LoRa网关有时又被称为LoRa基站或LoRa集中器,虽然定义不同,但其实是同一含义。
LoRa网关使用不同的扩频因子,不同的扩频因子两两正交因而理论上可以在同一信道中对多条不同扩频因子的信号进行解调。网关与网络服务器间通过标准IP进行连接,终端通过单跳与一个或多个网关进行通讯,所有的终端通讯都是双向通讯,同时也支持软件远程升级等。
目前来说,定义不同,网关类型也不同。例如,按照应用场景不同可分为为室内型网关和室外型网关;按照通讯方式不同可分为全双工网关和半双工网关;而按照设计标准不同可分为完全符合LoRaWAN协议网关和不完全符合LoRaWAN协议网关。我们新一代网关为室外型,全双工,并且完全符合LoRaWAN协议。完全符合LoRaWAN协议的LoRa网关及LoRa终端能够实现互联互通,这具有很大意义!
24.问: LoRa网关的容量有多大?单个网关能连多少个终端?
答:网关容量是指在一定时间内网关接收数据包数量的能力。理论上来说,单个SX1301芯片拥有8个信道,在完全符合LoRaWAN协议的情况下最多每天能接收1500万个数据包。如果某应用发包频率为1包/小时,单个SX1301芯片构成的网关能接入62500个终端节点。当然,这只是一个理论值,网关接入终端数量最终还是与网关信道数量、终端发包频率、发包字节数和扩频因子息息相关。
25. 问: LoRa网关接入的节点数目取决于哪些因素?
答:LoRa网关接入的节点数取决于LoRa网关所能提供的信道资源以及单个LoRa终端占用的信道资源。LoRa网关如果采用Semtech标准参考设计,网关采用SX1301芯片,那么信道数是固定的8个上行信道1个下行信道。物理信道数确定了, LoRa网关所能提供的信道资源也就确定了。
单个LoRa终端占用的信道资源与终端占用信道的时间一致,也就与终端的发包频率、发包字节数以及LoRa终端的扩频因子息息相关。当LoRa终端的发包频率和发包字节数上升,该终端占据信道收发的时间就会增加,就占用了更多的信道资源。而当LoRa终端采用更大的扩频因子时,信号可以传的更远,但是代价是传递单位字节的信息会花费更多的时间。
26. 问:什么是LoRa终端或节点?
答:LoRa终端是LoRa网络的组成部分,一般由LoRa模块和传感器等器件组成。LoRa终端可使用电池供电,能够远程定位。每一个符合LoRaWAN协议的终端都能与符合LoRaWAN的网关直接通讯,从而实现互联互通。
27. 问:采用LoRa技术,我可以使用哪些ISM频段?
按理论来说,你可以使用150 MHz 到 1 GHz频段中的任何频率。但是Semtech的LoRa芯片并不是所有的sub-GHz的频段都可以使用,在常用频段(如433MHz,470MHz~510MHz,780MHz以及欧美常用的868MHz和915MHz都属于常用频段)以外的一些频率并不能很好的支持。目前在中国提供433MHz,470-510MHz频段网关。
28. 问:LoRa网关使用免费频段,会不会容易受到频率干扰?
答:抗干扰能力取决于LoRa技术本身的特性和网关的设计。LoRa技术本身拥有超高的接收灵敏度(RSSI)和超强信噪比(SNR)。以我们的LoRa网关与LoRa模块为例,其接收灵敏度达到惊人的-142dBm,而超强的信噪比可以让网关和终端工作在噪声门限以下20dB。此外,网关使用跳频技术,通过伪随机码序列进行频移键控,使载波频率不断跳变而扩展频谱,防止定频干扰。
29.问: LoRa的数据传输速率是多少?
答:LoRaWAN协议定义了一系列的数据传输速率,不同的芯片可供选择的速率范围不同,例如SX1272支持0.3-38.4kbps,SX1276支持0.018-38.4kbps的速率范围。目前我们能实现0.3-37.5kbps的传输速率。
30. 问:使用LoRa设备发送或接收的数据长度有限制吗?
有限制,理论来说SX127x系列芯片有256 Bytes的FIFO,发射或接收256 Bytes都行得通。 但是,并不是在任何传输速率下LoRa模块的负载长度都能为256 Bytes。在传输速率较低的情况下,一次传输256 Bytes需要花费的时间极长(可能需要花费几秒甚至更长),这不利于抗干扰和交互,因此在技术处理上一般建议用户将一条长数据分割成数条小数据来进行传输。
31. 问:什么是速率自适应(ADR)?
答:速率自适应(Adaptive Date Rate, ADR)是调整数据传输速率来保证可靠数据传输、优化网络性能、扩充网络容量的一种技术。当节点靠近网关时,数据传输速率可以更快、发射功率也更低。而在链路预算边缘处的节点,其数据传输速率更慢,发射功率更高。ADR方法能适应不同的网络构造,支持不同的路径损耗,可以最大化终端的电池使用寿命和整体的网络容量,LoRa网络能够从整体上管理每个终端的数据传输速率和扩频因子。
32. 问:就LoRa设备而言,其天线所能实现的发射功率是多少?
答:从芯片管脚输出的功率为+ 20 dbm,经过天线匹配/滤波损失一定功率,最终能输出的功率为+ 19 dbm + (-) 0.5 db。不同地区对最大输出功率有不同的规定, LoRaWAN协议定义了不同地区在最大化链路预算的情况下的不同输出功率。