3 软件操作指引
3.1 按键
ED-GWL2110包含1个用户自定义按键,在设备内部,连接到CPU的GPIO23管脚,默认状态下为高电平,当按键按下时,该管脚为低电平。
可使用raspi-gpio命令进行查询按键对应GPIO的状态。
- 按键未按下时,查询GPIO23管脚
raspi-gpio get 23
GPIO 23: level=1 fsel=0 func=INPUT
level为1表示GPIO23管脚为高电平。
- 按键按下时,查询GPIO23管脚
raspi-gpio get 23
GPIO 23: level=0 fsel=0 func=INPUT
level为0表示GPIO23管脚为低电平。
3.2 LED指示灯
ED-GWL2110包含一个RGB三色LED指示灯,相连的GPIO管脚对应如下:
| RGB LED管脚 | 对应GPIO |
|---|---|
| 蓝色 | GPIO11 |
| 绿色 | GPIO12 |
| 红色 | GPIO13 |
GPIO输出为低时,对应LED有效。
支持使用raspi-gpio命令进行查询GPIO的状态。
- 配置参数为op,表示设置为输出;
- 配置参数为dl,表示设备管脚为低电平;
- 配置参数为dh,表示设置管脚为高电平。
LED显示为蓝色
sudo raspi-gpio set 11 op dl
sudo raspi-gpio set 12 op dh
sudo raspi-gpio set 13 op dh
LED显示为绿色
sudo raspi-gpio set 11 op dh
sudo raspi-gpio set 12 op dl
sudo raspi-gpio set 13 op dh
LED显示为红色
sudo raspi-gpio set 11 op dh
sudo raspi-gpio set 12 op dh
sudo raspi-gpio set 13 op dl
LED显示为黄色
sudo raspi-gpio set 11 op dh
sudo raspi-gpio set 12 op dl
sudo raspi-gpio set 13 op dl
3.3 配置以太网IP
出厂默认为自动获取IP地址,如果需要重新配置IP,可通过NetworkManager工具来配置。
提示
出厂默认的Desktop和Lite操作系统已使能NetworkManager,可直接使用NetworkManager进行配置。
3.3.1 Raspberry Pi OS(Desktop)
在Desktop版本的操作系统中,建议使用图形化的NetworkManager工具来配置IP。
提示
Desktop版本的操作系统已默认安装NetworkManager图形化工具
前提条件:
已使能Wi-Fi功能。
操作步骤:
- 左键单击桌面右上角的
图标,在菜单中选择“Advanced Options→Edit Connections”。

- 在弹出的Network Connections窗格中选中要修改的连接名称,再单击下方的设置按钮。

- 在弹出的Editing Wired connection中选择IPv4 Settings配置页,按需设置IP地址。
- 如果要将IP设置为静态IP,则设置Method为Manual,在Addresses中增加一个条目并输入对应的IP地址信息。

- 如果要将IP设置为自动获取,则仅需要将Method设置为Automatic(DHCP)。

单击save返回至Network Connections,关闭页面。
在命令窗格中执行
sudo reboot命令,重启设备。
3.3.2 Raspberry Pi OS(Lite)
在Lite版本的操作系统中,支持通过命令行来配置IP。
前提条件:
已使能NetworkManager。
操作步骤:
设置静态IP地址
- 获取分配的IP地址、子网掩码和网关地址,例如IP地址为192.168.1.101/24,网关IP为192.168.1.1。
- 获取待修改的连接的名称,例如e167c45f-efed-3f8d-89a5-f2430f92fae8,可在命令窗格中执行如下命令查询连接名称。
nmcli c

- 在命令窗格执行如下命令,将对应连接的IP地址设置为已获取的IP地址。
sudo nmcli connection modify e167c45f-efed-3f8d-89a5-f2430f92fae8 ipv4.addresses 192.168.1.101/24 ipv4.method manual
- 执行如下命令,将网关IP设置为已获取的网关IP。
sudo nmcli connection modify e167c45f-efed-3f8d-89a5-f2430f92fae8 ipv4.gateway 192.168.1.1
设置自动获取IP
- 获取待修改的连接的名称,例如e167c45f-efed-3f8d-89a5-f2430f92fae8,可在命令窗格中执行如下命令查询连接名称。
nmcli c

