基于 GSM 模块的智能家居短信控制系统
项目简介
利用 Arduino UNO 和 SIM900A GSM 模块,通过发送特定格式的短信远程控制家用电器(灯、风扇、电视等)。无需智能手机和互联网,普通功能机即可操作,适合网络覆盖差或老年人使用的场景。系统包含 16x2 LCD 状态显示、4 路继电器控制,命令格式为 #A.设备名 on/off*,具有前缀校验和结束符,抗干扰性强。
所需材料
- Arduino UNO
- SIM900A GSM/GPRS 模块(四频段,支持 850/900/1800/1900MHz)
- 12V 4 路继电器模块(带光耦隔离,驱动电流约 20mA/路)
- 16x2 RGB 背光 LCD(I2C 或并口均可,示例为并口)
- 12V 电源适配器(≥2A,供电 GSM 模块和继电器)
- 焊接工具、杜邦线、面包板或万用板
核心原理
AT 指令集要点
AT:测试通信,返回 OKATE0:关闭回显AT+CMGF=1:设置文本模式AT+CNMI=2,2,0,0,0:新短信直接通过串口输出,无需读取指令AT+CMGR:读取短信,AT+CMGS:发送短信
命令解析流程
- GSM 模块收到短信,通过串口(TX/RX)发送给 Arduino
- Arduino 读取串口字符串,提取
#A.与*之间的内容 - 与预设指令对比(如
light on、fan off) - 匹配成功则驱动对应继电器(ULN2003 驱动),并在 LCD 更新状态
硬件接线
LCD(并口 4-bit 模式)
- RS → D6, EN → D7, D4-D7 → D8-D11
- VSS/RW/K → GND, VDD/A → 5V, V0 → 电位器调节对比度
GSM 模块
- TXD → Arduino RX (D0)
- RXD → Arduino TX (D1) (需分压至 3.3V)
- VCC → 12V 适配器,GND 共地
继电器
- IN1-IN3 → Arduino D3, D4, D5(通过 ULN2003 驱动)
- 继电器模块 JD-VCC 接 12V,VCC 接 5V,GND 共地
代码关键片段
#include <LiquidCrystal.h>
LiquidCrystal lcd(6, 7, 8, 9, 10, 11);
const char* CMD_PREFIX = "#A.";
const char* CMD_SUFFIX = "*";
String inputString = "";
bool stringComplete = false;
void setup() {
Serial.begin(9600); // 与 GSM 模块通信
lcd.begin(16, 2);
pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT);
// 发送 AT 初始化指令
sendAT("ATE0");
sendAT("AT+CMGF=1");
sendAT("AT+CNMI=2,2,0,0,0");
}
void loop() {
if (stringComplete) {
parseCommand(inputString);
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char c = Serial.read();
inputString += c;
if (c == '*') stringComplete = true; // 以 * 结束
}
}
void parseCommand(String cmd) {
if (cmd.startsWith(CMD_PREFIX) && cmd.endsWith(CMD_SUFFIX)) {
String core = cmd.substring(3, cmd.length() - 1); // 去除前缀后缀
if (core == "light on") { digitalWrite(3, HIGH); lcd.print("Light ON"); }
else if (core == "light off") { digitalWrite(3, LOW); lcd.print("Light OFF"); }
// ... fan, tv 同理
}
}
扩展建议
- 增加密码验证:命令格式改为
#A.密码.light on* - 加入状态查询指令:发送
#A.status*回复当前所有设备状态 - 使用 SIM800L 替代 SIM900A,体积更小、功耗更低、支持 HTTPS
- 结合光敏/温度传感器实现自动化:光线暗自动开灯、温度高开风扇
- 设计 PCB 并配 3D 打印外壳,做成成品化设备
安全提示
短信指令建议添加简单加密或校验码,防止陌生号码误控。生产环境请务必在继电器端加装保险丝和压敏电阻,确保用电安全。
制造工艺
- 打造低成本家庭无线传感器网络:Arduino + 树莓派 + Xively 物联网平台
- 树莓派打造家庭自动化系统:手机远程控制灯风扇大门
- DIY Arduino 冷镜露点仪:高精度温湿度监测
- Pixie:基于 Arduino Pro Mini 的 NeoPixel 智能腕表 - 极简 DIY LED 时钟
- 实体智能家居交互界面:基于 Arduino Yun 与 MQTT 的物理模型房屋
- Arduino Nano 驱动 128x64 OLED 实时运行康威生命游戏 (元胞自动机)
- 自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动
- Alexa 语音控制 Arduino 智能家居中枢:基于 Yun + PubNub + AWS Lambda 全栈实现
- 基于 Arduino 与 Google Sheets 的实时 RFID 考勤系统
- 基于 Arduino Mega 与物联网传感器的高级家庭监控系统
- 基于 Arduino UNO 构建可靠的智能能源监测仪——分步指南
- 智能家居技术如何重塑日常生活