littlebot
Published on 2025-04-18 / 4 Visits
0

【源码】基于ESP32和Flask的DIY智能安全监控摄像头系统

项目简介

本项目是一个DIY的智能安全监控摄像头系统。采用ESP32 - CAM作为带有摄像头和Wi - Fi功能的微控制器,借助两个SG90舵机实现摄像头在两个轴向上的旋转。用户能够通过互联网查看摄像头画面并控制舵机转动。项目使用Arduino框架编译,后端运用Python Flask搭建服务器。

项目的主要特性和功能

  1. 远程控制:可通过互联网查看摄像头画面,控制舵机转动,实现多角度监控。
  2. 双轴旋转:利用两个SG90舵机,使摄像头在两个轴向上灵活转动。
  3. HTTP请求支持:定义特定HTTP请求,用于启动MJPEG流和控制舵机。
  4. 后端服务器:Python Flask服务器负责广播MJPEG流和控制舵机,建立与ESP32 - CAM的安全连接,并将数据分发给客户端。

安装使用步骤

前提条件

  • ESP32 - CAM(Ai - Thinker)
  • 2个SG90舵机
  • 5V/2A电源
  • Arduino IDE
  • Python 3
  • 支持端口转发的调制解调器
  • 静态IP
  • 用于部署后端的Linux VPS

安装步骤

嵌入式部分

  1. 搭建电路:为ESP32供电,连接SG - 90舵机等。
  2. 创建配置文件:参考Config_Template.h文件,创建Config.h文件,按需选择静态或动态本地IP。
  3. 编译上传代码:使用Arduino IDE编译嵌入式代码,并上传到ESP32。
  4. 本地测试:在同一局域网内的设备(如Windows PC)上访问ESP32,查看摄像头画面并控制舵机转动。

后端部分(本地测试)

  1. 创建.env文件:在项目目录下创建.env文件,格式如下: HTTP_AUTH_USERNAME=exampleUser HTTP_AUTH_PASSWORD=longNicePassword CAM_URL=http://<ip - address - of - esp>/mjpeg SERVO_URL=http://<ip - address - of - esp>/control_servo 若服务器在本地运行,IP地址应为ESP32 - CAM的本地IP;否则应为静态IP。
  2. 创建Python虚拟环境: cd securityCam/server python -m venv VENV_CAM VENV_CAM\Scripts\activate.bat source VENV_CAM/bin/activate pip install -r requirement.txt
  3. 启动Flask服务器: python main.py 确保防火墙允许main.py中指定的端口(如本项目中的5000端口)。

部署到VPS

  1. 获取静态IP:向ISP购买或申请静态IP。
  2. 购买VPS:购买Linux VPS(推荐Ubuntu)。
  3. 配置调制解调器:将来自VPS IP地址的传入请求转发到ESP32的本地IP地址。
  4. 安装后端服务器:在Linux VPS上安装后端服务器,安装时在.env文件中使用调制解调器的静态IP。
  5. 部署Flask应用:使用Nginx和Gunicorn进行部署(仅适用于Linux)。
    • Nginx配置:创建并配置/etc/nginx/sites - available/example.conf文件。
    • Gunicorn配置:创建并配置/etc/systemd/system/cam.gunicorn.service/etc/systemd/system/cam.gunicorn.socket文件。
    • 启动服务: sudo systemctl start cam.gunicorn.socket

完成上述步骤后,即可通过互联网访问摄像头画面并控制舵机转动。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】