文章转载自 Alson

移远 EC800M-CN LTE Cat 1 模块 为例。

应用场景

初始化

默认波特率为 9600,1 位起始位,8 位数据位,1 位停止位,无校验。


  1. AT:测试模块是否收发正常。

    [10:24:02.368]发→◇AT
    
    [10:24:02.370]收←◆AT
    OK
    
    

  1. ATI:提供 MT 的 ID 信息。最大响应时间:300 ms

    [10:42:50.292]发→◇ATI
    
    [10:42:50.295]收←◆ATI
    Quectel
    EC800M
    Revision: EC800MCNGAR06A06M08
    
    OK
    
    

  1. AT+CIMI:查询 IMSI。最大响应时间:300 ms

    如果检测到卡,返回 460 开头国际移动用户识别码(IMSI)

    [10:29:42.722]发→◇AT+CIMI
    
    [10:29:42.725]收←◆AT+CIMI
    460115122109796
    
    OK
    
    

  1. AT+CSQ:查询信号强度。最大响应时间:300 ms

    [10:34:05.919]发→◇AT+CSQ
    
    [10:34:05.921]收←◆AT+CSQ
    +CSQ: 29,99
    
    OK
    
    

  1. AT+CGATT?:查询注册网络情况。最大响应时间:140 s,取决于网络状态。

    返回 1 代表注册成功。

    [10:39:28.514]发→◇AT+CGATT?
    
    [10:39:28.518]收←◆AT+CGATT?
    +CGATT: 1
    
    OK
    
    

TCP 通信

  1. AT+QICSGP:配置 TCP/IP 场景参数

    [10:51:53.940]发→◇AT+QICSGP=1,1,"CTNET","","",1
    
    [10:51:53.943]收←◆AT+QICSGP=1,1,"CTNET","","",1
    OK
    
    

    APN:接入点名称(Access Point Name),字符串参数。

    • 中国电信:CTNET
    • 中国移动:CMNET
    • 中国联通:UNINET

  1. AT+QIACT: 激活场景。最大响应时间:150 s,受网络状态影响。

    [10:57:47.880]发→◇AT+QIACT=1
    
    [10:57:47.883]收←◆AT+QIACT=1
    OK
    
    

  1. AT+QIACT?:查询激活状态。最大响应时间:150 s,受网络状态影响。

    [11:00:41.661]发→◇AT+QIACT?
    
    [11:00:41.664]收←◆AT+QIACT?
    +QIACT: 1,1,1,"10.238.250.166"
    
    OK
    
    

  1. AT+QIOPEN:打开 Socket 服务。最大响应时间:150 s,受网络状态影响。

    [12:40:17.144]发→◇AT+QIOPEN=1,0,"TCP","106.14.142.171",8001,0,1
    
    [12:40:17.147]收←◆AT+QIOPEN=1,0,"TCP","106.14.142.171",8001,0,1
    OK
    
    [12:40:17.272]收←◆
    +QIOPEN: 0,0
    
    
    • TCP 客户端连接成功,需等待 URC:+QIOPEN: <connectID>,<err> 响应, 建议等待 150 秒。若 150 秒内未收到 URC 响应,可以使用 AT+QICLOSE 断开 Socket。

    • 最后一个参数为 <access_mode>,代表 Socket 服务的数据访问模式。

      • 0:缓存模式
      • 1:直吐模式
      • 2:透传模式

  1. AT+QISEND:发送数据

    AT+QISEND=0,5
    > 
    [11:14:16.528]发→◇Hello
    [11:14:16.532]收←◆Hello
    SEND OK
    
    

    注意这里的 connectID 参数需要和 URC:+QIOPEN: <connectID>,<err> 中的保持一致。


  1. 接收数据

    +QIURC: "recv",0,6
    Hello
    
    

    直吐模式 下,模块接收到数据后会上报 URC 通知。

    • +QIURC: "recv",<connectID>,<currentrecvlength><CR><LF><data>

      • connectID:整型。Socket 连接号。范围:0~11。
      • currentrecvlength:整型。实际接收数据的长度。
      • data:读取的数据。

  1. AT+QICLOSE:关闭 Socket 服务。默认 10 秒,取决于 <timeout> 取值。

    [11:22:44.804]发→◇AT+QICLOSE=0
    
    [11:22:44.809]收←◆AT+QICLOSE=0
    OK
    
    

发送短信(文本模式)

