4G模块EC200S使用
一、简介
EC200S 是一系 LTE-FDD/LTE-TDD/GSM 无线通信模块,支持 LTE-FDD、LTE-TDD、EDGE 和 GPRS网络数据连接,支持最大下行速率
10Mbps 和最大上行速率5Mbps。在封装上兼容移远通信多网络制式LTE Standard EC2x(EC25、EC21、EC20 R2.0、EC20 R2.1)和
EC200T/EG25-G/EG21-G 模块以及UMTS/HSPA+ UC20/UC200T 模块,实现了3G 网络与4G 网络之间的无缝切换。
1.1支持的频段
网络制式 | 频段 |
---|---|
LTE-FDD | B1/B3/B5/B8 |
LTE-TDD | B34/B38/B39/B40/B41 |
GSM | 900/1800MHz |
1.2模块性能
-
供电:VBAT供电电压范围:3.4V~4.3V
-
LTE特性:
- 支持 1.4/3/5/10/15/20MHz 射频带宽
- LTE-FDD:最大下行速率 10Mbps,最大上行速率 5Mbps
- LTE-TDD:最大下行速率 7.5Mbps,最大上行速率 1Mbps
-
网络协议特性:支持TCP/UDP/MQTT/PPP/FTP/HTTP/HTTPS/SSL协议
-
AT命令:3GPP TS 27.007 和 3GPP TS 27.005 定义的命令,以及移远通信增强型 AT 命令
-
网络指示:NET_MODE 和 NET_STATUS 两个引脚指示网络状态
-
软件升级:可通过 USB 接口或 FOTA**升级
1.3引脚描述
EC200S 模块共有 144 个引脚,其中 80 个为 LCC 引脚,64 个为 LGA 引脚。包括 电源供电 ,(U)SIM 接口,USB 接口,UART 接口, PCM 和 I2C 接口,ADC 接口,状态指示接口,FORCE_USB_BOOT 接口
注意: 1. 1) 表示 WAKE UP_IN 和 FORCE_USB_BOOT 引脚在模块开机成功前禁止上拉到高电平。 2. 若 PCM_CLK、SD_SDIO_CLK、I2C_SCL、WLAN_SLP_CLK 和 WLAN_SDIO_CLK 引脚不用,为 了防止对射频产生干扰,建议靠近这三个引脚处分别贴一个 33pF 电容。其他不用的引脚和RESERVED 引脚悬空,所有的 GND 引脚连接到地网络上。 3. 引脚 85~112 需做接地处理。引脚 73~84 无需进行原理图及 PCB 封装设计,且该区域禁止铺铜和布线。 4. WLAN 接口和 SD 卡接口功能正在开发中。 5、EC200 LCC 的模块上电不会自启动的,所以需要通过拉低这个 PWR 引脚电压才可以启动。 6、网络灯不会立刻点亮,一般至少 5S 左右网络灯才会亮。
二、AT指令
2.1 AT
AT 返回 OK,代表模块正常。
[09:52:22.822]发→◇AT
□
[09:52:22.828]收←◆AT
OK
2.2 AT+CIMI
AT+CIMI 是查询是否有卡,如果有卡,会返回 460,如果没有卡,会返回 ERROR。
[09:54:46.177]发→◇AT+CIMI
□
[09:54:46.181]收←◆AT+CIMI
460081290003366
OK
2.3 AT+CPIN?
查询 SIM 卡状态,返回 READY 则表示SIM卡正常,如果 20 秒后还无法识别 SIM 卡,重新启动模块。
[10:03:51.501]发→◇AT+CPIN?
□
[10:03:51.508]收←◆AT+CPIN?
+CPIN: READY
OK
2.4 ATI
ATI是查询模块版本的,如果有连接模块,会打印出模块的版本信息
[10:00:38.632]发→◇ATI
□
[10:00:38.639]收←◆ATI
Quectel
EC200S
Revision: ***********
OK
2.5 AT+CSQ
AT+CSQ 是查询信号的,如果注册网络成功,会有信号产生,最大 31,如果信号小于 10,
说明当前网络信号不佳。
[09:55:33.065]发→◇AT+CSQ
□
[09:55:33.070]收←◆AT+CSQ
+CSQ: 15,99
OK
2.5 AT+CGATT?
AT+CGATT?是查询注册网络情况,如果注册成功,会返回 1,如果失败,返回 0。
[09:56:00.865]发→◇AT+CGATT?
□
[09:56:00.870]收←◆AT+CGATT?
+CGATT: 1
OK
2.6.1 AT + CREG?
查询模组是否注册上GSM网络,如果 90秒后未能在 CS 上注册域名服务,重新启动模块。如果返回 1 或 5 ,代表 CS 服务注册成功。
+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。
[10:07:28.537]发→◇AT + CREG?
□
[10:07:28.543]收←◆AT + CREG?
+CREG: 0,1
OK
2.6.2 AT + CGREG?
查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。
[10:09:05.347]发→◇AT+CGREG?
□
[10:09:05.353]收←◆AT+CGREG?
+CGREG: 0,1
OK
2.7 AT+QIACT=1
AT+QIACT=1 是激活场景,如果激活成功,会返回 OK,这一步很重要,必须要激活,否则没法连接服务器,因为这个地方是让模块获取到基站分配的 IP,如果没获取到 IP,那是没法正常工作的。
[09:56:30.139]发→◇AT+QIACT=1
□
[09:56:30.144]收←◆AT+QIACT=1
OK
2.8 AT+QIACT?
AT+QIACT?是获取 IP 的,没有激活没有 IP ,激活成功才有 IP,有 IP,那么就可以操作连接服务器等工作。
[09:58:25.930]发→◇AT+QIACT?
□
[09:58:25.935]收←◆AT+QIACT?
+QIACT: 1,1,1,"10.82.198.229"
OK
AT指令总结
指令 | 解析 |
---|---|
AT | 测试指令,若返回OK,则模块可正常通信 |
AT+CPIN? | 检查SIM卡是否在位 |
AT+CSQ | 查询信号质量 |
AT+CREG? | 查询入网状态 |
AT+CGATT=1 | 激活网络 |
AT+CGATT? | 查询激活状态 |
三、TCP测试
1、AT+QIOPEN
该命令用于打开套接字服务。
打开 Socket 服务:
AT+QIOPEN=?1,?2,<service_type>,<IP_address>/<domain_name>,<remote_port>[,<local_po CONNECTrt>[,<access_mode>]] :
?1:整数类型。上下文ID。范围是1-16。
?2:整数类型。套接字服务索引。范围是0-11。
<SERVICE_TYPE>:字符串类型。套接字服务类型。
1、“ TCP ” :作为客户端启动TCP连接 2、“ UDP ”:作为客户端启动UDP连接 3、“TCP LISTENER” :启动TCP服务器以侦听TCP连接 4、“UDP SERVICE” :启动UDP服务
<IP_address>:字符串类型。
如果<service_type>是TCP或UDP ,则表示远程服务器的IP地址,例如 “220.180.239.212”。
如果<service_type>是TCP LISTENER或UDP SERVICE 地址,请输入“127.0.0.1”。
<domain_name>:字符串类型。远程服务器的域名地址。
<remote_port> :远程服务器的端口,仅在<service_type>为“TCP”或“UDP”时有效。范围是0-65535。
<LOCAL_PORT> :本地端口。范围是0-65535。
如果<service_type>是“TCP LISTENER”或“UDP SERVICE”,则此参数必须指定。
如果<service_type>是“TCP”或“UDP”。如果<local_port>为0,那么本地端口将是自动分配。否则,将按指定分配本地端口。
<access_mode> :整数类型。套接字服务的数据访问模式。
0: 非透传Buffer模式
1: 非透传Push模式
2: 透传模式
[10:20:23.055]发→◇AT+QIOPEN=1,0,"TCP","47.92.146.210",8888,0,1
□
[10:20:23.062]收←◆AT+QIOPEN=1,0,"TCP","47.92.146.210",8888,0,1
OK
2、AT+QISEND
该命令用于发送数据,到指定套接字服务<access_mode>是非透传Buffer模式或非透传Push模式的数据可以是通过AT+QISEND发送。如果数据成功发送到模块,将返回“ SEND OK ” 。否则返回“ SEND FAIL ” 或“ ERROR ”,“ SEND FAIL ” 表示发送缓冲区已满可以尝试重新发送数据。“ERROR”表示在发送过程中遇到错误应该延迟一段时间来发送数据。“SEND OK”并不意味着数据已成功发送到服务器。可以查询数据是否通过AT + QISEND =0,0命令到达服务器。透传模式下不需要AT指令发送数据。
2.1 Buffer模式下发送定长数据
2.2 Buffer模式下从服务器接受数据
2.3 非透传Push模式下发送定长数据
2.4 发送不定长数据
2.5 发送16进制字符串
[10:54:47.095]发→◇AT+QISENDEX=0,"313233"
□
[10:54:47.104]收←◆AT+QISENDEX=0,"313233"
SEND OK
[10:54:47.492]收←◆
+QIURC: "recv",0,3
123
3、AT+QICLOSE
通信完毕之后,可以使用命令关闭TCP连接:AT+QICLOSE=<connectID>[,<timeout>]
[10:57:38.719]发→◇AT+QICLOSE=0
□
[10:57:38.726]收←◆AT+QICLOSE=0
OK
4、AT+QIDNSGIP(需要打开 Socket 服务才可以使用)
对域名解析,命令格式:AT+QIDNSGIP=<contextID>,<hostname>
返回参数:
+QIURC: "dnsgip",<err>,<IP_count>,<DNS_ttl>
……
+QIURC: "dnsgip",<hostIPaddr>
err:整型,操作错误代码;
IP_count:表示该域名对应几个ip;
DNS_ttl:DNS的TTL值;
hostIPaddr:域名解析出的ip地址;
[11:00:02.315]发→◇AT+QIDNSGIP=1,"www.baidu.com"
□
[11:00:02.322]收←◆AT+QIDNSGIP=1,"www.baidu.com"
OK
[11:00:02.404]收←◆
+QIURC: "dnsgip",0,2,10
+QIURC: "dnsgip","183.232.231.174"
+QIURC: "dnsgip","183.232.231.172"
四、MQTT测试
MQTT里面的收发有专业术语:发是发布(publish),收是订阅(subscribe)。同样 MQTT 也是需要有服务器的,这个服务器一般不需要用户去搭建。服务器主要做数据转发功能,不参与数据的介入。换句话说服务器不会对我们发数据,只会对发来的数据进行检测,从而返回相关的处理流程给到设备。最大的特色就是支持了模块板与模块板之间的数据收发功能。下面是接入流程。
1、接入服务器
AT+QMTOPEN=0,"47.92.146.210",1883
[11:11:20.361]发→◇AT+QMTOPEN=0,"47.92.146.210",1883
□
[11:11:20.367]收←◆AT+QMTOPEN=0,"47.92.146.210",1883
OK
[11:11:20.582]收←◆
+QMTOPEN: 0,0
2、发送ID验证服务器
MQTT有一个登录约束条件,每一个用户登录服务器时,需要发送一个唯一的ID(有的服务器是有登录账号和密码),ID可以选用模块IMEI号作为登录ID,这样就可以唯一啦。发送 ID 到服务器进行审核,审核通过后返回 0, 0,0,如果返回的不是三个 0,表明审核失败。查看是否需要账号密码,还是连接断开等问题。登录成功之后,用户就可以随意的进行数据发布与订阅。AT+QMTCONN=0,"唯一的ID"
[11:18:22.609]发→◇AT+QMTCONN=0,"clientExample"
□
[11:18:24.975]收←◆
RDY
3、数据订阅与发布
发送数据出去,要告诉别人你的数据是发给谁的。就像寄快递:快递公司要有一个收件人和快递件。收件人就是发布数据的“主题”,快递件就是发布的“数据”。因此发布数据的两个要素是:一个是主题收件人,一个是包裹内容,
3.1主题订阅
`AT+QMTSUB=0,1,"主题名"
[11:25:45.151]发→◇AT+QMTSUB=0,1,"ec200s",0
□
[11:25:45.159]收←◆AT+QMTSUB=0,1,"ec200s",0
OK
[11:25:45.318]收←◆
+QMTSUB: 0,1,0,0
3.2发布数据
AT+QMTSUB=0,0,0,0,"ec200s","hello,MQTT"
[11:32:47.118]发→◇AT+QMTSUB=0,1,"ec200s",0
□
[11:32:47.126]收←◆AT+QMTSUB=0,1,"ec200s",0
OK
[11:32:47.310]收←◆
+QMTSUB: 0,1,0,0
+QMTRECV: 0,0,"ec200s","hello mqtt."
此外也可以通过软件mqtt.fx实现在自己电脑或者手机端进行数据的订阅与发布
五、EC200S-CN模块接入阿里云物联网平台
5.1省略部分
注册账号、创建产品、创建设备
阿里云三元素要保存(包括 DeviceSecret、ProductKey与DeviceSecret),后续需要用到。产品信息里面有 TOPIC 主题类列表,我们可以用到的是物模型通信 TOPIC,分别用到属性上报和属性设置,分别代表上发和下发数据。
主题。
5.2 AT+CGPADDR
此命令用于查看IP地址。查询到IP后,代表已经正常注网啦AT+CGPADDR=1
[16:52:35.657]发→◇AT+CGPADDR=1
□
[16:52:35.667]收←◆AT+CGPADDR=1
+CGPADDR: 1,"10.163.58.149"
OK
5.3 AT+QMTCFG
MQTT 参数配置是和设备的参数是需要对应的,分别是对应产品 key,设备名称以及设备密钥,一一对应。at+qmtcfg="aliauth",0,"a16UbXBtHSi","Soil_sensor","f1cc2d92ff99df9dac26bb2765db42ab"
[17:00:08.267]发→◇at+qmtcfg="aliauth",0,"a16UbXBtHSi","Soil_sensor","f1cc2d92ff99df9dac26bb2765db42ab"
□
[17:00:08.275]收←◆at+qmtcfg="aliauth",0,"a16UbXBtHSi","Soil_sensor","f1cc2d92ff99df9dac26bb2765db42ab"
OK
5.4 AT+QMTOPEN
Open a Network for MQTT Client,采用域名的方式登录
打开一个MQTT客户端网络
AT+QMTOPEN=0,"iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
[17:02:54.358]发→◇AT+QMTOPEN=0,"iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
□
[17:02:54.366]收←◆AT+QMTOPEN=0,"iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
OK
[17:02:54.783]收←◆
+QMTOPEN: 0,0
5.5 AT+QMTCONN
AT+QMTCONN Connect a Client to MQTT ServerAT+QMTCONN=0,"DeviceName" //连接MQTT服务器
[17:06:40.986]发→◇AT+QMTCONN=0,"2553"
□
[17:06:40.993]收←◆AT+QMTCONN=0,"2553"
OK
[17:06:41.200]收←◆
+QMTCONN: 0,0,0
可以看到此时阿里云物联网平台显示在线了,表明现在设备与平台端的连接
已经打通了,那么就可以进行数据订阅与发布。发布数据需要用 A-LINK 格式要求,除非用透传,所以要用 ALINK 的协议要求规范来发数据。 点击未激活旁边的绿色开关2次便可激活,现在的设备上线后可自动激活不用再手动点击绿色开关两次。
5.6 AT+QMTSUB
位置:产品-->Topic类列表-->自定义TopicAT+QMTSUB=0,1,"/a10hC2CWMGC/DeviceName/user/get",0 //订阅服务器发布主题即能接受到服务器下发的数据
□
[16:35:42.552]收←◆AT+QMTCONN=0,\"Soil_sensor\"
OK
[16:35:42.701]收←◆
+QMTCONN: 0,0,0
5.7 AT+QMTPUB
从设备发布数据到云端
发布主题消息:AT+QMTPUB=0,0,0,0,"/sys/ProductKey/DeviceName/thing/event/property/post"
发布JSON数据:{params:{IndoorTemperature:27.5}}
数据结束符:0x1A
参考资料:
1、Quectel_EC20_TCPIP_AT_Commands_Manual_V1.0
2、Quectel_MQTT_Application_Note_V1.0
3、Quectel_EC200S_硬件设计手册_V1.0
4、MQTT-3.1.1-CN中文手册.pdf
5、墨子号EC200模块板使用说明书