尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

4G模组AT指令速查:移远EC200联网调试全流程

4G模组AT指令速查:移远EC200联网调试全流程 4G模组AT指令被电扯淡的调试过程折磨到怀疑人生先说结论移远 EC200 模组联网的 90% 问题出在三个地方——电源不稳、波特率不对、没插 SIM 卡。先查这三项再看 AT 指令。调试顺序硬件通 → SIM卡 → 信号 → 注网 → APN → 连接。每一步用 AT 指令确认通过再做下一步跳步是调试的大敌。一、硬件先决条件1.1 电源EC200 系列峰值电流2A发射时。3.3V LDO 供不动必须用 DC-DCVCC 电压范围3.3V-4.3V建议3.8V去耦电容100μF 电解 10μF 陶瓷 100nF 陶瓷紧贴 VCC 引脚1.2 SIM 卡SIM 卡座 VDD别和 MCU VDD 混。模组会给 SIM 卡供电1.8V 或 3VSIM 卡数据线串22Ω 电阻减少信号过冲1.3 UART波特率默认115200。模组自适应波特率但建议固定TX/RX/GND 三根线必须接。硬件流控RTS/CTS可选大数据量建议接二、AT 指令调试流程第一步串口能不能通AT OK如果串口返回OK说明模组上电正常UART 通信 OK。如果什么都没返回检查 TX/RX 是否接反检查波特率试 9600、115200、921600检查模组电源指示灯是否亮检查 PWRKEY 引脚是否需要拉低开机第二步查 SIM 卡ATCPIN? CPIN: READY OK返回CPIN: READY→ SIM 卡识别成功返回CME ERROR: 10SIM not inserted→ SIM 卡没插好 / SIM 卡座焊接问题 / SIM 卡本身坏返回CME ERROR: 11SIM PIN required→ SIM 卡有 PIN 码需用ATCPIN1234输入 PIN第三步查信号ATCSQ CSQ: 22, 0 OKCSQ 值含义CSQ信号强度说明0-9极差几乎无法通信10-14差容易掉线15-19一般基本可用20-25良好正常使用26-31优秀信号强99未知模组没检测到CSQ 10 时先检查天线。用弹簧天线比 PCB 天线好。第四步注网ATCGREG? CGREG: 0, 1 OK第二个参数含义值状态0未注册1已注册本地网5已注册漫游2搜索中3拒绝如果一直返回 0 或 2未注册/搜索中SIM 卡是否已激活套餐检查频段是否被锁定到错误频段重启模组ATCFUN1,1第五步查运营商ATCOPS? COPS: 0, 0, CHINA MOBILE OK显示当前运营商。如果需要手动选网ATCOPS1,0,CHINA MOBILE三、建立数据连接3.1 中国移动 APN 配置ATQICSGP1,1,CMCC,,,1 OK参数1context ID1IP 类型1IPv4“CMCC”APN 名称移动用 CMCC 或 cmnet联通用 3gnet电信用 ctnet“”,“”用户名/密码一般为空1IP 版本1IPv42IPv63IPv4v63.2 激活 PDPATQIACT1 OK ATQIACT? QIACT: 1, 1, 1, 10.123.45.67 OK第三个参数1表示已激活第四个是分配的 IP 地址。如果激活失败APN 配置错误信号太差套餐已用完/已停机检查是否已注册网络CGREG13.3 TCP 连接// 打开TCP连接 ATQIOPEN1,0,TCP,api.example.com,8080 OK QIOPEN: 0, 0参数1context ID和 QIACT 的 ID 对应0connect ID0-11 可选标识这条连接“TCP”协议“api.example.com”服务器地址8080端口第二个参数为0表示连接成功。非 0 是错误码。3.4 发送数据ATQISEND0,10 hello world OK SEND OK发送 10 字节数据。模组返回提示符后输入数据不会回显CtrlZ0x1A结束发送。3.5 接收数据模组收到数据时主动上报QIURC: recv, 0, 50 // 收到50字节数据主动读取ATQIRD0, 100 QIRD: 50 // 数据内容 OK3.6 MQTT 连接EC200 内置 MQTT// 配置MQTT参数 ATQMTCFGversion,0,4 ATQMTCFGkeepalive,0,60 ATQMTCFGtimeout,0,30,5 // 建立MQTT连接 ATQMTOPEN0,broker.example.com,1883 OK QMTOPEN: 0, 0 // 0表示连接成功 // 登录 ATQMTCONN0,client_id,username,password OK QMTCONN: 0, 0, 0 // 0,0表示连接成功并已登录 // 订阅 ATQMTSUB0,1,sensor/temp,1 OK QMTSUB: 0, 1, 0 // 订阅成功 // 发布 ATQMTPUB0,0,1,0,sensor/data hello OK SEND OK QMTPUB: 0, 0, 0 // QoS1的ACK3.7 HTTPS 请求ATQSSLCFGsslversion,2,4 // TLS1.2 ATQSSLCFGciphersuite,2,0x00FF ATQHTTPURL32,80 // 输入URL: https://api.example.com/data OK ATQHTTPPOST50,80,80 输入POST数据 OK QHTTPPOST: 0, 200, OK // HTTP 200响应四、超时参数一览AT指令默认超时建议值说明ATCGREG60s-等待注网ATQIACT150s-激活PDPATQIOPEN75s60sTCP连接ATQISEND5s10s发送数据ATQMTOPEN60s-MQTT连接ATQMTCONN60s-MQTT登录五、常见错误码错误码含义解决方案CME ERROR: 10SIM卡未插入检查SIM卡座CME ERROR: 13SIM卡注册失败SIM卡是否欠费CME ERROR: 100ISD无响应SIM卡坏CME ERROR: 3未注网先注网再建连接CME ERROR: 53DNS解析失败检查域名是否正确CME ERROR: 54连接超时检查服务器和端口六、STM32 驱动代码// AT指令发送和等待响应intsend_at_cmd(UART_HandleTypeDef*uart,constchar*cmd,char*response,intresp_size,uint32_ttimeout_ms){memset(response,0,resp_size);// 发送命令HAL_UART_Transmit(uart,(uint8_t*)cmd,strlen(cmd),100);HAL_UART_Transmit(uart,(uint8_t*)\r\n,2,100);// 等待响应uint32_tstartHAL_GetTick();intidx0;uint8_tch;while(HAL_GetTick()-starttimeout_ms){if(HAL_UART_Receive(uart,ch,1,10)HAL_OK){if(idxresp_size-1){response[idx]ch;}// 检查是否收到OK或ERRORif(strstr(response,OK)||strstr(response,ERROR)||strstr(response,CME ERROR)){break;}}}response[idx]0;if(strstr(response,OK))return0;if(strstr(response,ERROR))return-1;return-2;// 超时}// 完整联网流程intec200_connect_network(UART_HandleTypeDef*uart){charresp[512];// 1. 检查通信if(send_at_cmd(uart,AT,resp,sizeof(resp),1000)!0){printf(AT failed\n);return-1;}// 2. 检查SIM卡if(send_at_cmd(uart,ATCPIN?,resp,sizeof(resp),5000)!0){printf(SIM not ready\n);return-2;}// 3. 检查信号send_at_cmd(uart,ATCSQ,resp,sizeof(resp),1000);intcsqparse_csq(resp);if(csq10){printf(Signal too weak: CSQ%d\n,csq);return-3;}// 4. 等待注网intretries0;while(retries30){send_at_cmd(uart,ATCGREG?,resp,sizeof(resp),1000);if(strstr(resp,CGREG: 0, 1)||strstr(resp,CGREG: 0, 5)){break;}HAL_Delay(2000);}if(retries30){printf(Network registration failed\n);return-4;}// 5. 配置APNsend_at_cmd(uart,ATQICSGP1,1,\CMCC\,\\,\\,1,resp,sizeof(resp),10000);// 6. 激活PDPsend_at_cmd(uart,ATQIACT1,resp,sizeof(resp),30000);// 7. 查IPsend_at_cmd(uart,ATQIACT?,resp,sizeof(resp),5000);printf(IP: %s\n,resp);return0;}七、踩坑清单模组关机不是 AT 指令能控制的PWRKEY 需要物理拉低 2 秒。MCU 用 GPIO 控制 PWRKEY重启后 AT 端口波特率变化部分固件重启后波特率恢复默认 9600。配置后存到非易失存储ATIPR115200;W大缓冲区接收TCP 单次接收可能几 KB。STM32 UART 接收缓冲区设 4KB 以上配合 DMAUDP 和 TCP 切换一条 connect ID 只能用一种协议。ATQICLOSE0关连接后再切固定波特率 vs 自适应自适应波特率可能导致首次 AT 指令超时。开机后先发ATIPR115200固定波特率一句话总结4G 模组调试的顺序——硬件通 → SIM 卡 → 信号 → 注网 → APN → 连接。每一步用 AT 指令确认通过再做下一步。跳步是调试的大敌。
返回列表