ESP32+SX1302=目前市场上最低成本LORAWAN网关=成本低于300元

2024-07-24

项目介绍

本项目是ESP32+SX1302,做成LoRaWAN 多通道GW,支持packet-forward

开发环境

  • IDF:V5.2.1
  • IDE:VSCode+ESP-IDF插件

PCBA示意图

ESP32+SX1302=目前市场上最低成本LORAWAN网关=成本低于300元 (https://ic.work/) 技术资料 第1张

固件烧录

接线

1.烧录程序时接这个口,ESP32烧程序是先让设备进入烧录模式(先按住BOOT0按键,然后按下EN按键,此时ESP32重启,进入烧录模式,然后松开BOOT0按键,ESP32停留在烧录模式)

ESP32+SX1302=目前市场上最低成本LORAWAN网关=成本低于300元 (https://ic.work/) 技术资料 第2张

Note:

  1. 如果使用ESP-PROG,板上带有自动进入boot模式的功能,烧录时可以不用按按键进入boot模式

烧录软件

1.下载flash_download_tool_3.9.6_2

2.选择芯片和下载方式
ESP32+SX1302=目前市场上最低成本LORAWAN网关=成本低于300元 (https://ic.work/) 技术资料 第3张

3.配置下载地址和bin文件,点击start开始下载

ESP32+SX1302=目前市场上最低成本LORAWAN网关=成本低于300元 (https://ic.work/) 技术资料 第4张

配置

WEB 配置

设备上电会进入AP模式

设备内置一个web端,可用于对设备进行配置

设备首次上电WIFI会进入AP模块,AP模式下设备配置如下

# AP模式下WIFI配置
SSID:LoRaGW-xxxxxx 
password:loragwwifi

xxxxxx为SN的后6位

WEB端地址:192.168.4.1

用户需要再配置网关的区域、频点、网关ID、packet-forward转发地址,网关ID默认会根据MAC地址自动生成,可以不用修改

网关的频点是通过修改radio0和radio1来实现的,8个频点和radio0,radio1的映射,不同地区会不一样

CN470(通常radio0与radio1相差800KHZ,默认radio=470600000Hz,radio1=471400000Hz)
freq0 = RADIO0-300KHz,默认为470.3MHz
freq1 = RADIO0-100KHz,默认为470.5MHz
freq2 = RADIO0+100KHz,默认为470.7MHz
freq3 = RADIO0+300KHz,默认为470.9MHz
freq4 = RADIO1-300KHz,默认为471.1MHz
freq5 = RADIO1-100KHz,默认为471.3MHz
freq6 = RADIO1+100KHz,默认为471.5MHz
freq7 = RADIO1+300KHz,默认为471.7MHz
EU868(默认radio=867500000Hz,radio1=868500000Hz)
freq0 = RADIO1-400KHz	默认为868.1MHz
freq1 = RADIO1-200KHz	默认为868.3MHz
freq2 = RADIO1			默认为868.5MHz
freq3 = RADIO0-400KHz	默认为867.1MHz
freq4 = RADIO0-200KHz	默认为867.3MHz
freq5 = RADIO0			默认为867.5MHz
freq6 = RADIO0+200KHz	默认为867.7MHz
freq7 = RADIO0+400KHz	默认为867.9MHz
US915(默认radio=904300000Hz,radio1=905000000Hz) //US915_1
freq0 = RADIO0-400KHz	默认为903.9MHz
freq1 = RADIO0-200KHz	默认为904.1MHz
freq2 = RADIO0			默认为904.3MHz
freq3 = RADIO0+200KHz	默认为904.5MHz
freq4 = RADIO1-300KHz	默认为904.7MHz
freq5 = RADIO1-100KHz	默认为904.9MHz
freq6 = RADIO1+100KHz	默认为905.1MHz
freq7 = RADIO1+300KHz	默认为905.3MHz

chan_LoRa_Std = radio0+300Khz,默认为904.6MHz

命令行配置

设备支持命令行进行配置,请使用putty或XSHELL进行

  • 串口配置为115200,8,N,1
ESXP1302_GW > 
ESXP1302_GW > help
pkt_fwd  [-h] [--restore] [--host=< UDP Host >] [--port=< UDP Port >] [--gwid=< gateway id >]
  ESP32 packet forwarder based on sx1302_hal
     --restore  clean NVS config
    -h, --help  print help
  --host=< UDP Host >  UDP Host
  --port=< UDP Port >  UDP Port
  --gwid=< gateway id >  Gateway Id

ifconfig
  printf network status

reboot
  reboot the system

help  [< string >]
  Print the summary of all registered commands if no arguments are given,
  otherwise print summary of given command.
      < string >  Name of command

如上,可通过设备pkt_fwd命令进行设置

  • pkt_fwd,用于配置设备pkt_fwd相关的信息
  • ifconfig,用于查看所有网卡的信息

    ESXP1302_GW > 
    ESXP1302_GW > ifconfig
    
    =========ifconfig===========
    --------if:ppp prio:20--------
    link:   NET_UP
    ip:     10.145.122.176
    mask:   255.255.255.255
    gw:     10.64.64.64
    dns1:   218.85.157.99
    dns2:   218.85.157.99
    IMEI:   860761079936981
    IMSI:   460115210945489
    ICCID:  89860322245923849833
    CSQ/BER:  23/0
    --------if:eth prio:50--------
    link:   LINK_DOWN/NET_DOWN
    MAC:    66:e8:33:49:ba:47
    ip:     0.0.0.0
    mask:   0.0.0.0
    gw:     0.0.0.0
    dns1:   218.85.157.99
    dns2:   218.85.157.99
    --------if:ap prio:10--------
    MAC:    64:e8:33:49:ba:45
    ip:     192.168.4.1
    ssid:   esp32
    pswd:   esp32wifi
    =========ifconfig end===========
    
  • reboot,用于设备重启
  • help,查看帮助说明

LoRaWAN NS

测试用NS,域名:lora.ansitw.com,IP:106.52.124.231

WEB端地址:106.52.124.231:8080

包转发地址:

  • CN470 :106.52.124.231:1700
  • EU868 :106.52.124.231:1701
  • US915_0 :106.52.124.231:1702
  • US915_1 :106.52.124.231:1703

网关测试

发送测试

test_hal_tx -r 1250 -f 506.5 -s 12 --pwid 22 -n 10

-r:指定射频前端芯片为1250

-f:发送的频点(MHz)

-s:SF

–pwid 22:

接收测试

test_hal_rx -r 1250 -a 475.5 -b 476.5

WEB配置

总体概述

  • GW Info,网关信息查看
  • Configuration,网关配置查看和修改
  • Maintenance,维护页(设备升级、恢复出厂设备)

ESP32+SX1302=目前市场上最低成本LORAWAN网关=成本低于300元 (https://ic.work/) 技术资料 第5张

配置

ESP32+SX1302=目前市场上最低成本LORAWAN网关=成本低于300元 (https://ic.work/) 技术资料 第6张

  • WIFI STA,支持WIFI接入点方式连接网络
  • Management MQTT,用来配置管理通道的MQTT参数

    • 支持ThingsBoard
    • 支持标准MQTT

验收测试方法

  1. 烧录程序,可正常烧录
  2. 烧录后,重新上电,RUN指示灯,0.5s间隔闪烁
  3. 连接设备的WIFI热点(ssid:LoRaGW-xxxxxx 密码:loragwwifi),浏览器输入(http://192.168.4.1),可看到设备的配置页面
  4. 测试以太网,将设备接入路由器,设备能以DHCP方式获取到IP,说明以太网功能正常
  5. 设备联网后,SX1302和GNSS模块启动,将设备的GWID(GWID默认为SN)录入到NS服务器,可在NS服务器上看到网关上线,说明SX1302功能正常
  6. 插入4G SIM,拔掉网线,4G正常获取到IP地址,说明4G功能正常
  7. 将GNSS放到室外有GNSS信号的地方,可以获取到经纬度和海拔,说明GNSS功能正常
  8. 至此,各硬件功能都验证完成,测试通过

网关配置通道

标准MQTT通道

配置通道通过MQTT进行数据交互,其中设备发往服务器的通道称为上行通道,服务器发往设备的通道称为下行通道

其中:

  • 上行Topic:up/gw/{SN}/0
  • 下行Topic:dn/gw/{SN}/0

例如网关的SN:64e833fffe5909d8,那么上下行通道分别为

  • 上行Topic:up/gw/64e833fffe5909d8/0
  • 下行Topic:dn/gw/64e833fffe5909d8/0

网关会周期性地通过上行通道发送周期心跳包

服务器也可以通过下行通道,向网关下发数据

周期包

{
	"pkt": "periodUplink" 
"GWInfo": { "SN": "64e833fffe5909d8"
"SoftwareVersion": "V1.0.1"
"HardwareVersion": "V1.0.0" }, "Staus": { "GPSValid": true
"Latitude": 24.000000
"Longitude": 120.000000
"Altitude": 0.000000
"Cellular": {}, "Ethernet": {}, "WIFI": { "Link": "NET_UP"
"IPMode": "DHCP"
"MAC": "64:e8:33:59:09:d8"
"IP": "192.169.4.12"
"Mask": "255.255.255.0"
"GW": "192.169.4.1"
"DNS1": "192.169.4.1"
"DNS2": "192.169.4.1" } }, "Configuration": { "STA": { "Enable": false
"SSID": ""
"Password": "" }, "Management": { "MQTT": { "Enable": true
"URL": "mqtt://broker.emqx.io"
"ClientID": "64e833fffe5909d8"
"UplinkTopic": "up/gw/64e833fffe5909d8/0"
"DownlinkTopic": "dn/gw/64e833fffe5909d8/0" } }, "LoRaWAN": { "Region": "cn470"
"Radio0": "470600000"
"Radio1": "enable"
"NsHost": "lora.ansitw.com"
"NsPort": "1700"
"GatewayID": "64e833fffe5909d8" } } }

更改网关配置

直接修改Configuration中的内容,下发下来即可

{
	"pkt": "downlink" 
"Configuration": { "STA": { "Enable": false
"SSID": ""
"Password": "" }, "Management": { "MQTT": { "Enable": true
"URL": "mqtt://broker.emqx.io"
"ClientID": "64e833fffe5909d8"
"UplinkTopic": "up/gw/64e833fffe5909d8/0"
"DownlinkTopic": "dn/gw/64e833fffe5909d8/0" } }, "LoRaWAN": { "Region": "cn470"
"Radio0": "470600000"
"Radio1": "enable"
"NsHost": "lora.ansitw.com"
"NsPort": "1700"
"GatewayID": "64e833fffe5909d8" } } }

回复:

{
	"pkt": "downlinkRespone" 
“result”:"success" }

重启

{
	"pkt": "downlink" 
"cmd": { "reboot": true } }

回复

{
	"pkt": "downlinkRespone" 
“result”:"success" }

升级

{
	"pkt": "downlink" 
"cmd": { "upgrade": "http://192.169.4.53/esp32_sx1302.bin" } }

回复(收到升级命令)

{
	"pkt": "downlinkRespone" 
“result”:"success" }

ThingsBoard MQTT通道

配置通道通过MQTT进行数据交互,网关发送数据给云平台称为uplink,云平台发送命令给网关称为downlink

有两条链路:

  1. 网关主动发送数据

    • telemetry_uplink

      • 设备每隔一段时间会发送心跳包
      • 设备在上电和配置信息更改时,会发送配置信息
  2. 云平台发送命令给网关

    • request_downlink,云平台发送命令给网关
    • respone_uplink,网关回复数据给云平台

      其中:

  • telemetry_uplink_topic:v1/devices/me/telemetry //支持修改,支持修改的字符串中有

审核编辑 黄宇

文章推荐

相关推荐