- 执行如下命令,将对应连接的IP地址的方式设置自动获取IP。
sudo nmcli connection modify e167c45f-efed-3f8d-89a5-f2430f92fae8 ipv4.method auto
3.4 配置Wi-Fi (可选)
3.5 配置蓝牙 (可选)
3.6 配置 4G (可选)
3.7 配置存储设备(SD卡)
3.8 配置 RTC
3.9 GNSS
ED-GWL2110网关集成L76K GPS模块,其与CPU的UART0串口相连。模块通过NMEA 0183通用协议输出语句上报GNSS信息。
3.9.1 引脚配置
- L76K GPS模块的WakeUp信号与GPIO4相连,拉低该管脚模块将进入待机模式,拉高或悬空该管脚模块将返回连续模式。
- Reset信号与GPIO5相连,拉低该管脚并持续100ms将复位模块。
- SET信号与GPIO6相连,用于配置卫星组合。
- 当该管脚为悬空或高电平时,卫星组合为GPS和北斗;
- 当管脚为低电平时,卫星组合为GPS和GLONASS。
| 编号 | Signal | CM4 Pinout |
|---|---|---|
| 1 | GPS_WakeUp | GPIO4 |
| 2 | GPS_Reset | GPIO5 |
| 3 | GPS_Set | GPIO6 |
3.9.2 修改config.txt使能串口
- 执行如下命令,打开
config.txt文件。
sudo nano /boot/config.txt
在文件的末尾在最后面添加“enable_uart=1”。
输入
ctrl+o保存配置文件,再按Enter,最后输入ctrl+x退出配置文件。
3.9.3 查看GNSS信息
sudo cat /dev/ttyS0
显示GPS数据如下:
$BDGSV,3,1,11,04,29,117,20,10,,,19,16,75,160,,24,51,328,,0*4C
$BDGSV,3,2,11,25,,,27,26,,,21,34,12,198,,35,45,063,,0*76
$BDGSV,3,3,11,39,62,159,17,41,,,25,59,44,137,,0*7A
$GNRMC,053557.000,A,3027.47401,N,11424.34027,E,1.17,186.64,070223,,,A,V*05
$GNVTG,186.64,T,,M,1.17,N,2.17,K,A*2D
$GNZDA,053557.000,07,02,2023,00,00*4F
$GPTXT,01,01,01,ANTENNA OPEN*25
$GNGGA,053558.000,3027.47438,N,11424.34119,E,1,07,1.5,75.0,M,-14.1,M,,*52
$GNGLL,3027.47438,N,11424.34119,E,053558.000,A,A*4F
$GNGSA,A,3,07,08,16,31,195,,,,,,,,2.1,1.5,1.5,1*05
$GNGSA,A,3,04,39,,,,,,,,,,,2.1,1.5,1.5,4*39
$GPGSV,3,1,12,04,54,241,16,07,19,314,15,08,63,208,15,09,38,291,,0*67
$GPGSV,3,2,12,16,51,029,17,18,07,046,,21,08,175,,26,24,063,,0*6A
$GPGSV,3,3,12,27,77,065,,31,09,122,22,194,61,058,,195,46,125,21,0*66
NMEA 0183通用语句说明如下:
- BDGSV:可视北斗卫星信息
- $GNRMC:推荐的GNSS数据
- $GNVTG:相对地面航向和速度信息
- $GNZDA:时间和日期,UTC格式
- $GPTXT:文本传送
- $GNGGA:多星联合定位数据
- $GNGLL:地理位置纬度和经度
- $GNGSA:表示GNSS精度因子和有效卫星
- $GPGSV:可视的GNSS卫星
3.9.4 使用u-center工具查看定位信息
3.9.4.1 安装串口转网络工具ser2net
sudo apt-get update
sudo apt-get install ser2net
启用ser2net服务
ser2net配置文件为/etc/ser2net.yaml,默认已配置/dev/ttyS0,波特率为9600,无校验,对应的TCP端口为2000。
connection: &con0096
accepter: tcp,2000
enable: on
options:
banner: *banner
kickolduser: true
telnet-brk-on-sync: true
connector: serialdev,
/dev/ttyS0,
9600n81,local
3.9.4.2 检查ser2net端口转发服务
执行如下命令,查询ser2net是否已启动2000端口转发。
sudo netstat -ltnp | grep 2000
- 如果已启动端口转发,将显示如下信息。
tcp6 0 0 :::2000 :::* LISTEN 720/ser2net
- 如果无信息显示,则重启ser2net服务。
sudo systemctl restart ser2net
配置定位
下载u-center工具并安装,如果提示缺少MSVCR120.dll文件,请安装vcredist_x86.exe。
打开u-center,选择“Receiver”→“Connection”→“Network connection”→“New…”。

