模组通信概览:常见无线模组类型与AT指令集基础

做嵌入式开发这么多年,我接触过的无线模组少说也有几十款。从最早的GSM/GPRS,到现在的Wi-Fi、BLE、LoRa、NB-IoT,每种模组都有自己的脾气。说白了,选模组就像选工具——你得知道它擅长什么,不擅长什么。

这一章,我带大家把常见的无线模组类型捋一遍,再聊聊AT指令集这个“通用语言”。嗯,这些都是后续联调的基础,得打好。

常见无线模组类型

目前市面上主流的无线模组,我按应用场景分了四大类。咱们一个一个看。

模组类型 工作频段 典型速率 通信距离 功耗 典型场景
Wi-Fi 2.4GHz / 5GHz 11Mbps ~ 1Gbps 室内 30~100m 高 智能家居、摄像头、网关
BLE 2.4GHz 125Kbps ~ 2Mbps 10~100m 极低 穿戴设备、传感器、信标
LoRa Sub-1GHz 0.3Kbps ~ 50Kbps 2~15km 低 远距离传感器、智慧农业
NB-IoT 授权频段(LTE) ~250Kbps 10~15km 低 水表、气表、资产追踪

我的经验:选型时别只看参数表。Wi-Fi虽然快,但功耗高,电池供电的设备慎用。LoRa距离远,但速率低,传不了图片。NB-IoT需要SIM卡和运营商支持,部署成本要考虑进去。

Wi-Fi模组

Wi-Fi模组应该是大家最熟悉的。ESP8266、ESP32这些芯片,几乎成了物联网入门的标配。我个人习惯把Wi-Fi模组分成两类:

  • 透传型:比如ESP-01S,出厂自带AT固件,你发AT指令它就干活。适合快速原型验证。
  • SDK型:比如ESP32,你可以用ESP-IDF或Arduino写代码,自由度更高。适合量产产品。

我在项目中遇到过一个问题:用ESP8266做OTA升级,结果模组内存不够,升级到一半就挂了。后来换了ESP32,才搞定。你想想看,选型时留点余量,真的很重要。

BLE模组

BLE(低功耗蓝牙)这几年发展很快。它的核心优势是功耗极低,一颗纽扣电池能跑好几年。常见的BLE模组有Nordic的nRF51/nRF52系列、TI的CC254x系列,还有国产的DA14580。

BLE的通信模型是“主机-从机”模式。从机广播数据,主机扫描并连接。我建议初学者先搞清楚GATT(通用属性协议)的概念——它定义了服务和特征值,说白了就是数据怎么组织、怎么读写。

小技巧:调试BLE时,用手机上的nRF Connect或LightBlue工具扫描广播包,能快速验证模组是否在工作。我曾经靠这个工具,半小时就定位了一个广播间隔配置错误的问题。

LoRa模组

LoRa是一种扩频调制技术,主打远距离和低功耗。它工作在Sub-1GHz频段(中国是470~510MHz),穿透能力强,郊区环境下通信距离能到10公里以上。

常见的LoRa模组有Semtech的SX127x系列,以及集成了MCU的ASR650x。LoRa本身只定义了物理层,上层协议通常用LoRaWAN。嗯,这里要注意:LoRaWAN有Class A/B/C三种模式,Class A最省电,Class C延迟最低。

我记得有一次做智慧农业项目,传感器放在大棚里,用Wi-Fi覆盖不了,用NB-IoT又嫌贵。最后选了LoRa,一个网关覆盖了十几个大棚,效果很好。

NB-IoT模组

NB-IoT(窄带物联网)是3GPP定义的蜂窝物联网标准。它直接跑在运营商的授权频段上,不需要自己搭网关。常见的模组有移远BC95、BC26,中移物联M5310等。

NB-IoT的优势是覆盖深、安全性高、运营商级管理。但缺点也很明显:有流量费,而且不支持移动性(不能跨基站切换)。所以它最适合静态、低速率、小数据量的场景,比如智能水表、烟雾报警器。

避坑指南:我曾经在一个项目中用了NB-IoT模组,结果发现模组在弱信号下频繁重连,功耗反而比正常通信还高。后来加了信号强度判断逻辑,信号太差时就进入深度睡眠,问题才解决。

模组AT指令集基础

AT指令,说白了就是“Attention”的缩写。它最早用于调制解调器控制,后来被无线模组广泛采用。你通过串口发一串ASCII字符,模组就执行对应的操作。

AT指令的格式很简单:

AT+<命令名>=<参数1>,<参数2>,...

常见的AT指令分类:

  • 基础控制:AT(测试)、AT+RST(重启)、AT+GMR(查看版本)
  • 网络配置:AT+CWMODE(设置Wi-Fi模式)、AT+CWJAP(连接Wi-Fi)
  • 数据传输:AT+CIPSTART(建立TCP连接)、AT+CIPSEND(发送数据)
  • MQTT相关:AT+MQTTUSERCFG(配置MQTT)、AT+MQTTCONN(连接MQTT服务器)

我的习惯:拿到一个新模组,第一件事就是看它的AT指令集文档。我会把常用的指令整理成一个表格,贴在工位上。联调时遇到问题,先查指令格式对不对,能省很多时间。

AT指令通信流程

下面这张图展示了典型的AT指令交互流程。主控MCU通过UART发送指令,模组解析后返回响应。

AT指令通信流程 主控MCU 无线模组 AT+CWJAP="SSID","PWD" OK / ERROR +IPD,5:Hello URC(Unsolicited Result Code) 模组主动上报的数据,比如接收到的网络数据

流程很简单:MCU发指令 → 模组执行 → 返回结果。但实际联调时,有几个坑要注意:

  • 回车换行:AT指令必须以\r\n结尾,少一个都不行。我见过有人用\n代替,模组死活没反应。
  • 响应超时:有些指令执行时间长(比如连接Wi-Fi),MCU要设置合理的超时等待,别发完指令就急着读响应。
  • URC处理:模组可能随时主动上报数据(比如收到TCP数据),MCU的串口接收要能处理这种“异步消息”。

AT指令调试技巧

调试AT指令时,我建议先用串口助手(比如SSCOM、Putty)手动发指令,确认模组能正常响应。这一步能排除很多硬件连接问题。

调试步骤:

  1. 用USB转TTL工具连接模组,波特率通常设为115200或9600。
  2. 发AT指令,看是否返回OK。
  3. 发AT+GMR查看固件版本,确认模组正常。
  4. 逐步测试网络连接、数据传输等指令。

嗯,这里还要提一句:不同厂商的AT指令集有差异。比如乐鑫的ESP8266用AT+CWJAP连接Wi-Fi,而移远的EC200用AT+QICSGP配置APN。联调前一定要看对应的AT指令手册,别想当然。

本章小结

这一章我们聊了四种常见无线模组的特点和选型思路,也讲了AT指令集的基础用法。说白了,模组就是MCU和网络之间的“翻译官”,而AT指令就是你和翻译官沟通的“暗号”。