yesalphahere/SentinelCam-ESP32
GitHub: yesalphahere/SentinelCam-ESP32
该项目利用 ESP32-CAM 和 PIR 传感器构建了一个无需服务器的移动侦测安防系统,检测到移动后自动拍照上传 Google Drive 并向手机推送报警通知。
Stars: 2 | Forks: 0
### 🔧 硬件部分
| 完整构建 | 接线与供电 | 系统布防 |
|:---:|:---:|:---:|
|
|
|
|
| ESP32-CAM、PIR 传感器及备用模块展示 | 在面包板上完成接线并由充电宝供电运行 | 特写 —— LED 指示灯亮起,正在主动监控 |
### ☁️ Google Drive 中的实时事件
| 自动生成的事件文件夹 | 每次移动事件 3 张图片 |
|:---:|:---:|
|
|
|
| 每次移动触发都会自动创建带时间戳的文件夹 | 每次事件捕获 3 张证据照片,瞬间保存 |
### 📲 实时 Pushover 报警
| 实时报警推送 | 报警详情 → Drive 链接 |
|:---:|:---:|
|
|
|
| 真实的 "ESP32-CAM Motion Alert" 推送通知流 | 点击报警可直接跳转到 Drive 上捕获的证据 |
**这证明了:** PIR 传感器检测到移动 → ESP32-CAM 捕获图像 → 上传并在 Google Drive 中按文件夹组织 → 推送通知发送到手机,并附带指向证据的有效链接 —— 完整的架构,正常运行,并有时间戳作为证明。
## 🧠 架构
```
flowchart TD
A[PIR Motion Sensor] -->|Motion HIGH on GPIO13| B[AI Thinker ESP32-CAM]
B -->|Capture JPEG Image| C[Base64 Encode]
C -->|HTTPS POST JSON| D[Google Apps Script Web App]
D -->|Validate DEVICE_SECRET| E{Authorized?}
E -->|No| F[Reject Request]
E -->|Yes| G[Decode Base64 Image]
G --> H[Create Event Folder in Google Drive]
H --> I[Save JPEG Evidence]
I --> J[Pushover API]
J --> K[📱 Mobile Security Alert]
```
**流程简述:** PIR 传感器触发 → ESP32-CAM 唤醒并拍摄 2-3 张 JPEG 图像 → 图像被 Base64 编码并 POST 到 Google Apps Script endpoint → 脚本验证 shared secret,将图像保存到带时间戳的 Drive 文件夹中,并推送带有证据直链的 Pushover 通知。
## ✨ 功能
- 📸 每次移动事件**多图捕获**(数量和间隔可配置)
- ☁️ **Serverless 后端** —— Google Apps Script + Drive,零托管成本
- 🔔 通过 Pushover 发送**即时推送报警**,并带有指向 Drive 文件夹的直接链接
- 🔐 设备与后端之间的**Shared-secret 身份验证**
- ⏱️ **PIR 预热与冷却逻辑**,可抑制错误/重复触发
- 🪫 **防掉电启动**和自动 WiFi 重连
- 💡 用于启动、WiFi 连接和移动事件的**状态 LED 指示灯**
- 🛠️ **完全可配置** —— 图像大小、质量、冷却时间、闪光灯等
## 🧰 硬件
| 组件 | 必需 | 备注 |
|---|:---:|---|
| AI Thinker ESP32-CAM | ✅ | 主摄像头 + WiFi 开发板 |
| PIR 移动传感器 (HC-SR501) | ✅ | 推荐模块 |
| FTDI USB 转串口适配器 | ✅ | 烧录固件所需 |
| 跳线 | ✅ | 推荐使用公对母跳线 |
| 5V / 1–2A 电源 | ✅ | 稳定的电源可防止掉电重启 |
| 10kΩ 电阻 (GPIO13 → GND) | 推荐 | 防止引脚悬空 |
| 面包板 | 可选 | 在测试期间很有用 |
| 外壳 / 保护盒 | 可选 | 用于最终安装 |
## 🖧 技术栈
| 层级 | 技术 |
|---|---|
| 固件 | Arduino (C++) on ESP32-CAM |
| 传输 | HTTPS POST (JSON + Base64 image) |
| 后端 | Google Apps Script (serverless) |
| 存储 | Google Drive |
| 通知 | Pushover API |
## ⚡ 快速开始
```
# 1. Clone the repository
git clone https://github.com/yesalphahere/SentinelCam-ESP32.git
cd SentinelCam-ESP32
# 2. 在 Arduino IDE 中打开 firmware
# 文件:ESP32CAM_PIR_Security_Alert_System.ino
# 3. 填入你的私密值(WiFi, Web App URL, DEVICE_SECRET)
# 4. 将 SentinelCam_CloudBridge_AppsScript.js 部署到 Google Apps Script
# (Deploy → Web App → Execute as Me → Access: Anyone)
# 5. Flash ESP32-CAM,接通电源,并 arm 系统
```
📌 如需完整的分步操作指南 —— 接线图、Arduino IDE 设置、Google Drive/Apps Script 部署、Pushover 配置和故障排除 —— 请参阅 **[完整配置指南](SETUP_GUIDE.md)**。
## 📁 仓库结构
```
SentinelCam-ESP32/
│
├── ESP32CAM_PIR_Security_Alert_System.ino # ESP32-CAM Arduino firmware
├── SentinelCam_CloudBridge_AppsScript.js # Google Apps Script backend
├── SETUP_GUIDE.md # Full installation & setup guide
├── README.md # You are here
├── LICENSE # MIT License
└── assets/
├── banner.svg # README hero banner
├── hardware/ # Build photos
└── screenshots/
├── drive/ # Google Drive event proof
└── pushover/ # Pushover alert proof
```
## 📚 完整配置指南
本 README 是项目的主页。完整、详细的说明 —— 接线表、PIR 调试、Arduino IDE 配置、Google Drive 和 Apps Script 部署、Pushover 设置、首次启动测试以及 15 点故障排除指南 —— 位于:
### 👉 [`SETUP_GUIDE.md`](SETUP_GUIDE.md)
## 🔒 安全模型
设备到云的请求通过 shared secret (`DEVICE_SECRET`) 进行身份验证,在写入任何文件或发送通知之前,每次上传都会对其进行验证。本仓库中的所有示例配置值在设计上均为占位符 —— 不会发布任何真实的凭据、endpoint 或 token。
## 🗺️ 路线图
- [ ] 支持 Telegram 通知作为 Pushover 的替代方案
- [ ] 用于浏览捕获事件的 Web 仪表板
- [ ] 支持多相机 / 多区域
- [ ] 电池 + 太阳能供电方案
## 📜 许可证
基于 **MIT License** 发布 —— 详情请参阅 [`LICENSE`](LICENSE)。
|
|
|
| ESP32-CAM、PIR 传感器及备用模块展示 | 在面包板上完成接线并由充电宝供电运行 | 特写 —— LED 指示灯亮起,正在主动监控 |
### ☁️ Google Drive 中的实时事件
| 自动生成的事件文件夹 | 每次移动事件 3 张图片 |
|:---:|:---:|
|
|
|
| 每次移动触发都会自动创建带时间戳的文件夹 | 每次事件捕获 3 张证据照片,瞬间保存 |
### 📲 实时 Pushover 报警
| 实时报警推送 | 报警详情 → Drive 链接 |
|:---:|:---:|
|
|
|
| 真实的 "ESP32-CAM Motion Alert" 推送通知流 | 点击报警可直接跳转到 Drive 上捕获的证据 |
**项目:** SentinelCam-ESP32
**开发者:** Sabir Ali (Alpha)
**用途:** 防御性监控与教育性 IoT 安全自动化
⭐ 如果这个项目对您有帮助,请考虑给仓库点个 Star!
标签:ESP32-CAM, 智能硬件, 物理安全, 物联网, 监控告警