如何使用两个舵机为ESP32-CAM创建云台控制

描述

  这是个 ESP32 凸轮使用伺服系统的倾斜控制器。

  本文将向您展示如何使用两个舵机为 ESP32-CAM 创建云台控制。ESP32-CAM 是一款小型相机,可用于拍照和视频。

  伺服器用于平移和倾斜摄像机,同时还可用于创建安全摄像头、机械眼或您能想到的任何其他东西。我们还将向您展示如何使用 Web 界面来控制相机

  第 1 步:所需材料

  ESP32 凸轮模块

  云台伺服组件

  SG90 伺服电机

  5V AC DC 适配器

  面包板

  跳线

  第 2 步:用伺服电机组装倾斜套件

ESP32

  这个完全组装的云台套件是使用两个伺服系统为您的项目提供最大运动范围的绝佳方式。

  云台可以左右旋转 180° 左右,可以上下倾斜接近 150°。它还完全组装,包括两个微型伺服系统(SG-90 型)和一个 38 毫米 x 36 毫米的空间来安装相机。

  您可以使用任何微控制器。它们适合想要让物体移动的初学者,云台是一种轻松的方式,可以让您在左右和上下运动中做出任何动作。

  第 3 步:ESP32 摄像头模块

  ESP32-CAM 是一款内置摄像头的开发板。它基于 ESP32 芯片,可用于拍摄高质量的静止图像和视频。ESP32-CAM 可以与各种传感器和外围设备连接,以创建强大的摄像头系统。

  我们使用 ESP32-CAM 开发板来控制两个舵机,它们充当摄像机的云台机构。我们将首先编写代码来使用 Arduino IDE 控制伺服系统,

  对于这个项目,我们将使用 SG90 舵机,它的最小脉冲宽度为 500 微秒,最大脉冲宽度为 2500 微秒,我们将为每个舵机使用 0 度到 180 度的范围。

  伺服电机是一种可用于控制物体位置的电动机。伺服电机通常用于机器人应用中,以控制机器人手臂或腿的运动。伺服电机也用于无线电遥控飞机和汽车,以控制控制面的运动。

  第 4 步:接线图

ESP32

  接线图很清楚。您必须按照示意图将伺服电机引脚与 ESP32 引脚连接起来。示意图如上所示。

  使用原理图连接所有部件。使用一块双面胶带将 ESP32-CAM 连接到云台。

  第 5 步:设置 ESP32 开发板

ESP32

  您可以使用 Arduino IDE 对相机模块进行编程。安装好开发环境后,可以打开它,为使用摄像头模组做准备。

  1. 启动 Arduino IDE 并打开 Preferences 窗口。

  2. 进入https://dl.espressif.com/dl/package_esp32_index。进入 Arduino IDE 的 File》Preferences》Additional Boards Manager URLs 字段。您可以添加多个 URL,并用逗号分隔它们。

  3. 使用 OK 按钮关闭此窗口。从 Tools 》 Board 菜单打开 Boards Manager 并选择正确的 ESP32 Cam 板。

  第 6 步:上传代码

  #define DUMMY_SERVO1_PIN 12     //We need to create 2 dummy servos.

#define DUMMY_SERVO2_PIN 13     //So that ESP32Servo library does not interfere with pwm channel and timer used by esp32 camera.


#define PAN_PIN 14
#define TILT_PIN 15


Servo dummyServo1;
Servo dummyServo2;
Servo panServo;
Servo tiltServo;


//Camera related constants
#define PWDN_GPIO_NUM     32
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM      0
#define SIOD_GPIO_NUM     26
#define SIOC_GPIO_NUM     27
#define Y9_GPIO_NUM       35
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       39
#define Y6_GPIO_NUM       36
#define Y5_GPIO_NUM       21
#define Y4_GPIO_NUM       19
#define Y3_GPIO_NUM       18
#define Y2_GPIO_NUM        5
#define VSYNC_GPIO_NUM    25
#define HREF_GPIO_NUM     23
#define PCLK_GPIO_NUM     22


const char* ssid     = "NowISeeYou";
const char* password = "12345678";


AsyncWebServer server(80);
AsyncWebSocket wsCamera("/Camera");
AsyncWebSocket wsServoInput("/ServoInput");
uint32_t cameraClientId = 0;


#define LIGHT_PIN 4
const int PWMLightChannel = 4;


const char* htmlHomePage PROGMEM = R"HTMLHOMEPAGE(




 
 
   
    .noselect {
      -webkit-touch-callout: none; /* iOS Safari */
        -webkit-user-select: none; /* Safari */
         -khtml-user-select: none; /* Konqueror HTML */
           -moz-user-select: none; /* Firefox */
            -ms-user-select: none; /* Internet Explorer/Edge */
                user-select: none; /* Non-prefixed version, currently
                                      supported by Chrome and Opera */
    }


    .slidecontainer {
      width: 100%;
    }


    .slider {
      -webkit-appearance: none;
      width: 100%;
      height: 20px;
      border-radius: 5px;
      background: #d3d3d3;
      outline: none;
      opacity: 0.7;
      -webkit-transition: .2s;
      transition: opacity .2s;
    }


    .slider:hover {
      opacity: 1;
    }
  
    .slider::-webkit-slider-thumb {
      -webkit-appearance: none;
      appearance: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      background: red;
      cursor: pointer;
    }


    .slider::-moz-range-thumb {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      background: red;
      cursor: pointer;
    }

第 7 步:测试

ESP32
 

安装摄像头模块,将您的 SD 卡插入摄像头的插槽,将那一小块橡胶推回,通过滑动背面的开关为摄像头供电,然后找到其独特的 IP 摄像头网络服务器。

我对这个小工具的最终结果非常满意。完成以后你也可以在任何场合将此小工具赠送给其他人。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_21030854 04-04
0 回复 举报
请问,文章中的程序可以用吗 收起回复
shanrenll 2022-07-19
0 回复 举报
请问一下,做了一个,只有 pan 马达动作, Tilt 马达不动,什么原因? 谢谢。 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分