EC20官网的DataSheet控制比较严重,需要仔细搜索文档或者找厂家或者卖家要。
硬件设计指,硬件设计指导手册,AT指令手册和TCP/IP三本手册对于应用指导至关重要。
1、硬件控制
不用说,最重要的电源设计,硬件可以根据官方文件进行设计。
主要说软件如何控制:
必要的几个IO:
EC20烧录、调试接口
主串口Rx、Tx
复位控制IO
(单独)电源控制IO
PowerKey引脚
其它如SPI、I2C、ADC、SDIO、RTS/CTS等模块,不用的可以浮空。
1.1 开机时序
一般来说,模块的启动、关闭和复位需要符合时间顺序,并参考如何实现相应的硬件设计手册。
如。
模块启动成功后,会主动呕吐 “RDY” 消息给主串口。
若需上电自动启动,可直接下拉,注意下拉电阻的电阻值。
复位控制引脚降低生效,一般在初始化时直接提高电平。
2、TCP连接
官方文件已给出使用TCP/IP AT可参考命令流程。
流程表述:
1. 先开机,等模块吐"RDY",进入就绪
2. 就绪后,先执行查询命令,如CSGN | CCID |QLTS 用于同步模块信息
3. 查询SIM卡状态
4. 查询网络交换业务状态
5. 并激活配置场景
6. 打开socket网络
7. 进行socket网络数据交互
如果3、4、5命令多次失败,建议直接重启模块或重启。
6、7命令,可多次尝试连接。
重新打开socket在打开之前,必须先关闭网络。
在重新激活场景时,还必须在打开前进行反激活。
socket当网络打开时,根据自己的需要选择相应的模式:
缓存模式需要手动读取数据;
最常用的只吐模式;
通信模式应注意默认传输string类型数据还是hex格式数据,或hex字符串。
具体命令:
AT命令以“AT以‘开头,以‘’开头\r’结尾。
超时时间一般以秒为单位,在编写发送接口时,传参可以设计为秒。
AT CGSN
AT CGSN 869523054669669
OK
超时时间:300ms
AT QCCID
AT QCCID QCCID: 89860425101950045915
OK
超时时间:300ms
AT CPIN?
AT CPIN? CPIN: READY
OK
超时时间:5s
返回参数: CPIN: <code>
正常回复READY,SIM PIN/SIM PIN2 表示SIM卡上锁,SIM PUK/SIM PUK表示需要密码
AT CREG?
AT CREG? CREG: 0,0
OK
AT CREG? CREG: 0,1
OK
超时时间:300ms
返回参数: CREG: <n>,<stat>
查询网络注册状态,n表示回显信息的类型,0为默认;stat表示网络注册状态,1是注册成功,其他可视为错误。
AT QICSGP=1,1,"CMNET","","",1
AT QICSGP=1,1,"CMNET",""."",1 OK
输入参数:<id>,<ip_type>,<APN>,<username>,<password>,<APN_style>
id即场景ID,一般只使用一个应用,即0;
ip类型,1表示IPV4,2表示IPV6,3表示IPV4/IPV6;
APN,表示接入点名称,CMNET说中国移动,UNINET表示中国联通;
username和password,即用户名和密码;
APN_style,APN默认使用0。
AT QIACT=1
AT QIACT=1
OK
超时时间:150s
注意1:如果150S建议直接重启模块
注2:在重新激活场景之前,必须反向激活场景。输入参数中的1表示场景ID。
AT QIDEACT=1
AT QIDEACT=1
OK
超时时间:40s,建议直接重启模块超时或失败
AT QIOPEN=1,0,"TCP","mqtt.51gonggui.com",1883,1,1
AT QIOPEN=1,0,"TCP","mqtt.51gonggui.com",1883,1,1 OK
QIOPEN: 0,0
输入参数:<pdp_id>,<socket_id>,<socket_type>,<ip1/ip2>,<port>,<local>,<mode>
pdp_id,场景ID对应上述场景配置ID;
socket_id,从0开始;
socket_type,TCP/UDP分别表示相应的客户端,服务端一般使用较少;
ip1/ip2,可以是具体的ip地址,或域名;
port,远程端口号;
local,本地端口号,从0开始;
mode,0表示缓存模式(收到数据通知后,需要手动读取缓存),1是只吐模式(收到的数据会直接通过主串口吐出),2是透传模式(主串口收到的数据直接通过网络发出,接收的数据直接通过主串口吐出)
但是,但是!!!默认传输的字符串类型数据不能通过传输模式传输hex格式数据。(需要厂家修改改和优化版本,目前的大规模生产版本仍然不支持)
AT QICLOSE=0
AT QICLOSE=0
OK
如果TCP主动连接失败或断开连接需要手动关闭TCP连接,再尝试TCP连接;
如果持续的TCP如果连接失败,则需要反激活场景,重新激活场景。
以上9项命令是网络处理过程中必要的命令。
此外,还需要处理模块主动吐出的消息:
QIURC: “closed”
QIURC: “recv”
QIOPEN: 0,0
3、其它命令
查询当前时间
AT QLTS=2 QLTS: "2022/07/19,22:13:16 32,0"
OK
查询信号强度
AT CSQ CSQ: 18,99
OK