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

电子说

1.3w人已加入

描述

项目介绍

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

开发环境

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

PCBA示意图

ESP32

固件烧录

接线

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

ESP32

Note:

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

烧录软件

1.下载flash_download_tool_3.9.6_2

2.选择芯片和下载方式ESP32

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

ESP32

配置

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

配置

ESP32

  • 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 //支持修改,支持修改的字符串中有

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分