SIM800L GPRS 模块与 Arduino 对接 AT 指令教程
组件与物料
| Arduino UNO | ×1 |
| SIM800L GPRS 模块 | ×1 |
| 1N4007 二极管 (供电降压保护) | ×1 |
所需工具
- 数字万用表 (测电压/电流)
- 170 孔面包板
- 公对公杜邦线
项目背景
想用 Arduino 实现短信、来电、GPRS 上网功能?SIM800L 是低成本四频 GSM/GPRS 模块,通过 AT 指令控制。本文详细讲解接线要点、供电技巧与 AT 指令测试流程。
关键接线与供电
- 电源:SIM800L 工作电压 3.4-4.4V,峰值电流达 2A。**严禁直接接 Arduino 5V/3.3V 引脚**。推荐:外接 3.7V 锂电池或 DC-DC 降压模块 (设为 4.0V)。本文演示用 Arduino 5V 经 1N4007 二极管 降压 (~0.7V) 供电,仅适合低功耗测试,长期运行需独立大电流电源。
- 串口:模块 TX→Arduino D10 (软串口 RX),RX→Arduino D11 (软串口 TX) **需分压至 2.8V** (电阻分压 1k/2k)。
- 复位:RST 脚可接 Arduino 控制复位,或悬空内部上拉。
- SIM 卡:注意插卡方向 (缺口朝向丝印)。







AT 指令测试步骤
- 上传下方透传代码
- 打开串口监视器,**波特率 9600,换行符选 "Both NL & CR"**
- 输入
AT回车,收到OK表示通信正常 - 常用指令:
AT+CSQ信号质量 (0-31, >10 可用)AT+CREG?网络注册状态AT+CMGF=1设置短信文本模式AT+CMGS="号码"发送短信 (以 Ctrl+Z 结束)ATD号码;拨打电话ATH挂断
透传测试代码
/* SIM800L AT 指令透传测试 - by iakbasnayaka */
#include <SoftwareSerial.h>
SoftwareSerial Sim800l(10, 11); // RX, TX
void setup() {
Serial.begin(9600);
Sim800l.begin(9600);
Serial.println("SIM800L AT Command Test Ready");
}
void loop() {
while (Sim800l.available()) {
Serial.write(Sim800l.read()); // 模块→电脑
}
while (Serial.available()) {
Sim800l.write(Serial.read()); // 电脑→模块
}
}
注意事项
- **供电是成败关键**:必须保证 3.7-4.2V 且峰值电流 >2A,否则模块频繁重启、无法注网
- 天线必须连接,且远离金属屏蔽
- SIM 卡需激活、欠费停机会导致注网失败
- 软串口 9600 波特率稳定,更高波特率易丢包
- 模块发热正常,建议加散热片
自定义外壳提示
切记使用 1N4001/1N4007 二极管给模块供电 (仅作演示)

原理图

制造工艺
- 在树莓派 3 上扩展 GoPiGo v2 的 Windows 10 IoT Core 应用
- Arduino Nano高速摄影控制器 – 定格水滴碰撞瞬间
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- JX 波形发生器 – 基于 Arduino 的 DDS 振荡器,带 OLED 显示屏
- Arduino Mega 2560 接 NEO-6M GPS 模块完整教程
- Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
- Arduino DIY 电压表:Nokia 5110 屏幕显示,手把手教学
- 使用 SparkFun 7 段数码管构建可靠的 Arduino 倒计时器
- 语音控制家电:Google Assistant + 蓝牙 + Arduino UNO
- u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
- 使用 Nextion 显示屏构建 Fridgeye 应用:分步指南
- 自制 Arduino 遥控保时捷赛车:从改装底盘到手机 App 控制全攻略