本次调试使用的是STM32F407VG单片机作为主控,连接EC20,采用HAL库编写代码
EC20 内嵌了 TCP/IP 协议栈, Host 直接通过 AT 命令可以方便的访问 internet, Host 可以减少对 PPP和 TCP/IP协议栈的依赖,实现低成本的设计。UC20提供TCP Client、UDP Client、TCP Server、UDP Service这些内置的 socket 服务功能。
首先是EC20 4G模块:
参考:Quectel_EC20_R2.0_硬件设计手册_V1.2.pdf
链接:LTE EC20 R2.1 | 移远通信 (quectel.com)
建议最好阅读过前面的sim800c模块的使用,因为这两个模块是类似的。也就是可以通过这个模块打电话,发短信,上网。但是,这个模块是全网通的,也就是说电信卡,2g,3g,4g都能支持。比起sim800c只支持联通和移动就好多了。这就是7模(ec20)和5模(sim800c)的区别。
EC20 是移远通信推出的 LTE Cat 4 无线通信模块,采用 LTE 3GPP Rel.11 技术,支持最大下行速率 150Mbps 和最大上行速率 50Mbps。能在 LTE-FDD、LTE-TDD、DC-HSPA+、WCDMA、EDGE 及 GPRS 等多种网络制式中进行数据通信;同时在封装上兼容移远通信 UMTS/HSPA+ UC200T 系列模块以及多网络制式 LTE Standard EC20 R2.1/EG25-G/ EG21-G/EC21 系列/EC25 系列/EC200T 系列模块,实现了 3G 网络与 4G 网络之间的无缝切换。
EC20 系列模块包含 EC20-A、EC20-C、EC20-CE 和 EC20-E 四个版本,使其能够向后兼容现存的 EDGE 和 GSM/GPRS 网络,以确保在缺乏 3G 和 4G 网络的偏远地区也能正常工作。
EC20 支持多输入多输出技术(MIMO),即在发射端和接收端分别使用多个发射天线和接收天线,使信号通过发射端与接收端的多个天线传送和接收,从而降低误码率,改善通信质量。同时,它结合了高速无线连接与内置多星座高精度定位 GPS+GLONASS 接收器。
EC20 内置丰富的网络协议,集成多个工业标准接口,并支持多种驱动和软件功能(如 Windows XP,Windows Vista, Windows 7/8/8.1/10,Linux,Android 等操作系统下的 USB 驱动,eCall* 等),极大地拓展了其在 M2M 领域的应用范 围,如 CPE、路由器、数据卡、平板电脑、车载、安防以及工业级 PDA 等。
串口1初始化完成
AT
ce20_rev:
OK
ATE 0
ce20_rev:
OK
AT+CSQ
ce20_rev:
+CSQ: 27,99
OK
AT+CPIN?
ce20_rev:
+CPIN: READY
OK
AT+CPIN?
ce20_rev:
+CPIN: READY
OK
ATI
ce20_rev:
Quectel
EC20F
Revision: EC20CEFILGR06A05M1G
OK
AT+QICSGP=1,1,"UNINET","","",1
ce20_rev:
OK
AT+CREG?
ce20_rev:
+CREG: 0,1
OK
AT+CGATT=1
ce20_rev:
OK
AT+CGATT?
ce20_rev:
+CGATT: 1
OK
AT+QMTCFG="aliauth",0,"ips7DFCvssg","D001","b88a91c3cc52840a3e3fe13fe1142d0a"
ce20_rev:
OK
AT+QMTOPEN=0,"139.196.135.135",1883
ce20_rev:
+QMTOPEN: 0,0
AT+QMTCONN=0,"D001"
AT+QMTCONN=0,"D001"
is error!!
ce20_rev:
OK
AT+QGPSCFG="nmeasrc",1
ce20_rev:
OK
串口1初始化完成
AT
ce20_rev:
OK
AT
OK
ATE 0
ce20_rev:
OK
AT+CSQ
ce20_rev:
+CSQ: 28,99
OK
AT+CPIN?
ce20_rev:
+CPIN: READY
OK
AT+CPIN?
ce20_rev:
+CPIN: READY
OK
ATI
ce20_rev:
Quectel
EC20F
Revision: EC20CEFILGR06A05M1G
OK
AT+QICSGP=1,1,"UNINET","","",1
ce20_rev:
OK
AT+CREG?
ce20_rev:
+CREG: 0,1
OK
AT+CGATT=1
ce20_rev:
OK
AT+CGATT?
ce20_rev:
+CGATT: 1
OK
AT+QICLOSE=0
ce20_rev:
OK
AT+QIOPEN=1,0,"TCP","122.114.122.174",42652,0,2
ce20_rev:
CONNECT
//只要服务器返回CONNECT,即可发送数据到服务器
//以下为发送函数,发送的内容是:HELLO ANXIKE!!!
SendNetCMD((uint8_t*)"HELLO ANXIKE!!!",strlen("HELLO ANXIKE!!!"),"NULL",100);
关于EC20中使用的AT指令集,我们在此处就不一一介绍了(主要是太多了,有好多我们也用不上,而且网上基本都可以找到),我们只介绍第二小节中使用到的指令集,因此可以对应第二节内容进行分析。
AT指令–我一般称为测试指令,测试单片机和EC20是否连通
单片机发送:AT+换行
EC20回复:OK (证明连接正确)
AT
ce20_rev:
OK
ATE 0–关闭回显,需要回显可以打开,不过在此建议关闭,我们只要EC20回复的信息即可
ATE 0
ce20_rev:
OK
查看EC20模块信息
ATI
ce20_rev:
Quectel
EC20F
Revision: EC20CEFILGR06A05M1G
OK
查看卡片(电话卡)EC20是否可以识别
AT+CPIN?
ce20_rev:
+CPIN: READY
OK
AT+CSQ–查看信号质量
AT+CSQ
ce20_rev:
+CSQ: 28,99 //这个信号质量还是很不错的
AT+QICSGP–设置电话卡属性
AT+QICSGP=1,1,"UNINET","","",1
ce20_rev:
OK
AT+CREG?–检查是否注册到网络
AT+CREG?
ce20_rev:
+CREG: 0,1
AT+CGATT=1–模块连接到基站(附着网络)
AT+CGATT=1
ce20_rev:
OK
AT+QICLOSE=0关闭服务器
一般在我们连接服务器通信完毕之后,需要首先发送“+++”,断开客户端和服务器的连接,之后关闭服务器开辟的端口号,就是使用此条指令的;
但是目前我们是EC20初始化的初始化,我们为了避免服务器端口未关闭,导致本次链接不上服务器,所以需**要首先关闭服务器端口,再次进行连接**。
AT+QICLOSE=0
ce20_rev:
OK
正常情况下,断开服务器连接需要按照以下流程进行
单片机发送:+++ (注意此次没有换行)–断开服务器连接
单片机再次发送:AT+QICLOSE=0 --服务器端关闭端口号
10.1. 打开服务器
AT+QIOPEN=1,0,"TCP","122.114.122.174",42652,0,2
ce20_rev:
CONNECT
当我们接收到"CONNECT"字符串,代表客户端和服务器已经连接上了,接下来就可以愉快的发送数据了
10.2. 发送数据
SendNetCMD((uint8_t*)"HELLO ANXINKE!!!",strlen("HELLO ANXINKE!!!"),"NULL",100);
此时我们就可以再安信可透传云平台上看到我们发送的数据:HELLO ANXINKE!!!
需要首先获取连接网络平台的三要素(如何连接阿里云,以及MQTT协议在此不在讲解,大家可以去网上看看很多的)