此项目为创意性实践 II 期末个人项目,仅供学习参考。
简易云相机——野生动物图像捕获装置
20 学年春季学期创意性实践 Ⅱ 课程项目
此项目文件包中包含以下内容:
其他对此项目有帮助或者相关的链接见致谢部分。
P.S. 此文档中包含大量可点击连接,可快速跳转至相应界面。
本项目所依赖的主要软硬件框架见下
以下是如何快速上手本项目的步骤说明。
这里列举了一些在运行程序之前你需要做的事情
-
找出所用服务器的公网(如果是局域网连接的话,内网亦可)IPv4 地址和一个可用的端口(服务器的话可能需要设置网关规则来开放一个,默认
80
端口,注意需要在 Python 脚本中同步端口的更改) -
挑选稳定的网络环境(PKU 这类需要网关验证的 WiFi 不可,我自己用的是手机热点),记住 SSID 与密码
-
将上述参数填入 Arduino 程序中网络相关设置(33-36 行),并烧录进 ESP32-CAM(选择 AI-Thinker 模型,其余参数默认即可)
/* 硬件程序.ino 33-36行 */ const char *ssid = "your_WiFi_name_here"; const char *password = "WiFi_password_here"; const char *serverIP = "your_server_ip_here"; const int *serverPort = 80;
-
如果指定了别的服务器端口,需要在服务器端的 Python 脚本处作对应的修改
# 服务器端程序.py 修改 164 行处附近,281 行处同理 # 指定绑定的服务器端口 80 port = 80
-
-
按照下图所示接线,为 ESP32-CAM 供电
-
(可选)使用国标 3mm 亚克力板切割出外壳并组装,成品图见下
- 全览
- 三视图
- 电源滑盖示意
(此处设计有小缺陷,滑盖的工作没有预期的顺畅,图中所示模型实际在滑槽外侧额外贴了透明胶用于限位)
-
服务器端安装 Python 依赖,推荐使用 Python 3.7+ 的版本,更低的版本未经测试,但也应该可以尝试
(都 2021 年了不会还有人用 Python 2 吧)pip3 install -r requirements.txt
-
将 Python 脚本上传至服务器,并在同目录下创建 img 文件夹
-
在同目录中键入以下命令来开启服务器端的运行(
<available-port>
部分需要替换成另一个可用的服务器端口,避免和上传数据用的端口冲突)streamlit run 服务器端程序.py --server.port=<available-port>
-
检查 WiFi 可用性(或者是像我一样,打开手机热点)
-
给 ESP32-CAM 供电,等待设备连接
-
(可选)由于没有设置别的调试信息输出来显示连接状态,可以在测试时先通过串口监视器观察输出信息
- 据我观察,调试成功之后不作变动也能正常运行
- 但可能在不同的手机热点条件下会有波动
-
-
现在您可以访问
<服务器IP>:<端口>
来使用在线应用了!ヽ(✿ ゚ ▽ ゚)ノ好耶
在线的应用主要分三大模块:
- 查看照片
- 手动拍摄
- 自动拍摄
使用范例见下。您也可以通过随时更改网页端的程序来拓展出更多的功能,相关 API 见官方说明。
- 查看已捕获的照片
- 手动拍摄特定张数
- 自动连续拍摄照片
本项目遵循 MIT 开源许可,详见 LICENSE
。