当前位置: 首页 > ai >正文

一文带你入门 AT 指令集:从串口通信到模块控制

在嵌入式开发、物联网以及通信模块调试中,有一个你迟早会遇到的重要工具 —— AT 指令

无论是 GSM 模块打电话发短信、WiFi 模块联网、蓝牙模块配对,还是 GNSS 模块获取定位,AT 指令都扮演着人机通信的桥梁。


AT 指令能做什么?(结合模块场景)

AT 指令的本质是 “通过串口发送文本命令,直接控制模块功能”
根据不同模块,AT 指令能完成的任务大致分为两大类:

① 移动通信模块(GSM / GPRS / LTE)

  • 设备控制:模块开机、复位、查询版本信息

  • 网络接入:注册运营商网络,检查信号强度

  • 通话与短信:拨打电话、发送/接收短信

  • 移动数据:PPP 拨号上网,建立 TCP/UDP 连接,上报数据到服务器

② 终端通信模块(WiFi / 蓝牙 / GNSS)

  • WiFi 模块:连接路由器、建立 TCP/UDP、MQTT

  • 蓝牙模块:搜索、配对、数据透传

  • GNSS 模块:开启定位、输出经纬度、查询定位状态

大白话:AT 指令就是“模块的遥控器”。在 GSM/LTE 模块里,它能打电话、发短信、上网;

在 WiFi/蓝牙/GNSS 模块里,它能连路由、配对手机、获取定位。学会 AT 指令,就能直接操作通信模块的所有核心功能。


1. 什么是 AT 指令?

AT 指令(Attention Command)是一种用于控制调制解调器(Modem)或通信模块的命令集。

如今,它被广泛应用于:

  • 移动模块:GSM / GPRS / LTE 模块(SIM800、Quectel、移远)

  • 终端模块:WiFi 模块(ESP8266、ESP32)、蓝牙模块(HC-05)、GNSS 模块(Neo-6M)

 本质:通过串口发送的“文本命令”,用来控制模块的行为

大白话:AT 指令的本质就是“发文本命令,模块照做”。最早用于调制解调器,现在几乎所有通信模块都支持。


2. AT 指令的基本格式

类型

说明

示例

测试命令

查询模块是否支持参数

AT+CMD=?

查询命令

读取模块当前配置

AT+CMD?

设置命令

配置模块参数

AT+CMD=参数

执行命令

执行某操作

AT+CMD

通用规则:

  • 所有命令以 AT 开头;

  • 命令以 回车换行(\r 或 \r\n) 结束;

  • 返回结果通常为:

    • OK:执行成功

    • ERROR:命令错误或参数非法

    • +CMD: xxx:返回查询结果

大白话:AT 指令的格式很规律:测试、查询、设置、执行。记住:都要以 AT 开头、回车结尾,返回 OK 就成功。


3. 常见模块 AT 指令示例

移动模块(SIM800 为例)

AT              // 测试串口是否通信正常AT+CSQ          // 查询信号强度AT+CREG?        // 查询网络注册状态ATD10086;       // 拨打电话AT+CMGF=1       // 设置短信为文本模式AT+CMGS="手机号" // 发送短信


WiFi 模块(ESP8266 为例)

AT                       // 测试模块是否响应AT+CWMODE?               // 查询当前工作模式AT+CWMODE=1              // 设置为 Station 模式AT+CWJAP="SSID","PWD"    // 连接 WiFiAT+CIPSTART="TCP","ip",port // 建立 TCP 连接AT+CIPSEND=5             // 准备发送数据


GNSS 模块(ATGM 为例)

AT+CGPS=1          // 打开 GPSAT+CGPSINFO        // 获取定位信息AT+CGPSSTATUS?     // 查询定位状态


大白话:不同模块的 AT 指令大同小异:GSM 模块能打电话发短信,WiFi 模块能联网传数据,GNSS 模块能获取经纬度。就是一套“问答语言”,用在哪儿就干哪儿的事。


4. AT 指令调试工具

常见串口调试工具:

  • Windows:SSCOM、XCOM、SecureCRT

  • Arduino IDE 串口监视器(适合 ESP32、蓝牙等)

  • Linux:minicom、picocom