文本模式下字符采用 ASCII 编码


  1. AT+QICSGP:配置 TCP/IP 场景参数。

  1. AT+CMGF:配置短消息模式。最大响应时间:300 ms

    [12:56:50.288]发→◇AT+CMGF=1[12:56:50.290]收←◆AT+CMGF=1
    OK
    
    
    • 0:PDU 模式
    • 1:文本模式

  1. AT+CMGS:发送短消息。最大响应时间:120 s,取决于网络状态。

    AT+CMGS="1825258xxxx"
    > 
    

    输入想发送的文本信息之后在输入 Ctrl + Z 触发发送(Ctrl + Z 也就是 0x1A)

    [13:07:25.648]发→Hello
    [13:07:25.653]收←Hello
    [13:07:32.773]发→
    [13:07:33.276]收←
    +CMGS: 84
    
    OK
    
    

读取短信(文本模式)

接收到短消息时,会有 URC +CMTI: <mem>,<index> 提示。

  • <mem>:短消息存储位置。

    • “SM”:(U)SIM 卡
    • “ME”: 移动设备
  • <index>:索引值

一般通过 AT+CNMI 设置短消息上报方式。


  1. AT+CSCS:设置 TE 字符集。最大响应时间:300 ms

    [13:29:03.656]发→AT+CSCS="GSM"
    
    [13:29:03.660]收←AT+CSCS="GSM"
    OK
    
    
    • <chset>:字符串类型

      • “GSM”: GSM 默认字符集
      • “IRA”:国际参考字符集
      • “UCS2”:UCS2 字符集

  1. AT+CNMI:设置短消息上报方式。最大响应时间:300 ms

    [13:24:45.438]发→◇AT+CNMI=1,2,0,1,0
    
    [13:24:45.442]收←◆AT+CNMI=1,2,0,1,0
    OK
    
    

    设置 SMS-DELIVER 消息直接发送至 TE


  1. 短消息提示

    [13:45:29.802]收←
    +CMT: "1825258xxxx",,"23/12/29,13:45:28+32"
    Hello
    
    

发送短信(PDU 模式)

PUD 模式下可以收发中英文短信


  1. AT+QICSGP:配置 TCP/IP 场景参数。

  1. AT+CMGF:配置短消息模式。最大响应时间:300 ms

    [13:53:34.214]发→◇AT+CMGF=0
    
    [13:53:34.217]收←◆AT+CMGF=0
    OK
    
    
    • 0:PDU 模式
    • 1:文本模式

  1. 短消息设置

    • 要发送的中文短信:你好,世界
    • 要发送的电话号码:+86181124xxxx1
    • 要接收的电话号码:+86182525xxxx7
    1. 对发送号码进行处理

      • 去掉首位的 “+” 号,末尾添加 “F”
        86181124xxxx1F

      • 交换奇偶位
        68811142xxxxF1

      • 首位添加 “91”
        9168811142xxxxF1

      • 首位添加 1 字节长度,长度为 08 (HEX)
        089168811142xxxxF1

    2. 对接收号进行处理

      • 去掉首位的 “+” 号,末尾添加 “F”,并做交换奇偶位
        68815252xxxxF7

      • 首位添加 “11000D91”,末尾添加 “0008AA”
        111000D9168815252xxxxF70008AA

    3. 对短信内容进行处理

      • 将中文短信内容转换为 UNICODE 编码
        4f60597dff0c4e16754c

      • 首位增加 1 字节长度,长度为 10 = 0A (HEX)
        0a4f60597dff0c4e16754c

    4. 组合,格式为:发送方 + 接收方 + 短信内容
      089168811142xxxxF1111000D9168815252xxxxF70008AA0a4f60597dff0c4e16754c


  1. AT+CMGS:发送短消息。最大响应时间:120 s,取决于网络状态。

    [14:52:04.929]发→◇AT+CMGS=26
    
    [14:52:04.933]收←◆AT+CMGS=26
    > 
    [14:52:17.567]发→089168811142xxxxF1111000D9168815252xxxxF70008AA0a4f60597dff0c4e16754c
    [14:52:17.571]收←089168811142xxxxF1111000D9168815252xxxxF70008AA0a4f60597dff0c4e16754c
    [14:52:24.369]发→
    [14:52:24.889]收←
    +CMGS: 85
    
    OK
    
    

    这里的 26 代表长度,长度 = (组合内容字符长度 / 2) + 1。

