SIM7028 NB-I0T HAT 通过MQTT连接Aliyun物联网平台
[通过MQTT连接AWS IoT Core]
本产品是一款具有NB-IoT(窄带物联网)功能的树莓派扩展板,具有低延时、低功耗、低吞吐量应用的最优解决方案,非常适用于如表计、远程控制、资产跟踪、远程监控、远程医疗、共享单车等物联网应用。
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熄灭——未注册上网络 |
用户在使用SIM7028模块前除了Type-C USB线、LTE天线外,还需要另外准备以下东西:
接线说明:(如使用预留串口接TTL则需断开A跳线帽,若用Type C,直接跳A跳线帽即可)
SIM7028-NB-IoT HAT |
---|
5V |
GND |
RX1 |
TX1 |
硬件连接操作:
下表列举一些常用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 |
本文主要介绍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指令有可能更新。)
相关指令:
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 |
相关指令:
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 |
提供测试接口:【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请求示例:
本文主要介绍SIM7028模块MQTT通信功能。
相关的AT指令详细说明可参阅:File:SIM7028 Series MQTT(S) Application Note V1.03.pdf
下文为方便演示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 | 模式名称 | 描述 |
---|---|---|
1 | PSM | 极其省电,不接收任何数据 |
2 | DRX | 定期关闭网络服务随时找寻设备 |
3 | eDRX | eDRX相比传统的DRX模式可以进一步降低NB-IoT设备的功耗,延长电池寿命。但同时,由于eDRX的周期更长和接收持续时间更短,设备在接收数据方面可能会有一些延迟。 |
在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可以认为下行业务在任何时候都可以到达终端设备。在每个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
将模块插入树莓派中,安装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
硬件连接参考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使用硬串口Serial2连接
Esp32 | Sim7028 NB-IoT HAT | LED |
---|---|---|
5V | VBAT | |
GND | GND | 负极 |
Pin16 | TX | |
Pin17 | RX | |
Pin4 | RST | |
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"库
这里原理是通过esp32向SIM7028 NB-IoT HAT发送AT指令使其与WaveshareCloud进行Mqtt通信。
首先登录到WaveshareCloud,进入设备列表一键创建esp32+sim7028模板设备。
将设备连接地址填入示例程序中的参数,上传程序打开串口调试助手查看输出
正常连接之后可以在WaveshareCloud控制台页面查看到创建的设备已经在线,点击在线调试可以查看对应数据图表显示。
MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,旨在为物联网设备提供可靠、高效的通信方式。
首先需要创建设备类型,承接下属同种类型的多个设备,便于设备管理
然后创建具体设备,点击设备列表新增,填入相关数据
创建完成之后设备为未激活状态,可通过右侧地址详情查看mqtt连接属性内容
对于设备属性可通过需要上传的数据内容来定义上传,这里通过一键添加设备已经具备LED属性
首先使用跳线帽连接A端,即Type-C端接Sim7028端
将SIM7028 NB-IoT HAT使用Type-c转USB插入电脑,使用sscom打开串口,等待网络初始化成功
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
总体测试数据过程截图: