资料下载: 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"