SIM7028-NB-IoT-HAT教程

资料


原理图

程序

软件

数据手册


相关应用案例

SIM7028 NB-I0T HAT 通过MQTT连接Aliyun物联网平台

[通过MQTT连接AWS IoT Core]


产品概述

本产品是一款具有NB-IoT(窄带物联网)功能的树莓派扩展板,具有低延时、低功耗、低吞吐量应用的最优解决方案,非常适用于如表计、远程控制、资产跟踪、远程监控、远程医疗、共享单车等物联网应用。

产品特性

  • 适用于Raspberry Pi Zero/Zero 2/2B/3B/3B+/4B
  • 支持TCP、UDP、LWM2M、COAP、DTLS、DNS、NTP、PING、HTTP(S)、MQTT(S)、TLS/SSL等功能
  • 板载Type-C接口,可用于软件调试等
  • 板载UART接口,可用于AT指令收发和更新固件
  • 引出控制引脚,可接入Arduino/STM32等主控板
  • 板载USB转UART芯片,可通过跳线帽设置UART通信引脚
  • 板载nano SIM卡槽,支持NB-IoT专用卡
  • 板载1个LED指示灯,方便查看模块运行状态(STA灯正常情况下显示扩展板运行情况,如考虑展示可定制添加STA指示灯)
  • 支持串口波特率范围2400bps ~ 460900bps (默认115200bps)
  • 支持AT命令控制(3GPP TS 27.007,27.005和SIMCOM增强型AT命令集)
  • 支持SIM应用工具包(SAT Class 3、GSM 11.11、USAT)
  • 提供完善的配套资料手册(Raspberry/Arduino等示例程序)

通信参数

  • 支持频段
    • B1/B2/B3/B4/B5/B8/B12/B13/B14/B17/B18/B19/B20/B25/B26/B28/B66/B70/B85 (支持电信/联通/移动的NB-IoT卡)
  • 传输功率
    • Class 3 (0.25W@LTE)
  • 数据传输
    • 上行:≤159Kbps
    • 下行:≤127Kbps

其他参数

  • 供电电压:2.2V~4.3V
  • 逻辑电压:5V / 3.3V (默认为3.3V)
  • 休眠模式电流:0.11mA(@DRX=2.56s)
  • 省电模式电流:0.8uA
  • 工作温度:-40°C ~ 85°C
  • 存储温度:-45°C ~ 90°C
  • 产品尺寸:30.2mm x 65mm

接口说明

VBAT

电源正(支持3.7V锂电池供电)

GND

电源地

RX

数据接收

TX

数据发送

WAKE

低功耗模式唤醒引脚,可通过下拉WAKE引脚唤醒SIM7028。降边唤醒,下拉WAKE引脚之后需要在10ms内向模块发送AT命令,否则进入休眠模式

RI

RI信号行为引脚默认高电平,当收到短信息或URC传出会有120ms低电平脉冲输出

RESET

复位引脚开机状态拉低电平可复位,关机状态无效

GND

电源地

BOOT

下载控制引脚,下拉此引脚复位模块可进入下载模式

跳线帽说明

A

USB—SIM7028

B

Pi—SIM7028

C

USB—Pi

指示灯说明

STA

  给模块的5V和GND供电时亮起

NET

  64ms亮/800ms熄灭——未注册上网络
  64ms亮/3000ms熄灭——已注册上网络
  64ms亮/300ms熄灭——数据传输时
  熄灭——关机或PSM/DRX/eDRX休眠模式

接入电脑调试

硬件连接

用户在使用SIM7028模块前除了Type-C USB线、LTE天线外,还需要另外准备以下东西:

  • 一张NB-IoT专用卡(电信、移动或联通)

接线说明:(如使用预留串口接TTL则需断开A跳线帽,若用Type C,直接跳A跳线帽即可)

SIM7028-NB-IoT HAT
5V
GND
RX1
TX1


