zl程序教程

您现在的位置是:首页 >  其他

当前栏目

中移动M5311模块使用手册(TCP,MQTT)

2023-03-20 15:39:18 时间

资料下载: https://gitee.com/yang456/learn-m5311.git 模块链接: https://item.taobao.com/item.htm?ft=t&id=645162253935

实物图(以最新版为准)

引脚说明

5V: 模组5V供电引脚

G: GND

VBAT: 3.1V ~ 4.2V供电引脚

RST: 复位模组引脚(拉低复位)

TX: 模组串口通信发送数据引脚

RX: 模组串口通信接收数据引脚

PSM: 模组休眠唤醒引脚

PWR: 模组开关机引脚

手机卡安装示意图

注意缺口方向

测试AT(使用串口模块测试)

1,串口模块连接示意图

2,把PWR引脚和GND引脚连接在一起约1S时间,然后去掉连接

模组开机以后打印如下

2,打开资料里面的数据手册

超过20s不和模组进行AT指令通信,模组就会进入睡眠模式.

进入睡眠模式以后需要把PSM引脚接到低电平进行唤醒

3,一般在测试时,先发送指令设置模组不主动休眠

AT+SM=LOCK

测试连接TCP服务器

1.安装好手机卡和天线

2.给模组重新开机

每次安装好手机卡以后复位模组让模组重新启动,

正常情况下等待3S左右模组会显示已经识别到SIM卡

等待10S左右模组注册上网络以后会显示模组的IP地址

3.依次发送以下指令

控制模组开机

AT

AT+SM=LOCK

AT+CPIN?

AT+CEREG?

AT+CGACT?

模块根据指令回复如下方可进行下面的步骤

4.连接TCP服务器

例如连接IP地址为 47.92.31.46 端口号为 10002的TCP服务器

模组总共有5路socket(0-4)使用,下面是使用socket0连接通信

AT+IPSTART=0,"TCP","47.92.31.46",10002

4.使用socket0发送数据给服务器

发送字符串 发送 stringdata

AT+IPSEND=0,0,"stringdata"

发送16进制数据 发送 0x01 0x02 0x55 0xff

AT+IPSEND=0,4,"010255ff"

5.socket0接收数据

模组默认是不主动把接收的数据通过串口发送出来的.......

1.数据标识+透传的数据 模式接收数据

AT+IPRCFG=1,0,0

模组接收字符串数据(string)如下

+IPRD: 0,6, 是数据标识, string是接收的数据(最后有个换行哈,是模组自己添加的)

模组接收16进制数据(0x01 0x02 0x03)如下

+IPRD: 0,3, 是数据标识, 后面不是乱码哈,是因为字符串显示后面是16进制的 010203

(数据最后有个换行哈,是模组自己添加的)

2.透传的数据 模式接收数据

AT+IPRCFG=1,1,0

模组接收字符串数据(string)如下

注意,并不是完全透彻的数据 (模组在数据的开头和结尾都加了换行)

模组接收16进制数据(0x01 0x02 0x03)如下

注意,并不是完全透彻的数据 (模组在数据的开头和结尾都加了换行)

6.模组做的有点问题!!!

测试发现上面的主动输出不好使: 如果模组不发送数据给服务器,服务器主动发送数据给模组.

服务器发送数据给模组以后等40S再发送,模组虽然接收到数据,但是不主动输出.......

如果想获取数据,需要让模组发送数据给服务器一下,缓存数据就主动出来了.

大家伙可以设置手动查询模式,然后数据接收方式可以是透传模式

AT+IPRCFG=1,1,0

查询参考

测试连接MQTT服务器

1.安装好手机卡和天线

2.给模组重新开机

每次安装好手机卡以后复位模组让模组重新启动,

正常情况下等待3S左右模组会显示已经识别到SIM卡

等待10S左右模组注册上网络以后会显示模组的IP地址

3.依次发送以下指令

控制模组开机

AT

AT+SM=LOCK

AT+CPIN?

AT+CEREG?

AT+CGACT?

模块根据指令回复如下方可进行下面的步骤

4.配置连接的MQTT服务器参数

MQTT服务器IP地址:47.92.31.46

MQTT服务器端口号:1883

MQTT客户端ClientID: 000000 (一般使用模组的IMEI代替,确保唯一)

MQTT客户端心跳时间: 60 (秒)

MQTT服务器用户名:yang

MQTT服务器密码:11223344

让MQTT服务器清除session信息: 1 (不清除的话服务器就记录这个客户端的信息了,以前这个客户端订阅的主题也记录了,再次连接不需要再订阅就可以)

不使用SSL加密通信: 0

AT+MQTTCFG=47.92.31.46,1883,000000,60,yang,11223344,1,0

5.连接MQTT服务器

AT+MQTTOPEN=1,1,0

6.订阅主题

假设订阅 222222

AT+MQTTSUB=222222,1,0

7.接收消息

接收字符串 "qqqqqq"

接收16进制 "0x01 0x02 0x03"

注意哈后面不是乱码哈,是因为字符串显示后面是16进制的 010203

可以使用16进制看下

8.发送消息

主题:topic

消息等级: 0

不让服务器记录消息: 0

不是重新上报的消息: 0

传输字符串,该数为0

消息: qqqqq

AT+MQTTPUB="topic",0,0,0,0,"qqqqq"

主题:topic

消息等级: 0

不让服务器记录消息: 0

不是重新上报的消息: 0

传输3个16进制数据,该数为3

消息: 0x01 0x02 0x03

AT+MQTTPUB="topic",0,0,0,3,"010203"