HTTP 通信

  1. AT+QHTTPCFG:配置 PDP 上下文 ID。

    设置命令:

    AT+QHTTPCFG=“contextid”[,<contextID>]

     [15:48:51.149]发→◇AT+QHTTPCFG="contextid",1
     
     [15:48:51.152]收←◆AT+QHTTPCFG="contextid",1
     OK
    
    • contextID:整型。PDP 上下文 ID。范围:[1,15]。默认值:1

  1. AT+QHTTPCFG:启用输出 HTTP 响应头信息。

    设置命令:

    AT+QHTTPCFG=“responseheader”[,<response_header>]

    [15:55:03.414]发→◇AT+QHTTPCFG="responseheader",1
    
    [15:55:03.417]收←◆AT+QHTTPCFG="responseheader",1
    OK
    
    • response_header:整型。禁用或启用输出 HTTP 响应头信息。
      • 0:禁用
      • 1:启用

  1. AT+QIACT:查询激活状态。最大响应时间:150 s,受网络状态影响。

    查询命令:

    AT+QIACT?

    [09:53:01.154]发→◇AT+QIACT?
    
    [09:53:01.174]收←◆AT+QIACT?
    OK
    

  1. AT+QICSGP:配置 PDP 上下文。

    设置命令:

    AT+QICSGP=<contextID>[,<context_type>,<APN>[,<username>,<password>)[,<authentication>]]]

    [09:56:28.572]发→◇AT+QICSGP=1,1,"UNINET","","",1
    
    [09:56:28.622]收←◆AT+QICSGP=1,1,"UNINET","","",1
    OK
    
    • contextID:整型。场景ID。范围:[1,15]。
    • context_type:整型。协议类型。
      • 1:IPv4
      • 2:IPv6
      • 3:IPv4v6
    • APN:字符串类型。接入点名称。
    • username:字符串类型。用户名。最大长度:127 字节。
    • password:字符串类型。密码。最大长度:127 字节。
    • authentication:整型。APN 鉴权方式。
      • 0:None
      • 1:PAP
      • 2:CHAP
      • 3:PAP or CHAP

  1. AT+QIACT:激活 PDP 状态。最大响应时间:150 s,受网络状态影响。

    设置命令:

    AT+QIACT=<contextID>

    [09:58:16.449]发→◇AT+QIACT=1
    
    [09:58:16.701]收←◆AT+QIACT=1
    OK
    
    • contextID:整型。场景ID。范围:1~15。

  1. AT+QIACT:查询激活状态。最大响应时间:150 s,受网络状态影响。

    查询命令:

    AT+QIACT?

    [09:59:05.372]发→◇AT+QIACT?
    
    [09:59:05.389]收←◆AT+QIACT?
    +QIACT: 1,1,1,"10.129.2.186"
    
    OK
    

  2. AT+QHTTPURL:设置 URL。最大响应时间:取决于参数 <timeout>

    设置命令:

    AT+QHTTPURL=<URL_length>[,<timeout>]

    [10:27:30.481]发→◇AT+QHTTPURL=27,80
    
    [10:27:30.497]收←◆AT+QHTTPURL=27,80
    CONNECT
    
    [10:27:36.105]发→◇http://106.14.142.171:8000/
    [10:27:36.113]收←◆
    OK
    
    • URL_length:整型。URL 长度。范围:[1,2048]。单位:字节。
    • timeout:整型。URL 的最大输入时间。范围:[1,65535]。默认值:60。单位:秒。

  1. AT+QHTTPGET:发送 GET 请求。最大响应时间:取决于参数 <rsptime>

    设置命令:

    AT+QHTTPGET=<rsptime>

    [10:31:39.280]发→◇AT+QHTTPGET=80
    □
    [10:31:39.296]收←◆AT+QHTTPGET=80
    OK
    
    • rsptime:整型。上报 OK 后,此参数为 HTTP GET 响应的最大响应时间。范围:[1,65535]。默认值:60。单位:秒。

    接收到来自 HTTP 服务器的响应后,将上报以下 URC:

    • +QHTTPGET: <err>[,<httprspcode>[,<content_length>]]
      • err:错误代码。
        • 0:操作成功
      • httprspcode:HTTP 服务器响应代码。
        • 200:响应成功
      • content_length:HTTP 响应体长度。

  1. AT+QHTTPREAD:通过 UART/USB 读取 HTTP 服务器响应信息。最大响应时间:取决于参数 <wait_time>

    设置命令:

    AT+QHTTPREAD=<wait_time>

    AT+QHTTPREAD=80
    CONNECT
    HTTP/1.0 200 OK
    Server: SimpleHTTP/0.6 Python/3.6.8
    Date: Mon, 25 Mar 2024 06:41:43 GMT
    Content-type: application/octet-stream
    Content-Length: 4
    Last-Modified: Mon, 25 Mar 2024 06:06:36 GMT
    
    ?
    OK
    
    +QHTTPREAD: 0
    
    
    • wait_time:整型。接收两个数据包之间的最大间隔时间。范围:1~65535;默认值:60;单位:秒。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