硬件连接操作:

  1. 将NB-IoT卡安装到模块背面卡槽,并连接好LTE天线。(使用时须把 LTE天线 旋转到板子外侧)
  2. 将Type-C转USB接入电脑USB串口,给SIM7028模块供电。
  3. 使用配套的串口助手打开,选择对应的串口端口和波特率115200,勾选加回车换行,
  4. 打开扩展可看到实现录入的AT指令,点击对应的指令即可直接发送。

简单联网测试

下表列举一些常用AT指令,可以简单快速地检测SIM7028的AT串口通信和网络连接是否正常。
进行下文演示的联网通信实验前建议都先做简单联网测试,确认网络连接正常再操作。
相关的AT指令详细说明可参阅:SIM7022 Series_AT Command Manual。


命令

说明

返回值

AT

AT测试指令

OK

ATE

ATE1设置回显,ATE0关闭回显

OK

AT+CSQ

网络信号质量查询,返回信号值

OK

AT+CGMR

查询固件版本

OK

AT+CGREG?

查询网络注册状态

OK

AT+CGACT?

查询PDP状态

OK

AT+COPS?

查询网络信息

OK

AT+CGCONTRDP

查询网络状态

OK

AT+CFUN=0

关闭RF

OK

AT*MCGDEFCONT

配置APN,如:AT*MCGDEFCONT="IP","3GNET"

OK

AT+CFUN=1

开启RF

OK

通信类测试

TCP/IP通信

本文主要介绍SIM7028模块TCP/IP通信功能。

SIM7028模块支持透传模式(数据模式),非透传模式(命令模式)下支持直推模式和缓冲访问模式。

SIM7028 TCP/IP默认是多路client架构,共支持2路sockets,包括TCP或者UDP。


TCP/IP通信前,先根据上文“硬件配置”和“简单联网测试”操作,确保模块联网正常。

SIM7028模块TCP、UDP通信以及DNS解析和Ping功能。

(说明:AT指令详细说明可参阅:File:SIM7028 Series TCPIP Application Note V1.04.pdf,后续模组固件升级,对应的AT指令有可能更新。)

【Service】

相关指令:

AT指令

指令说明

返回值

AT+NETOPEN

开启Socket service

OK

AT+NETCLOSE

关闭Socket service

OK +NETCLOSE: 0

AT+CIPOPEN

多链接Socket service,最大连接数:2

OK

AT+CIPSEND

向指定连接(TCP、UDP)发送数据

OK

AT+CIPCLOSE

关闭Socket service

OK

AT+SERVERSTART

启动TCP server

OK

AT+SERVERSTOP

停止TCP server

OK

【HTTP Client】

相关指令:

AT指令

指令说明

返回值

AT+HTTPINIT

开启HTTP service

OK

AT+HTTPPARA=URL,https://spotpear.cn/

连接远端server

OK

AT+HTTPDATA=5,1000

输入数据

DOWNLOAD <键入 hello OK

AT+HTTPACTION=0

开始HTTP请求,0:GET;1:POST;2:HEAD;3:DELETE;4:PUT

OK

+HTTPACTION: 0,200,54

AT+HTTPTERM

关闭HTTP service

OK

AT+HTTPPARA

设置HTTP参数

OK

AT+HTTPHEAD

读取HTTP响应头信息

OK

AT+HTTPREAD

读取HTTP响应信息

OK

【HTTP POST/GET自写接口测试请求】

提供测试接口:【POST/GET】:【 https://www.waveshare.cloud/api/sample-test/ 】/【 http://mqtt.waveshare.cloud:8000/sample-test/ 】

这里使用django写一个简单的应用案例,将POST、GET请求写到一个接口中,使用request.method判断请求方式分别处理 

部署云服务器之后将接口封装请求,使用SIM7028 NB IoT HAT请求示例:

MQTT通信

本文主要介绍SIM7028模块MQTT通信功能。
相关的AT指令详细说明可参阅:File:SIM7028 Series MQTT(S) Application Note V1.03.pdf

【MQTT订阅主题和发布消息】

下文为方便演示MQTT通信功能,下文以连接私有EMQX服务器为例进行测试。

