Arduino Yun 入侵报警器 – 超声波检测 + 短信告警 (Twilio + Temboo)
组件与物料
| Arduino Yun(或 Leonardo + WiFi 扩展板) | ×1 |
| HC-SR04 超声波测距模块 | ×1 |
| 9V 电池及电池盒(带开关) | ×1 |
| 杜邦线 | ×4 |
| 迷你面包板(可选) | ×1 |
应用与在线服务
- Temboo 云服务(调用 API)
- Twilio SMS API(发送短信)
工作原理
- HC-SR04 持续发射超声波脉冲,测量往返时间计算距离
- 检测到距离突变(有人闯入)时,Arduino Yun 通过 WiFi 调用 Temboo Choreo
- Temboo 触发 Twilio API 发送短信到预设手机号
无需焊接,约 45 分钟完成。成本约 $80-$90(含 Yun 板)。
步骤 1:接线与测试超声波模块
VCC→5V, GND→GND, Trig→D2, Echo→D4。上传测试代码,打开串口监视器 (9600 波特率),观察距离读数。若距离 <20 英寸或 >1000 英寸则打印 "Intruder Detected!"。
步骤 2:连接 WiFi
Yun 板按官方指南连接本地 WiFi;Leonardo + WiFi 扩展板参考对应文档。可用局域网扫描工具确认连接成功。
步骤 3:添加短信功能
- 在 Arduino IDE 新建草图,粘贴完整代码
- 新建标签页命名
TembooAccount.h,粘贴账号信息模板 - 注册 Temboo 和 Twilio 账号,获取:
- Twilio Account SID、Auth Token、发送号码
- Temboo Account Name、App Key Name、App Key
- 将上述凭据填入代码对应位置(电话号码格式:+1xxxxxxxxxx)
- 上传代码,接上 9V 电池,打开串口监视器验证
步骤 4:调整灵敏度
代码中 if (inches < 20 || inches > 1100) 判断阈值需根据安装环境调整。建议先用测试代码观察正常距离范围,再设定触发阈值,避免误报消耗免费 API 额度(每上电最多 10 次发送)。
代码
测试代码 (无短信)
// 测试代码
#include <SoftwareSerial.h>
int trigPin = 2;
int echoPin = 4;
long duration, cm, inches;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
delay(5000);
Serial.println("巡逻模式启动...");
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(1);
digitalWrite(trigPin, HIGH);
delayMicroseconds(2);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
inches = (duration / 2) / 74;
Serial.println(inches);
if (inches < 20 || inches > 1000) {
Serial.println("检测到入侵者!");
Serial.println("正在发送短信通知...");
delay(5000);
Serial.println("巡逻模式启动...");
}
}
完整代码 (含 Twilio 短信)
#include <Bridge.h>
#include <Temboo.h>
#include "TembooAccount.h" // 包含 Temboo 账号信息
#include <SoftwareSerial.h>
int numRuns = 1;
int maxRuns = 5; // 最大发送次数,防止无限循环
int trigPin = 2;
int echoPin = 4;
long duration, cm, inches;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
delay(5000);
Bridge.begin();
Serial.println("巡逻模式启动...");
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(1);
digitalWrite(trigPin, HIGH);
delayMicroseconds(2);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
inches = (duration / 2) / 74;
Serial.println(inches);
if (inches < 20 || inches > 1100) {
Serial.println("检测到入侵者!");
Serial.println("正在发送短信通知...");
if (numRuns <= maxRuns) {
Serial.println("发送短信 - 第 " + String(numRuns++) + " 次");
TembooChoreo SendSMSChoreo;
SendSMSChoreo.begin();
SendSMSChoreo.setAccountName(TEMBOO_ACCOUNT);
SendSMSChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);
SendSMSChoreo.setAppKey(TEMBOO_APP_KEY);
// Twilio 参数(请替换为你自己的)
SendSMSChoreo.addInput("AuthToken", "your_twilio_auth_token");
SendSMSChoreo.addInput("To", "+1xxxxxxxxxx"); // 接收号码
SendSMSChoreo.addInput("From", "+1xxxxxxxxxx"); // Twilio 发送号码
SendSMSChoreo.addInput("Body", "入侵警报!!!!!!");
SendSMSChoreo.addInput("AccountSID", "your_twilio_account_sid");
SendSMSChoreo.setChoreo("/Library/Twilio/SMSMessages/SendSMS");
SendSMSChoreo.run();
while (SendSMSChoreo.available()) {
char c = SendSMSChoreo.read();
Serial.print(c);
}
SendSMSChoreo.close();
}
Serial.println("等待中...");
delay(10000); // 10 秒冷却
Serial.println("巡逻模式启动...");
}
}
原理图

参考链接
- 原项目详细教程:wirebeings.com/arduino-intruder-alarm.html
- Arduino Yun WiFi 设置指南
- Temboo 官网
- Twilio 官网
制造工艺
- 树莓派传感器数据融合实战:GPS 与 MPU‑9150 IMU 的 I²C 与 UART 接入
- 树莓派接 KY‑033 循迹/门状态传感器:简易 Python 实现
- 树莓派构建稳健传感器 API:基于 GY‑91 多功能模块的 Flask 实现
- 树莓派 Home Assistant 安全监控:PIR 运动检测、报警面板与视频抓拍
- 树莓派 2 无头模式水浸报警器:基于 Adafruit T‑Cobbler Plus 构建
- 树莓派连接 HC-SR04 超声波传感器实战指南
- 树莓派自动化气雾栽培系统:湿度传感器智能控制
- 掌握树莓派 GPIO:在 B+/Model 2 上接入 PIR 运动传感器
- 将 Acconeer A111 脉冲雷达与树莓派集成:实用指南
- HC‑SR501 PIR 运动传感器与树莓派接线、校准与 Python 编程全指南
- Python/MicroPython 传感器记录仪:无缝写入 Google Sheets
- 用 DS1302 RTC 和 Arduino UNO 制作可靠闹钟