- 输入设备IP和端口号2000。

- 配置完成后会显示GPS定位信息。

- 如果Fix Mode显示为No Fix,表示未能成功定位,一般是由于天线在室内的原因造成,请将模块或天线置于户外进行试验。

注意
模块首次定位,在户外没有大型建筑遮挡的情况下,大概需要30秒才能定位成功,如果天气条件恶劣,可能需要更长的定位时间或无法定位。
3.10 LoRaWAN
ED-GWL2110支持LoRaWAN和开源服务平台ChirpStack,下文介绍具体的安装和配置。
提示
仅以US915 LoRa网关模块为例进行介绍。
3.10.1 Chirpstack客户端
设备在出厂时已安装firmware包、LoRa模块包以及chirpstack软件包,可通过dpkg -l | grep ed-命令检查对应的LoRa模块包。
如用户需要重新安装操作系统,请参考安装操作系统章节。
3.10.2 修改配置文件
3.10.2.1 修改json配置文件
- 执行如下命令,启动
ed-lora.service。
sudo systemctl enable --now ed-lora.service
- 执行如下命令,获取json配置文件的路径。
systemctl status ed-lora.service

- 执行如下命令,打开json文件。
sudo nano /opt/ed-lora/conf/global_conf.json.US915
- 在文件底部删除
"gps_i2c_path": "/dev/i2c-1"。

3.10.2.2 修改chirpstack配置文件
- 执行如下命令,打开配置文件。
sudo nano /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge.toml
修改如下部分的内容:
- 修改
udp_bind = "0.0.0.0:1700"为udp_bind = "0.0.0.0:1680" - 在gateway前添加网关型号:
- 修改
event_topic_template="gateway/{{ .GatewayID }}/event/{{ .EventType }}"为event_topic_template="us915_0/gateway/{{ .GatewayID }}/event/{{ .EventType }}"。 - 修改
command_topic_template="gateway/{{ .GatewayID }}/command/#"为command_topic_template="us915_0/gateway/{{ .GatewayID }}/command/#"。
- 修改
提示
如果您使用EU868或CN470模块,请将前缀
us915_0修改为eu868_0或cn470_10。- 修改
执行如下命令,重启对应的服务。
sudo systemctl daemon-reload
sudo systemctl restart chirpstack-gateway-bridge.service ed-lora.service
3.10.3 Chirpstack服务端
Chirpstack服务端可以部署在当前设备上,也可以部署在同一局域网内的设备上。本文档以在当前设备上部署为例。(如部署在局域网内的其它设备上,请修改3.10.2.2 修改chirpstack配置文件中udp_bind的0.0.0.0为该设备的IP)
- 部署Chirpstack服务端前,请执行如下命令安装docker-compose。
sudo apt install docker-compose -y
- 采用docker容器的方式部署ChirpStack服务端。
git clone https://github.com/chirpstack/chirpstack-docker.git

