项目简介
本项目是一个DIY的智能安全监控摄像头系统。采用ESP32 - CAM作为带有摄像头和Wi - Fi功能的微控制器,借助两个SG90舵机实现摄像头在两个轴向上的旋转。用户能够通过互联网查看摄像头画面并控制舵机转动。项目使用Arduino框架编译,后端运用Python Flask搭建服务器。
项目的主要特性和功能
- 远程控制:可通过互联网查看摄像头画面,控制舵机转动,实现多角度监控。
- 双轴旋转:利用两个SG90舵机,使摄像头在两个轴向上灵活转动。
- HTTP请求支持:定义特定HTTP请求,用于启动MJPEG流和控制舵机。
- 后端服务器:Python Flask服务器负责广播MJPEG流和控制舵机,建立与ESP32 - CAM的安全连接,并将数据分发给客户端。
安装使用步骤
前提条件
- ESP32 - CAM(Ai - Thinker)
- 2个SG90舵机
- 5V/2A电源
- Arduino IDE
- Python 3
- 支持端口转发的调制解调器
- 静态IP
- 用于部署后端的Linux VPS
安装步骤
嵌入式部分
- 搭建电路:为ESP32供电,连接SG - 90舵机等。
- 创建配置文件:参考Config_Template.h文件,创建Config.h文件,按需选择静态或动态本地IP。
- 编译上传代码:使用Arduino IDE编译嵌入式代码,并上传到ESP32。
- 本地测试:在同一局域网内的设备(如Windows PC)上访问ESP32,查看摄像头画面并控制舵机转动。
后端部分(本地测试)
- 创建.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。 - 创建Python虚拟环境:
cd securityCam/server python -m venv VENV_CAM VENV_CAM\Scripts\activate.bat source VENV_CAM/bin/activate pip install -r requirement.txt
- 启动Flask服务器:
python main.py
确保防火墙允许main.py中指定的端口(如本项目中的5000端口)。
部署到VPS
- 获取静态IP:向ISP购买或申请静态IP。
- 购买VPS:购买Linux VPS(推荐Ubuntu)。
- 配置调制解调器:将来自VPS IP地址的传入请求转发到ESP32的本地IP地址。
- 安装后端服务器:在Linux VPS上安装后端服务器,安装时在.env文件中使用调制解调器的静态IP。
- 部署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
- Nginx配置:创建并配置
完成上述步骤后,即可通过互联网访问摄像头画面并控制舵机转动。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】