相关指令:

AT指令

指令说明

返回值

AT+CMQTTSTART

开启MQTT服务

OK

AT+CMQTTACCQ=0,"Waveshare-Sim7028",0

申请MQTT client

OK

AT+CMQTTCONNECT=0,tcp://mqtt.easyiothings.com,20,1

发送 MQTT 请求,连接私有MQTT服务器(MQTTS)

OK

AT+CMQTTTOPIC=0,11

输入消息发布主题

>sim7028test OK

AT+CMQTTPAYLOAD=0,9

输入发布的消息内容

OK >waveshare

AT+CMQTTPUB=0,0,60

发布消息

OK +CMQTTPUB: 0,0

AT+CMQTTSUB=0,4,1

订阅消息主题

>test OK +CMQTTSUB: 0,0

[10:03:39.665]收←◆ +CMQTTRXSTART: 0,4,18 +CMQTTRXTOPIC: 0,4 test +CMQTTRXPAYLOAD: 0,18 { "msg": "hello" } +CMQTTRXEND: 0

AT+CMQTTSTOP

停止MQTT服务

OK

AT+CMQTTREL

释放客户端

OK

AT+CMQTTUNSUBTOPIC

释放订阅主题

OK

AT+CMQTTUNSUB

释放订阅

OK


说明:测试MQTT相关指令时,因NB-IoT网络问题,AT应答时间相对较长,请耐心等候。详细过程请参考:SIM7028 NB-IOT HAT携手Waveshare Cloud MQTT

低功耗模式详解

NB-loT技术支持三种省电模式:PSM (power saving Mode)、DRX (Discontinuous Reception Mode)和eDRX (Extended DRX)。在NB-IOT中使用PSM(省电模式)和eDRX(扩展不连续接收)来节省电力。在PSM模式下,终端不需要接收寻呼来检测是否有下行业务,eDRX模式的寻呼检测周期比DRX模式长,可能会导致较长的时间延迟,影响数据的实时性。使用PSM还是eDRX取决于终端和网络的能力和配置。在能力方面,终端不支持的能力网络一定不要配置,在网络的不同情况下,终端支持的能力可能会有所不同。

低功耗模式差异
No模式名称描述
1PSM极其省电,不接收任何数据
2DRX定期关闭网络服务随时找寻设备
3eDRXeDRX相比传统的DRX模式可以进一步降低NB-IoT设备的功耗,延长电池寿命。但同时,由于eDRX的周期更长和接收持续时间更短,设备在接收数据方面可能会有一些延迟。

PSM

在PSM模式下,终端不检测下行链路中是否有分页数据。只要TAU和上行链路还需要发送数据,PSM状态就会退出。T3412为跟踪区域更新时间,T3324为IDLE模式下进入PSM的定时器。

测试说明
AT指令说明返回值
AT+QCPMUCFG=1,4沉睡模式OK
AT+QCPSMR=1开启低功耗URC汇报OK
AT+CPSMS=1,,,"01011111","00000001"设置定时器的PSM模式OK
AT+CPSMS=0退出PSM模式OK

DRX & eDRX

DRX可以认为下行业务在任何时候都可以到达终端设备。在每个DRX周期(1.28秒、2.56秒、5.12秒、10.24秒)内,终端检测下行业务是否到达,适用于对时延要求较高的业务。终端设备一般采用供电方式,如路灯服务。 与DRX相比,eDRX的分页周期更长,使得终端更省电,同时下行数据延迟也更长(如DRX值为1.28s2.56s, eDRX值可达20.48s,甚至2.9h),适合于时间紧迫性不是很高的应用场景。

测试说明
AT指令说明返回值
AT+CEDRXS=1,5,"0010"开启eDRX模式OK
AT+CEDRXS?查询eDRX状态+CEDRXS: 5,"0010" OK
AT+CEDRXRDP查询是否支持+CEDRXRDP: 5,"0000","0010","0100"
AT+CEDRXS=0退出eDRX模式OK

接入树莓派使用