- 对
chirpstack-docker的docker-compose.yml进行配置。
cd chirpstack-docker
nano docker-compose.yml
- 对
chirpstack-gateway-bridge部分进行注释。
services:
chirpstack:
image: chirpstack/chirpstack:4
command: -c /etc/chirpstack
restart: unless-stopped
volumes:
- ./configuration/chirpstack:/etc/chirpstack
depends_on:
- postgres
- mosquitto
- redis
environment:
- MQTT_BROKER_HOST=mosquitto
- REDIS_HOST=redis
- POSTGRESQL_HOST=postgres
ports:
- "8080:8080"
# chirpstack-gateway-bridge:
# image: chirpstack/chirpstack-gateway-bridge:4
# restart: unless-stopped
# ports:
# - "1700:1700/udp"
# volumes:
# - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
# environment:
# - INTEGRATION__MQTT__EVENT_TOPIC_TEMPLATE=eu868/gateway/{{ .GatewayID }}/event/{{ .EventType }}
# - INTEGRATION__MQTT__STATE_TOPIC_TEMPLATE=eu868/gateway/{{ .GatewayID }}/state/{{ .StateType }}
# - INTEGRATION__MQTT__COMMAND_TOPIC_TEMPLATE=eu868/gateway/{{ .GatewayID }}/command/#
# depends_on:
# - mosquitto
chirpstack-gateway-bridge-basicstation:
image: chirpstack/chirpstack-gateway-bridge:4
restart: unless-stopped
command: -c /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge-basicstation-eu868.toml
ports:
- "3001:3001"
volumes:
- ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
depends_on:
- mosquitto
chirpstack-rest-api:
image: chirpstack/chirpstack-rest-api:4
restart: unless-stopped
command: --server chirpstack:8080 --bind 0.0.0.0:8090 --insecure
ports:
- "8090:8090"
depends_on:
- chirpstack
postgres:
image: postgres:14-alpine
restart: unless-stopped
volumes:
- ./configuration/postgresql/initdb:/docker-entrypoint-initdb.d
- postgresqldata:/var/lib/postgresql/data
environment:
- POSTGRES_USER=chirpstack
- POSTGRES_PASSWORD=chirpstack
- POSTGRES_DB=chirpstack
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --save 300 1 --save 60 100 --appendonly no
volumes:
- redisdata:/data
mosquitto:
image: eclipse-mosquitto:2
restart: unless-stopped
ports:
- "1883:1883"
volumes:
- ./configuration/mosquitto/config/:/mosquitto/config/
volumes:
postgresqldata:
redisdata:
提示
用户可通过修改mosquitto部分配置mqtt服务。

3.10.4 启动chirpstack服务端
执行如下命令,在部署chirpstack服务端的设备上启动chirpstack服务端。
sudo docker-compose up -d

3.10.5 登录chirpstack服务管理界面
3.10.5.1 浏览器登录
- 在PC端浏览器输入服务器的IP地址和端口号:http://localhost:8080,

- 在登录界面输入用户名和密码。
提示
默认的用户名为admin,默认密码为admin。

3.10.5.2 获取LoRa网关ID
- 执行如下命令,查看对应的LoRa文件。
systemctl status ed-lora.service

- 执行如下命令,查看LoRa网关的ID。
cat /opt/ed-lora/conf/global_conf.json.US915 | grep gateway

提示
在chirpstack服务端添加LoRa网关时,需要填加对应的网关ID。
3.10.5.3 添加LoRa网关
- 在PC端浏览器打开chirpstack管理界面,单击“Gateway” -> “Add gateway”。

- 单击“add”。

- 填入设备对应的Gateway ID,并设置Name,然后单击“Submit”。如果网络连接正确,稍等片刻即可看到添加的网关变为Online状态。


3.10.5.4 添加设备配置
单击“Device Profile” -> “Add device profile”,补充设备信息。

3.10.4.5 添加应用
单击“Applications” -> “Add application”。

3.10.4.6 添加设备
LoRa终端产品的DevEUI和AppKey均由LoRa终端设备制造商提供。
- 单击“Application” -> “your application” -> “Add device”,添加LoRa终端设备。



- 等待几分钟后,可看到设备变成online状态。

3.11 加密芯片
ED-GWL2110板载ATECC608加密芯片,它连接到i2c-1总线,器件默认地址为0x60。
atecc: https://github.com/wirenboard/atecc-util
atecc -b 1 -c 'serial'