串口常见配置:

  • 波特率:9600 / 115200(视模块而定)

  • 数据位:8

  • 停止位:1

  • 校验:None

  • 结束符:\r 或 \r\n

大白话:要和模块聊天,需要一个“串口聊天工具”。配置好波特率和结束符,才能让模块听懂你说话。


5. 实战调试技巧

  • 判断串口是否连通AT → 返回 OK 即正常

  • 模块“死机”:用 AT+RST 复位,或检查电源供电是否足够

  • 批量测试命令:用串口助手的“宏命令/脚本”功能自动发送

打包话:调试秘诀:先发 AT 看有没有 OK,不行就复位+查供电,命令多了就用脚本,省力高效。


6. 自定义 AT 指令(高级玩法)

在 STM32 / MCU 项目中,也可以仿照模块写自己的 AT 指令:

if (strncmp(cmd, "AT+LED=ON", 9) == 0) {
led_on();
send_response("OK\r\n");
} elseif (strncmp(cmd, "AT+LED=OFF", 10) == 0) {
led_off();
send_response("OK\r\n");
} else {
send_response("ERROR\r\n");
}

大白话:你不仅能用模块的 AT 指令,还能写自己的。别人只要发命令,就能控制你的设备,这就是 DIY 的乐趣。


7. 常见问题 FAQ

  • Q: AT 指令能发中文吗?
    A: 直接不行,大多数模块只支持 ASCII,需要转 UCS2/PDU。

  • Q: 为什么返回 ERROR?
    A: 参数不合法、格式错误、模块未初始化或不支持该状态。

  • Q: 为什么响应慢?
    A: 模块需要等待初始化,比如 GSM 模块上电要 5~10 秒。

大白话:AT 指令常见坑:中文要转码;ERROR 多半是命令/状态问题;响应慢是因为模块还没准备好。


http://www.xdnf.cn/news/19635.html

相关文章:

  • 【智能体开发】怎样提升AI智能体的运行速度?
  • 实验2-代理模式和观察者模式设计
  • C++全局变量未初始的和已初始化的位置放在哪里?
  • C语言————实战项目“扫雷游戏”(完整代码)
  • 【Spring Cloud微服务】9.一站式掌握 Seata:架构设计与 AT、TCC、Saga、XA 模式选型指南
  • MD5加密算法详解与实现
  • 【LeetCode_26】删除有序数组中的重复项
  • 手撕Redis底层2-网络模型深度剖析
  • 云电脑是什么?与普通电脑的区别在哪里?——天翼云电脑体验推荐
  • 全国产FT-M6678核心板
  • SQL JOIN 操作全面解析
  • 哈希表-面试题01.02.判定是否互为字符重排-力扣(LeetCode)
  • 【LeetCode数据结构】栈和队列的应用
  • 在windows平台oracle 23ai 数据库上使用bbed
  • 面阵 vs 线阵相机:怎么选不踩坑?选型公式直接套用
  • SQLShift 实现Oracle 到 OceanBase 的存储过程转换初体验
  • 【Vue2 ✨】 Vue2 入门之旅(六):指令与过滤器
  • 阿里云和华为云Rocky LINUX 9.X镜像就绪及低端可用英伟达GPU
  • Google NotebookLM最强替代品评测:AI笔记、语音生成与高效知识管理工具盘点
  • 【Linux基础知识系列:第一百一十八篇】使用perf进行性能分析
  • Day33 网络编程:OSI/TCP/IP模型、协议族与UDP编程
  • 【新启航】3D 逆向抄数的三维能力架构:数据采集工具操作 × 几何处理算法应用 × 行业场景适配技能
  • 微硕WINSOK大功率MOS管 WSF3085在汽车关键系统中的创新应用
  • 【世纪龙科技】汽车专业数字化课程资源包-虚拟仿真实训资源建设
  • 2025大学生必考互联网行业证书排名​
  • Nginx 全攻略:从部署到精通的实战指南(CentOS 环境)
  • 腾讯混元世界模型Voyager开源:单图生成3D世界的“核弹级”突破,游戏、VR、自动驾驶迎来新变量
  • Nature | 克隆拷贝数多样性影响肺癌生存
  • 大模型适配国产化服务器昇腾(300I DUO)
  • 多人语音分离模型效果展示与本地部署实践