Skip to content

基于ESP32的简易云相机(A simple ESP32-based cloud camera)

License

Notifications You must be signed in to change notification settings

TeddyHuang-00/BioMakers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BioMakers-final-project

此项目为创意性实践 II 期末个人项目,仅供学习参考。

☁📷

简易云相机

野生动物图像采集装置

基于WiFi与服务器,捕获野生动物图像
目录
  1. 有关项目
  2. 快速上手
  3. 用法
  4. 开源许可
  5. 致谢

有关项目

简易云相机——野生动物图像捕获装置

20 学年春季学期创意性实践 Ⅱ 课程项目

此项目文件包中包含以下内容:

其他对此项目有帮助或者相关的链接见致谢部分

P.S. 此文档中包含大量可点击连接,可快速跳转至相应界面。

软硬件框架

本项目所依赖的主要软硬件框架见下

  • ESP32-CAM
  • Streamlit
  • 以及一台服务器(或者使用局域网连接) (最低要求不清楚,但是带宽越大越好)

快速上手

以下是如何快速上手本项目的步骤说明。

依赖环境

这里列举了一些在运行程序之前你需要做的事情

  1. 找出所用服务器的公网(如果是局域网连接的话,内网亦可)IPv4 地址和一个可用的端口(服务器的话可能需要设置网关规则来开放一个,默认 80 端口,注意需要在 Python 脚本中同步端口的更改)

  2. 挑选稳定的网络环境(PKU 这类需要网关验证的 WiFi 不可,我自己用的是手机热点),记住 SSID 与密码

  3. 将上述参数填入 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
  4. 按照下图所示接线,为 ESP32-CAM 供电

  5. (可选)使用国标 3mm 亚克力板切割出外壳并组装,成品图见下

    1. 全览
    1. 三视图
    1. 电源滑盖示意

    (此处设计有小缺陷,滑盖的工作没有预期的顺畅,图中所示模型实际在滑槽外侧额外贴了透明胶用于限位)

  6. 服务器端安装 Python 依赖,推荐使用 Python 3.7+ 的版本,更低的版本未经测试,但也应该可以尝试(都 2021 年了不会还有人用 Python 2 吧)

    pip3 install -r requirements.txt

安装部署

  1. 将 Python 脚本上传至服务器,并在同目录下创建 img 文件夹

  2. 在同目录中键入以下命令来开启服务器端的运行(<available-port> 部分需要替换成另一个可用的服务器端口,避免和上传数据用的端口冲突)

    streamlit run 服务器端程序.py --server.port=<available-port>
    • (可选)如果使用的是服务器,可以结合使用 nohup 或者 screen 的指令来让程序能够挂在后台一直运行
  3. 检查 WiFi 可用性(或者是像我一样,打开手机热点)

  4. 给 ESP32-CAM 供电,等待设备连接

    • (可选)由于没有设置别的调试信息输出来显示连接状态,可以在测试时先通过串口监视器观察输出信息

      • 据我观察,调试成功之后不作变动也能正常运行
      • 但可能在不同的手机热点条件下会有波动
  5. 现在您可以访问 <服务器IP>:<端口> 来使用在线应用了!ヽ(✿ ゚ ▽ ゚)ノ好耶

用法

在线的应用主要分三大模块:

  • 查看照片
  • 手动拍摄
  • 自动拍摄

使用范例见下。您也可以通过随时更改网页端的程序来拓展出更多的功能,相关 API 见官方说明

示例

  1. 查看已捕获的照片

  1. 手动拍摄特定张数

  1. 自动连续拍摄照片

开源许可

本项目遵循 MIT 开源许可,详见 LICENSE

致谢

  • 感谢开设此课程的陈老师、陶老师、龙老师、董老师(排名不分先后)

  • 感谢吕同学提供的 ESP32-CAM 接线示意图

  • 感谢极客实验室与老生物楼创意实验室提供的板材加工与 3D 打印

  • 网页交互界面实现

  • Arduino 平台硬件程序支持

  • 相关 Arduino 依赖包与调试工具

  • ESP32-CAM 部分代码主要参考

  • 部分代码修改参考

  • 图像比对部分参考

  • 2D 加工图纸绘制

  • 3D 模型处理

About

基于ESP32的简易云相机(A simple ESP32-based cloud camera)

Resources

License

Stars

Watchers

Forks