硬件连接

 


SIM7028 NB-IoT HAT板载树莓派GPIO接口需要调整一下跳线帽的位置到B;下表为树莓派管脚与模块引脚连接情况:


SIM7028 NB-IoT HAT

Raspberry Pi

5V

5V

GND

GND

RXD

TXD (对应BCM的14)

TXD

RXD (对应BCM的15)

RI

P7 (对应BCM的4)

WAKE

P31 (对应BCM的6)

软件配置

【串口配置】

由于树莓派串口默认用于终端调试,如需使用串口,则需要修改树莓派设置。

  • 执行如下命令进入树莓派配置:
sudo raspi-config
  • 选择Interfacing Options ->Serial ->no -> yes,关闭串口调试功能。


  • 重启生效。

树莓派minicom调试

将模块插入树莓派中,安装minicom,minicom是linux平台串口调试工具:

sudo apt-get install minicom

执行minicom -D /dev/ttyS0 可进入minicom串口调试界面

默认波特率为115200,ttyS0为树莓派3B/3B+/Zero 2的串口,Zero为ttyAMA0

键入数据无回显可通过 ctrl+A、按Z,按E即可。

树莓派示例程序演示

下载程序,进入目录Raspberry下

sudo apt-get install unzip -y
wget https://cdn.static.spotpear.cn/uploads/picture/learn/raspberry-pi/rpi-expansion/sim7028-nb-iot-hat/SIM7028-NB-IoT-HAT-Demo-Code.zip
unzip SIM7028-NB-IoT-HAT-Demo-Code.zip -d SIM7028
cd SIM7028/Raspberry/
sudo pip3 install paho-mqtt pyserial
# HTTP请求
sudo python3 AT_http_s.py
# MQTT请求:注意修改对应参数,此MQTT示例是接入WaveshareCloud平台,详情参阅应用案例
sudo python3 AT_mqtt_s.py


  • 示例程序测试截图:

接入Jetson Nano使用

硬件连接

硬件连接参考SIM7028NB-IoT HAT连接树莓派

运行效果

sudo apt-get install unzip -y
wget https://cdn.static.spotpear.cn/uploads/picture/learn/raspberry-pi/rpi-expansion/sim7028-nb-iot-hat/SIM7028-NB-IoT-HAT-Demo-Code.zip
unzip SIM7028-NB-IoT-HAT-Demo-Code.zip -d SIM7028
cd SIM7028/JetsonNano/
sudo pip3 install paho-mqtt pyserial
# HTTP请求
sudo python3 AT_http_s.py
# MQTT请求:注意修改对应参数,此MQTT示例是接入WaveshareCloud平台,详情参阅应用案例
sudo python3 AT_mqtt_s.py


接入Arduino/ESP32使用

硬件连接

Arduino使用软串口连接,ESP32使用硬串口Serial2连接

Esp32Sim7028 NB-IoT HATLED
5VVBAT
GNDGND负极
Pin16TX
Pin17RX
Pin4RST
Pin5正极

软件配置

打开arduino->文件->首选项->附加开发板管理器网址添加:

https://www.arduio.cn/package_esp32_index.json

https://dl.espressif.com/dl/package_esp32_index.json

然后打开开发板管理,搜索esp32下载安装。 也可以通过安装包安装arduino-esp32,可以在arduino社区找到相关安装说明:链接

进入工具->开发板->开发板管理器添加esp32库

进入工具->管理库添加"pubsubclient"库和"ArduinoJson"库

WaveshareCloud配置

这里原理是通过esp32向SIM7028 NB-IoT HAT发送AT指令使其与WaveshareCloud进行Mqtt通信。

首先登录到WaveshareCloud,进入设备列表一键创建esp32+sim7028模板设备。

将设备连接地址填入示例程序中的参数,上传程序打开串口调试助手查看输出

正常连接之后可以在WaveshareCloud控制台页面查看到创建的设备已经在线,点击在线调试可以查看对应数据图表显示。

接入Waveshare Cloud

