基于蓝牙及GSM的智能防盗系统
一、系统概述与核心功能
1. 系统架构
传感器层 → 主控MCU → 通信层 → 用户端
↑ ↑ ↑
门窗磁 STM32/51 蓝牙+GSM 手机APP/短信
红外探头 (数据处理) (双模通信) (远程告警)
2. 核心功能特点
- 双重通信保障:蓝牙近距离监控 + GSM远程报警
- 智能布防/撤防:通过手机APP或短信指令控制
- 多传感器融合:门窗磁、红外、振动等多重检测
- 实时状态反馈:本地声光报警 + 远程短信/APP推送
- 低功耗设计:待机电流<10mA,支持电池供电
二、硬件设计方案
1. 核心元器件选型
| 模块 | 推荐型号 | 关键参数 | 参考价格 |
|---|---|---|---|
| 主控MCU | STM32F103C8T6 | 72MHz, 64KB Flash, 20KB RAM | ¥12-18 |
| GSM模块 | SIM800L | 四频850/900/1800/1900MHz | ¥25-35 |
| 蓝牙模块 | HC-05 | 蓝牙2.0+EDR, 10米距离 | ¥15-25 |
| 人体红外 | HC-SR501 | 探测距离7米, 可调延时 | ¥8-12 |
| 门窗磁 | 干簧管磁控开关 | 常开型, 吸合距离10mm | ¥2-5 |
| 声光报警 | 有源蜂鸣器+LED | 5V供电, >85dB | ¥3-8 |
| 电源管理 | TP4056+AMS1117 | 锂电池充电+3.3V稳压 | ¥6-10 |
2. 电路设计要点
(1) GSM模块接口电路
// SIM800L典型连接
SIM800L_VCC → 4.0V (锂电池直接供电)
SIM800L_GND → 电源地
SIM800L_TX → MCU_RX (USART2)
SIM800L_RX → MCU_TX (USART2)
SIM800L_PWR → MCU_IO (控制开关机)
SIM800L_RING → MCU_EXTI (来电/短信中断)
(2) 蓝牙模块接口
HC-05_VCC → 3.3V
HC-05_GND → 电源地
HC-05_TX → MCU_RX (USART1)
HC-05_RX → MCU_TX (USART1)
HC-05_KEY → MCU_IO (AT指令模式控制)
(3) 传感器接口
- HC-SR501:OUT引脚接MCU IO,高电平触发
- 门窗磁:干簧管串联10kΩ电阻接VCC,中间点接MCU IO
- 紧急按钮:常开按钮接GND,另一端接MCU IO(内部上拉)
三、软件设计与核心代码
1. 系统主程序框架(基于STM32 HAL库)
#include "main.h"
#include "sim800l.h"
#include "bluetooth.h"
#include "sensors.h"
// 系统状态定义
typedef enum {
SYSTEM_DISARMED = 0, // 撤防状态
SYSTEM_ARMED, // 布防状态
SYSTEM_ALARM, // 报警状态
SYSTEM_SILENT // 静音布防
} SystemState_t;
// 全局变量
SystemState_t sys_state = SYSTEM_DISARMED;
char admin_phone[12] = "13800138000"; // 管理员号码
int main(void) {
// 硬件初始化
HAL_Init();
SystemClock_Config();
UART_Init(); // 串口初始化
GSM_Init(); // GSM模块初始化
Bluetooth_Init(); // 蓝牙初始化
Sensors_Init(); // 传感器初始化
Buzzer_LED_Init(); // 声光报警初始化
// 注册默认管理员号码
GSM_SetAdminNumber(admin_phone);
while (1) {
switch(sys_state) {
case SYSTEM_DISARMED:
Disarmed_Mode_Task();
break;
case SYSTEM_ARMED:
Armed_Mode_Task();
break;
case SYSTEM_ALARM:
Alarm_Mode_Task();
break;
case SYSTEM_SILENT:
Silent_Mode_Task();
break;
}
// 低功耗处理
if(Check_Idle_State()) {
Enter_LowPower_Mode();
}
HAL_Delay(100); // 100ms任务周期
}
}
// 布防模式任务
void Armed_Mode_Task(void) {
static uint32_t last_check = 0;
// 每500ms检查一次传感器
if(HAL_GetTick() - last_check > 500) {
last_check = HAL_GetTick();
if(Check_Sensors_Triggered()) {
sys_state = SYSTEM_ALARM;
Trigger_Alarm();
}
}
// 处理蓝牙控制指令
Bluetooth_Command_Handler();
}
2. GSM通信核心代码
// SIM800L驱动函数
void GSM_SendSMS(char *phone, char *message) {
char cmd[128];
// 设置短信文本模式
UART_SendString("AT+CMGF=1\r\n");
HAL_Delay(500);
// 设置目标号码
sprintf(cmd, "AT+CMGS=\"%s\"\r\n", phone);
UART_SendString(cmd);
HAL_Delay(500);
// 发送短信内容
UART_SendString(message);
HAL_Delay(100);
// 发送结束符Ctrl+Z (0x1A)
UART_SendByte(0x1A);
}
// 报警触发函数
void Trigger_Alarm(void) {
char sms_buf[64];
char time_buf[32];
// 1. 本地声光报警
Buzzer_On();
LED_Blink(200); // 200ms闪烁
// 2. 发送报警短信
Get_Current_Time(time_buf);
sprintf(sms_buf, "[防盗报警] %s 检测到入侵!位置:客厅", time_buf);
GSM_SendSMS(admin_phone, sms_buf);
// 3. 拨打报警电话(可选)
// GSM_MakeCall(admin_phone);
// 4. 记录报警日志
Save_Alarm_Log(time_buf, "入侵检测");
}
// 短信指令解析
void GSM_SMS_Parser(char *sms_content) {
// 指令格式:#CMD=参数#
if(strstr(sms_content, "#ARM=")) {
// 布防指令
if(strstr(sms_content, "ALL")) {
sys_state = SYSTEM_ARMED;
GSM_SendSMS(admin_phone, "系统已布防");
}
}
else if(strstr(sms_content, "#DISARM=")) {
// 撤防指令
char password[10];
if(sscanf(sms_content, "#DISARM=%s#", password) == 1) {
if(strcmp(password, "123456") == 0) {
sys_state = SYSTEM_DISARMED;
GSM_SendSMS(admin_phone, "系统已撤防");
}
}
}
else if(strstr(sms_content, "#STATUS")) {
// 状态查询
char status_msg[50];
sprintf(status_msg, "系统状态:%s,电量:%d%%",
Get_State_String(sys_state), Get_Battery_Level());
GSM_SendSMS(admin_phone, status_msg);
}
}
3. 蓝牙通信与APP交互
// 蓝牙AT指令配置(HC-05)
void Bluetooth_AT_Config(void) {
// 进入AT模式
HC05_KEY_PIN = 1;
HAL_Delay(100);
// 设置模块参数
UART_SendString("AT+NAME=AntiTheft-System\r\n"); // 设置设备名称
HAL_Delay(100);
UART_SendString("AT+PSWD=1234\r\n"); // 设置配对密码
HAL_Delay(100);
UART_SendString("AT+ROLE=1\r\n"); // 设置为主机模式
HAL_Delay(100);
HC05_KEY_PIN = 0; // 退出AT模式
}
// 蓝牙数据接收处理
void Bluetooth_Data_Handler(uint8_t *data, uint16_t len) {
// 解析JSON格式指令(示例)
// {"cmd":"arm", "mode":"normal"}
// {"cmd":"disarm", "pwd":"123456"}
if(strstr((char*)data, "\"cmd\":\"arm\"")) {
sys_state = SYSTEM_ARMED;
Bluetooth_Send_Response("{\"status\":\"armed\"}");
}
else if(strstr((char*)data, "\"cmd\":\"disarm\"")) {
// 验证密码
char pwd[10];
if(Extract_JSON_Value(data, "pwd", pwd)) {
if(strcmp(pwd, "123456") == 0) {
sys_state = SYSTEM_DISARMED;
Bluetooth_Send_Response("{\"status\":\"disarmed\"}");
}
}
}
else if(strstr((char*)data, "\"cmd\":\"status\"")) {
// 返回系统状态
char status_json[100];
sprintf(status_json, "{\"state\":\"%s\",\"battery\":%d,\"signal\":%d}",
Get_State_String(sys_state),
Get_Battery_Level(),
GSM_Get_Signal_Strength());
Bluetooth_Send_Response(status_json);
}
}
4. 传感器检测算法
// 防误报算法(多传感器融合)
uint8_t Check_Real_Intrusion(void) {
static uint32_t pir_time = 0;
static uint32_t door_time = 0;
uint8_t intrusion_flag = 0;
// 1. 人体红外检测
if(HAL_GPIO_ReadPin(PIR_GPIO_Port, PIR_Pin) == GPIO_PIN_SET) {
pir_time = HAL_GetTick();
intrusion_flag |= 0x01;
}
// 2. 门窗磁检测
if(HAL_GPIO_ReadPin(DOOR_GPIO_Port, DOOR_Pin) == GPIO_PIN_RESET) {
door_time = HAL_GetTick();
intrusion_flag |= 0x02;
}
// 3. 振动传感器检测(可选)
if(Check_Vibration_Sensor()) {
intrusion_flag |= 0x04;
}
// 判断是否为真实入侵(时间窗口内多传感器触发)
if(intrusion_flag != 0) {
// 检查时间相关性(10秒内)
uint32_t time_diff = (pir_time > door_time) ?
(pir_time - door_time) : (door_time - pir_time);
if(time_diff < 10000) { // 10秒内
return 1; // 确认为真实入侵
}
// 单一传感器持续触发(防拆报警)
if((intrusion_flag & 0x01) && (HAL_GetTick() - pir_time > 30000)) {
return 2; // 传感器异常/被破坏
}
}
return 0; // 无入侵
}
参考代码 基于蓝牙及GSM的智能防盗系统 www.youwenfan.com/contentcnt/134638.html
四、手机APP设计(Android简易版)
1. APP功能模块
<!-- 主要界面布局 -->
<LinearLayout>
<TextView android:text="智能防盗系统"/>
<!-- 状态显示 -->
<TextView android:id="@+id/tv_status" android:text="状态:撤防"/>
<TextView android:id="@+id/tv_battery" android:text="电量:--%"/>
<!-- 控制按钮 -->
<Button android:id="@+id/btn_arm" android:text="布防"/>
<Button android:id="@+id/btn_disarm" android:text="撤防"/>
<Button android:id="@+id/btn_silent" android:text="静音布防"/>
<!-- 历史记录 -->
<ListView android:id="@+id/lv_alarms"/>
</LinearLayout>
2. 蓝牙连接核心代码(Android)
public class BluetoothService {
private BluetoothAdapter bluetoothAdapter;
private BluetoothSocket bluetoothSocket;
// 连接设备
public boolean connectToDevice(String deviceAddress) {
try {
BluetoothDevice device = bluetoothAdapter.getRemoteDevice(deviceAddress);
bluetoothSocket = device.createRfcommSocketToServiceRecord(
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); // SPP UUID
bluetoothSocket.connect();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
// 发送控制指令
public void sendCommand(String cmd) {
try {
OutputStream outputStream = bluetoothSocket.getOutputStream();
String jsonCmd = "{\"cmd\":\"" + cmd + "\"}";
outputStream.write(jsonCmd.getBytes());
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
// 接收数据
public void startReceiving() {
new Thread(() -> {
try {
InputStream inputStream = bluetoothSocket.getInputStream();
byte[] buffer = new byte[1024];
int bytes;
while ((bytes = inputStream.read(buffer)) > 0) {
String received = new String(buffer, 0, bytes);
// 解析并更新UI
parseResponse(received);
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
五、系统安装与调试
1. 安装位置建议
| 传感器 | 安装位置 | 安装高度 | 注意事项 |
|---|---|---|---|
| 主机 | 客厅隐蔽处 | 1.8-2.2米 | 靠近电源,GSM信号良好 |
| 人体红外 | 主要通道 | 1.8-2.2米 | 避开空调出风口、窗户 |
| 门窗磁 | 门窗边框 | 门框顶部 | 磁铁与干簧管对齐 |
| 紧急按钮 | 卧室床头 | 0.8-1.2米 | 隐蔽但易于触及 |
2. 调试步骤
-
硬件检查:
- 测量各模块供电电压(GSM:4.0V, MCU:3.3V)
- 检查SIM卡安装和天线连接
- 测试传感器触发状态
-
GSM模块调试:
// 发送测试AT指令 AT // 测试连接 AT+CSQ // 检查信号强度(>15为良好) AT+CCID // 读取SIM卡号 AT+CMGF=1 // 设置短信文本模式 -
蓝牙配对测试:
- 手机搜索"AntiTheft-System"
- 输入配对密码"1234"
- 测试数据收发
-
系统联调:
- 触发传感器,检查本地报警
- 验证短信接收功能
- 测试APP远程控制
六、成本估算
1. 成本估算(单套)
| 项目 | 费用 | 备注 |
|---|---|---|
| 电子元器件 | ¥80-120 | 含PCB打样 |
| 外壳结构 | ¥30-50 | 3D打印或成品盒 |
| SIM卡月租 | ¥5-10 | 物联网卡套餐 |
| 开发时间 | - | 约3-5天 |
七、扩展功能建议
1. 功能升级
- 视频监控集成:添加ESP32-CAM,实现移动侦测录像
- 云平台接入:连接阿里云/腾讯云IoT平台
- 智能联动:与智能家居系统(灯光、窗帘)联动
- 备用通信:增加LoRa/NB-IoT通信冗余
2. 算法优化
- 机器学习识别:使用TensorFlow Lite区别人/宠物
- 行为模式分析:学习用户作息,减少误报
- 电量预测:智能充放电管理
3. 产品化建议
- 工业设计:设计美观的壁挂式外壳
- APP优化:开发iOS版本,增加推送通知
- 批量生产:设计四层PCB,优化生产成本
八、注意事项
1. 法律法规
- 安装前了解当地安防设备管理规定
- 短信报警内容需符合通信管理要求
- 保护用户隐私,数据加密存储
2. 安全设计
- GSM模块天线远离人体(辐射安全)
- 强电部分做好绝缘防护
- 系统故障时应有备用报警机制
3. 维护建议
- 每月测试一次系统功能
- 定期检查电池状态(如使用)
- 保持SIM卡余额充足
- 固件可远程OTA升级

浙公网安备 33010602011771号