基于 1Sheeld 的智能家居安防系统:语音/短信控制与入侵报警
所需元器件
- Arduino UNO × 1
- 1Sheeld 扩展板 × 1
- 4路继电器模块 (YW Robot) × 1
- 蜂鸣器 × 2
- LM35DZ 温度传感器 × 1
- PIR 人体红外传感器 × 1
- 磁簧门窗传感器 × 2
- 1602 LCD 液晶显示屏 (I2C 或并口) × 1
- 面包板、杜邦线若干
所需工具
- 激光切割机 (用于外壳制作)
- 电烙铁、热熔胶枪等基础工具
项目概述
本项目利用 1Sheeld 将智能手机变身为 40 多种 Arduino 扩展板,实现无需额外购买 Wi-Fi、蓝牙、GPS、语音识别、短信、邮件、文本转语音等模块即可构建功能完善的智能家居安防系统。系统具备以下核心功能:
- 语音控制灯光:说出 "Jarvis" 唤醒词后,可通过 "reception on/off"、"bedroom on/off" 等指令控制四路灯光(客厅、卧室、浴室、厨房)。
- 短信远程控制:发送 "on" 或 "off" 短信可全开/全关灯光,执行后自动回复确认邮件。
- 安防布防/撤防:语音 "security on/off" 启用/禁用安防模式。布防状态下,门窗磁簧传感器触发将驱动蜂鸣器报警并发送邮件通知。
- 温度过热报警:LM35DZ 检测厨房温度,超过 35℃ 触发蜂鸣器并发邮件(代码中已注释,可自行启用)。
- 实时反馈:LCD 显示状态,1Sheeld 文本转语音播报操作结果,仿真 "Jarvis" 助手交互体验。
硬件连接要点
继电器模块 (低电平触发)
- IN1-IN4 分别接 Arduino A1-A4 (对应客厅、卧室、浴室、厨房灯)
- VCC 接 5V,GND 接地,JD-VCC 可接 5V 或外部供电
磁簧门窗传感器
- 客厅门接 D8,阳台门接 D9,均启用内部上拉电阻 (
INPUT_PULLUP) - 安装时需标定:门关闭时读数为 LOW,打开为 HIGH (或相反,视接线而定)
温度传感器 LM35DZ
- VCC → 5V,GND → GND,OUT → A0
- 输出电压 10mV/℃,Arduino 读取模拟值换算温度
蜂鸣器
- 安防报警蜂鸣器接 A5
- 温度报警蜂鸣器接 D10
LCD 1602 (并口模式)
- RS、E、D4-D7 接 D2-D7
- 自定义笑脸字符用于欢迎界面
1Sheeld App 配置流程
- 安装 1Sheeld App (Android/iOS),蓝牙配对开发板 (默认配对码 1234)。
- 在 App 中启用以下 Shield:Voice Recognition (语音识别)、Text To Speech (语音合成)、Clock (时钟)、SMS (短信)、Email (邮件)。
- 确保 1Sheeld 板载 UART 开关:上传代码时拨至 "Uploading",运行时拨回 "Operating",否则无法通讯。
核心代码逻辑 (节选)
// 主循环关键片段
void loop() {
Clock.queryDateAndTime(); // 获取手机时间
SMS.setOnSmsReceive(MyFunction); // 短信回调
VoiceRecognition.start(); // 启动语音监听
OneSheeld.delay(8000); // 监听 8 秒
if (VoiceRecognition.isNewCommandReceived()) {
// 1. 唤醒词 "jarvis"
if (strcmp(mainCommand, VoiceRecognition.getLastCommand()) == 0) {
TextToSpeech.say("yes sir");
state = 1; // 进入命令等待态
}
// 2. 灯光控制指令 (需 state==1)
else if (strcmp(receptionCommandOn, ...) == 0 && state==1) { ... }
// ... 其他房间指令类似 ...
// 3. 安防布防/撤防
else if (strcmp(securityModeOn, ...) == 0 && state==1) { security=true; ... }
else if (strcmp(securityModeOff, ...) == 0 && state==1) { security=false; ... }
}
// 安防逻辑:布防时检测磁簧状态
if (security) {
if (digitalRead(magneticReception)==HIGH || digitalRead(magneticBalacony)==HIGH) {
tone(buzzer1, 1500);
Email.send("your@email.com", "Home Security", "Intruder detected!");
} else noTone(buzzer1);
}
// 温度报警 (可选)
// int voltage = analogRead(A0) * 1100 / 1024;
// int degree = voltage / 10;
// if (degree >= 35) { tone(buzzer2,1500); Email.send(...); }
}
短信/邮件回调函数
void MyFunction(char* phoneNumber, char* messageBody) {
if (strcmp(messageBody, "on") == 0) {
// 全开灯光
digitalWrite(receptionLamp, LOW); // 低电平触发
// ... 其他三路 ...
TextToSpeech.say("all lights was turned on");
Email.send("your@email.com", "Home Security", "All Lights Turned ON");
} else if (strcmp(messageBody, "off") == 0) {
// 全关灯光
digitalWrite(receptionLamp, HIGH);
// ...
TextToSpeech.say("all lights was turned off");
Email.send("your@email.com", "Home Security", "All Lights Turned OFF");
}
}
关键提示与避坑指南
- UART 开关:上传代码前必须拨至 Uploading,上传完成后拨回 Operating,否则 1Sheeld 与 Arduino 无法通讯。
- 唤醒词机制:必须先说 "Jarvis",系统回应 "yes sir" 后才能下达控制指令,防止误触发。
- 邮件发送频率:1Sheeld Email Shield 有发送频率限制,代码中用
OneSheeld.delay(3500)间隔,避免被封禁。 - 磁簧传感器标定:安装前用万用表或串口监视器确认常开/常闭状态,代码中用
INPUT_PULLUP,门关闭通常为 LOW。 - 继电器电平:代码中
LOW导通 (灯亮),HIGH断开 (灯灭),对应低电平触发模块;若用高电平触发模块需取反。 - 供电:4路继电器+蜂鸣器+传感器建议外接 5V/2A 以上电源,Arduino 5V 引脚供电能力有限。
- 代码内存:启用
CUSTOM_SETTINGS仅包含用到的 Shield,节省 Flash/RAM。
扩展建议
- 加入 GPS Shield 实现离家/回家自动布防撤防。
- 接入 Camera Shield 报警时拍照上传邮件。
- 使用 Push Notification Shield 替代/补充邮件,实时性更强。
- 设计 PCB 替代面包板,配合激光切割外壳,做成成品级设备。
- 将温度报警阈值、报警联系人等参数存入 EEPROM,掉电保存,通过蓝牙 App 配置。
制造工艺
- 基于 Sensorflare 与树莓派的 433 MHz 智能家居控制器构建指南
- 树莓派家庭安防系统:PIR 运动检测 + 摄像头邮件报警
- 基于 Arduino 与 Python 的可靠 RFID 考勤系统
- 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
- 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
- Arduino 声纳实时测距与 Processing 可视化
- DIY 智能 Arduino 机械臂:主从控制与动作记忆教程
- Arduino Yun + Sharp Plasmacluster 智能空气净化器系统
- 1Sheeld + Arduino 手机无线控制家庭灯光系统
- Arduino 智能安防系统:超声波测距 + 舵机扫描 + 声光报警
- Silicon Labs 在 Embedded World 2019 展示面向智能家居与楼宇自动化的先进 Wireless Gecko 方案
- 智能家居技术如何重塑日常生活