7028 mqtt请求简述

MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,旨在为物联网设备提供可靠、高效的通信方式。

MQTT请求组成部分

  • 固定报头(Fixed Header):MQTT消息的固定报头是每个消息都必须包含的固定部分。它包含了控制消息传输的必要信息,如消息类型、服务质量等级(QoS)、主题是否保留等。固定报头的长度固定为一个字节。
  • 可变报头(Variable Header):MQTT消息的可变报头是一个可选的部分,长度取决于消息类型和特定的操作。它包含与消息类型相关的控制信息,如连接标志、订阅主题的QoS等。
  • 主题名(Topic Name):主题名是标识消息的关键部分。在发布消息时,需要指定一个主题名,而订阅者则根据主题名来接收感兴趣的消息。主题名通常使用UTF-8编码。
  • 负载(Payload):负载是实际传输的数据内容。对于发布消息,负载是要发送的数据;对于订阅消息,负载是从发布者接收到的数据。负载的长度可以是0个字节到最大消息大小的限制。

MQTT请求流程

  • 建立连接:
    • 客户端通过TCP/IP协议与MQTT代理服务器建立连接。MQTT默认使用1883端口进行非加密连接,或者使用8883端口进行加密连接(通过TLS/SSL)。
    • 客户端可以选择保持会话,以便在断开连接后可以恢复之前的订阅和发布状态。
  • 发布消息:
    • 客户端作为发布者(Publisher),通过发送PUBLISH消息向指定的主题发布消息。
    • PUBLISH消息包含固定报头、可变报头、主题名和负载(消息内容)。
    • 发布者发布消息后,MQTT代理服务器将根据订阅者的订阅信息将消息传递给相应的订阅者。
  • 订阅主题:
    • 客户端作为订阅者(Subscriber),通过发送SUBSCRIBE消息来订阅特定的主题。
    • SUBSCRIBE消息包含固定报头、可变报头和一个或多个主题过滤器及其对应的服务质量等级(QoS)。
    • 订阅者可以同时订阅多个主题。
  • 代理服务器确认订阅
    • 当代理服务器收到订阅请求后,它将确认订阅并将相应的订阅信息保存起来。
    • 订阅者现在可以接收发布到其订阅的主题的消息。
  • 接收消息:
    • 当有新消息发布到一个订阅者订阅的主题时,MQTT代理服务器将将该消息发送给订阅者。
    • 接收到消息后,订阅者可以处理消息的负载并做出相应的操作。
  • 断开连接:
    • 当客户端(发布者或订阅者)完成通信后,它可以选择断开与MQTT代理服务器的连接。
    • 断开连接时,客户端可以选择保留会话,以便在重新连接时保留之前的订阅和发布状态。

登录平台、创建新设备

首先需要创建设备类型,承接下属同种类型的多个设备,便于设备管理 

然后创建具体设备,点击设备列表新增,填入相关数据

创建完成之后设备为未激活状态,可通过右侧地址详情查看mqtt连接属性内容

对于设备属性可通过需要上传的数据内容来定义上传,这里通过一键添加设备已经具备LED属性

使用MQTT连接Waveshare Cloud

首先使用跳线帽连接A端,即Type-C端接Sim7028端

将SIM7028 NB-IoT HAT使用Type-c转USB插入电脑,使用sscom打开串口,等待网络初始化成功

初始化MQTT连接

AT+CMQTTSTART


AT+CMQTTACCQ=0,"{键入平台分配的client id}",0


AT+CMQTTCONNECT=0,tcp://mqtt.waveshare.cloud:1883,20,1

订阅&发布主题

AT+CMQTTTOPIC=0,18 # 键入Pub主题 18为字符长度


AT+CMQTTSUB=0,18,0 # 键入Sub主题 18为字符长度


填写需要上传的数据内容:


AT+CMQTTPAYLOAD=0,21 # 字符长度少于10240 ,这里键入hello waveshare cloud 21位测试


发布消息:

AT+CMQTTPUB=0,0,60


总体测试数据过程截图: