chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>基于ESP32 CAM設(shè)備Vader Cam的構(gòu)建

基于ESP32 CAM設(shè)備Vader Cam的構(gòu)建

2022-10-24 | zip | 0.07 MB | 次下載 | 免費(fèi)

資料介紹

描述

問(wèn)候。

所以這里有一些引人注目的東西,Vader Cam

Vader Cam 是一個(gè)基于 ESP32 CAM 的設(shè)備,它是一個(gè)實(shí)時(shí)視頻源流設(shè)備,我們可以通過(guò)網(wǎng)絡(luò)應(yīng)用程序訪問(wèn)源并查看發(fā)生了什么。

這就像一個(gè)以達(dá)斯維德為主題的保姆攝像頭或監(jiān)控設(shè)備。

Darth Vader 一直在關(guān)注事物,我制作這個(gè)設(shè)備是為了用它來(lái)監(jiān)控在另一個(gè)房間里進(jìn)行的 3D 打印作業(yè),但我們可以使用這個(gè)設(shè)備來(lái)監(jiān)控各種各樣的東西,從保姆到孩子甚至寵物。

這篇文章是關(guān)于這個(gè) Vader Cam 的整個(gè)構(gòu)建過(guò)程,所以讓我們開(kāi)始吧。

所需材料

這些是這個(gè)內(nèi)置的東西 -

Seeed Studio 的定制 PCB

ESP32 凸輪

M7 二極管 SMA

UART 編程

USB 微型端口

ESP32 板的排針

電源 - 智能手機(jī)適配器

關(guān)于 ESP32 CAM

poYBAGNVkTOAF7xtAAB0S8KOrlo436.png

ESP32 CAM 是一款非常實(shí)用的開(kāi)發(fā)板,它在板的底部配備了一個(gè) 2MP OV2640 攝像頭模塊和一個(gè) SD 讀卡器。

此外,它的價(jià)格約為 10 美元,對(duì)于這種功能強(qiáng)大的微控制器來(lái)說(shuō),這是一個(gè)相當(dāng)不錯(cuò)的價(jià)格標(biāo)簽。

本版本使用的WIFI模塊為ESP-32S,內(nèi)置32Mbit Flash和512KB Internal plus外置4M PSRAM。

它可以承受 5 伏電壓,這意味著我們可以使用低于 5V 的電壓為 ESP32 Cam 供電,如果您提供的電壓高于 5V,它就會(huì)被損壞。

Arduino IDE 安裝 ESP32 開(kāi)發(fā)板

為了在 Arduino IDE 上安裝第三方開(kāi)發(fā)板,我們必須復(fù)制他們的 JSON URL,

復(fù)制此 URL 并將其粘貼到 Arduino IDE 首選項(xiàng)中的附加板管理器 URL 中。

pYYBAGNVkTaAJ6shAAArJuMUolI422.png

(如果您在附加板管理器中已經(jīng)有其他開(kāi)發(fā)板 URL,則可以在兩個(gè) URL 之間放置一個(gè)逗號(hào))

放好網(wǎng)址后,打開(kāi)板子管理器,在里面搜索ESP32,然后下載ESP32 Board包。

poYBAGNVkTiAR_3kAAA9t49HI-E344.png

完成所有這些后,您需要重新啟動(dòng) Arduino IDE,新的 ESP32 板將出現(xiàn)在板管理器菜單中。

面包板設(shè)置

在開(kāi)始這個(gè)項(xiàng)目之前,我們首先準(zhǔn)備一個(gè)面包板設(shè)置,該設(shè)置由一個(gè) ESP32 Cam 和一個(gè) FTDI 板根據(jù)下面的示意圖連接。

pYYBAGNVkTqARRN9AACYL9cOdAQ293.png

ESP32 CAM 沒(méi)有板載編程芯片,這很糟糕,因此我們必須在串行編程模塊中添加一個(gè)外部 USB。

為此,我將使用這個(gè) USB 轉(zhuǎn)串口模塊。該模塊基于 FTDI FT232 芯片。您也可以使用其他串行轉(zhuǎn)換器,它們的接線將保持不變,因?yàn)槲覀冎恍鑼?TX 和 RX 與 ESP32 連接。

將 FTDI 輸出設(shè)置為 5V

將 FTDI 的 VCC(即 5V)連接到 ESP32 CAM 的 5V

地到地

RX 到 U0T

TX 轉(zhuǎn) U0R

GPIO0 是 IO0 到 GND(這將使 ESP32 CAM 進(jìn)入 Flash 模式)

主要代碼

?

#include "esp_camera.h"
#include 
#include "esp_timer.h"
#include "img_converters.h"
#include "Arduino.h"
#include "fb_gfx.h"
#include "soc/soc.h" //disable brownout problems
#include "soc/rtc_cntl_reg.h"  //disable brownout problems
#include "esp_http_server.h"

//Replace with your network credentials
const char *ssid = "JioFiber-nCDgC";
const char *password = "jiexaifieXai5chu";

#define PART_BOUNDARY "123456789000000000000987654321"

// This project was tested with the AI Thinker Model, M5STACK PSRAM Model and M5STACK WITHOUT PSRAM
#define CAMERA_MODEL_AI_THINKER
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WITHOUT_PSRAM

// Not tested with this model
//#define CAMERA_MODEL_WROVER_KIT

#if defined(CAMERA_MODEL_WROVER_KIT)
  #define PWDN_GPIO_NUM    -1
  #define RESET_GPIO_NUM   -1
  #define XCLK_GPIO_NUM    21
  #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      19
  #define Y4_GPIO_NUM      18
  #define Y3_GPIO_NUM       5
  #define Y2_GPIO_NUM       4
  #define VSYNC_GPIO_NUM   25
  #define HREF_GPIO_NUM    23
  #define PCLK_GPIO_NUM    22

#elif defined(CAMERA_MODEL_M5STACK_PSRAM)
  #define PWDN_GPIO_NUM     -1
  #define RESET_GPIO_NUM    15
  #define XCLK_GPIO_NUM     27
  #define SIOD_GPIO_NUM     25
  #define SIOC_GPIO_NUM     23
  
  #define Y9_GPIO_NUM       19
  #define Y8_GPIO_NUM       36
  #define Y7_GPIO_NUM       18
  #define Y6_GPIO_NUM       39
  #define Y5_GPIO_NUM        5
  #define Y4_GPIO_NUM       34
  #define Y3_GPIO_NUM       35
  #define Y2_GPIO_NUM       32
  #define VSYNC_GPIO_NUM    22
  #define HREF_GPIO_NUM     26
  #define PCLK_GPIO_NUM     21

#elif defined(CAMERA_MODEL_M5STACK_WITHOUT_PSRAM)
  #define PWDN_GPIO_NUM     -1
  #define RESET_GPIO_NUM    15
  #define XCLK_GPIO_NUM     27
  #define SIOD_GPIO_NUM     25
  #define SIOC_GPIO_NUM     23
  
  #define Y9_GPIO_NUM       19
  #define Y8_GPIO_NUM       36
  #define Y7_GPIO_NUM       18
  #define Y6_GPIO_NUM       39
  #define Y5_GPIO_NUM        5
  #define Y4_GPIO_NUM       34
  #define Y3_GPIO_NUM       35
  #define Y2_GPIO_NUM       17
  #define VSYNC_GPIO_NUM    22
  #define HREF_GPIO_NUM     26
  #define PCLK_GPIO_NUM     21

#elif defined(CAMERA_MODEL_AI_THINKER)
  #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
#else
  #error "Camera model not selected"
#endif

static const char* _STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY;
static const char* _STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n";
static const char* _STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\n\r\n";

httpd_handle_t stream_httpd = NULL;

static esp_err_t stream_handler(httpd_req_t *req){
  camera_fb_t * fb = NULL;
  esp_err_t res = ESP_OK;
  size_t _jpg_buf_len = 0;
  uint8_t * _jpg_buf = NULL;
  char * part_buf[64];

  res = httpd_resp_set_type(req, _STREAM_CONTENT_TYPE);
  if(res != ESP_OK){
    return res;
  }

  while(true){
    fb = esp_camera_fb_get();
    if (!fb) {
      Serial.println("Camera capture failed");
      res = ESP_FAIL;
    } else {
      if(fb->width > 400){
        if(fb->format != PIXFORMAT_JPEG){
          bool jpeg_converted = frame2jpg(fb, 80, &_jpg_buf, &_jpg_buf_len);
          esp_camera_fb_return(fb);
          fb = NULL;
          if(!jpeg_converted){
            Serial.println("JPEG compression failed");
            res = ESP_FAIL;
          }
        } else {
          _jpg_buf_len = fb->len;
          _jpg_buf = fb->buf;
        }
      }
    }
    if(res == ESP_OK){
      size_t hlen = snprintf((char *)part_buf, 64, _STREAM_PART, _jpg_buf_len);
      res = httpd_resp_send_chunk(req, (const char *)part_buf, hlen);
    }
    if(res == ESP_OK){
      res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len);
    }
    if(res == ESP_OK){
      res = httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY));
    }
    if(fb){
      esp_camera_fb_return(fb);
      fb = NULL;
      _jpg_buf = NULL;
    } else if(_jpg_buf){
      free(_jpg_buf);
      _jpg_buf = NULL;
    }
    if(res != ESP_OK){
      break;
    }
    //Serial.printf("MJPG: %uB\n",(uint32_t)(_jpg_buf_len));
  }
  return res;
}

void startCameraServer(){
  httpd_config_t config = HTTPD_DEFAULT_CONFIG();
  config.server_port = 80;

  httpd_uri_t index_uri = {
    .uri       = "/",
    .method    = HTTP_GET,
    .handler   = stream_handler,
    .user_ctx  = NULL
  };
  
  //Serial.printf("Starting web server on port: '%d'\n", config.server_port);
  if (httpd_start(&stream_httpd, &config) == ESP_OK) {
    httpd_register_uri_handler(stream_httpd, &index_uri);
  }
}

void setup() {
  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
 
  Serial.begin(115200);
  Serial.setDebugOutput(false);
  
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG; 
  
  if(psramFound()){
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 10;
    config.fb_count = 2;
  } else {
    config.frame_size = FRAMESIZE_SVGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }
  
  // Camera init
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }
  // Wi-Fi connection
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  
  Serial.print("Camera Stream Ready! Go to: http://");
  Serial.print(WiFi.localIP());
  
  // Start streaming web server
  startCameraServer();
}

void loop() {
  delay(1);
}

?

閃爍板步驟

在閃爍過(guò)程之前,您需要更改示例草圖中的一些內(nèi)容。

轉(zhuǎn)到示例> ESP32> 相機(jī)并打開(kāi)CameraWebServer草圖

輸入您的 SSID 和密碼

將相機(jī)模塊從#define CAMERA_MODEL_WROVER_KIT更改為#define CAMERA_MODEL_AI_THINKER

現(xiàn)在,轉(zhuǎn)到工具并選擇正確的板,在我們的例子中是 AI-Thinker ESP32-CAM。

選擇正確的端口并點(diǎn)擊上傳。

現(xiàn)在,當(dāng) ESP32 開(kāi)始上傳過(guò)程時(shí),您將看到帶有點(diǎn)和破折號(hào)的連接消息。按下板底部的重置按鈕,點(diǎn)和劃線開(kāi)始。

如果您在此設(shè)置過(guò)程中遇到無(wú)法連接的錯(cuò)誤,這意味著您的時(shí)機(jī)不對(duì),請(qǐng)重試,當(dāng)?shù)谝粋€(gè)點(diǎn)出現(xiàn)在調(diào)試菜單中時(shí),長(zhǎng)按重置按鈕至少 1 秒鐘。

幾秒鐘后,您的草圖將被上傳。

現(xiàn)在從 FTDI 模塊中拔出 USB 并移除 GPIO0 和 GND 之間的跳線。

插入 USB 并打開(kāi)串行監(jiān)視器。

ESP32 將與 WIFI 連接(需要 1 分鐘),您將看到 ESP32 CAM 的 IP 地址。

結(jié)果到目前為止...

我們復(fù)制 ESP32 Cam 的 IP 地址并在 Web 瀏覽器中打開(kāi)它,它將顯示 ESP32 Cam 的實(shí)時(shí)信息。接下來(lái),我們開(kāi)始為此設(shè)置準(zhǔn)備 PCB。

PCB設(shè)計(jì)

pYYBAGNVkT2AIqkIAAKHsk4WEtU830.jpg

1 / 2

完成面包板設(shè)置后,我們準(zhǔn)備了一個(gè)簡(jiǎn)單的 PCB 設(shè)計(jì),其中包括一個(gè) USB 微型端口和一個(gè)二極管,用于為 ESP32 Cam 供電。

至于讓這個(gè)電路板更美觀和更酷,我下載了一張黑白 Darth Vader 圖像并將其轉(zhuǎn)換為 BMP 圖像,這樣我就可以將它添加到 PCB 設(shè)計(jì)中。

我將 ESP32 Cam 放在 Darth Vader 臉的一側(cè),這樣看起來(lái) Vader 正在通過(guò) ESP32 Cam 看著我們。

從 Seeed Fusion 獲取 PCB

1 / 2

在完成 PCB 并生成其 Gerber 數(shù)據(jù)后,我將其發(fā)送到 SEEED STUDIO 以獲取樣本。

訂購(gòu)了帶有白色絲印的 RED 阻焊層的 PCB。

我在一周內(nèi)收到了多氯聯(lián)苯,考慮到價(jià)格也很低,它們的質(zhì)量非常好。

Seeed Fusion PCB 服務(wù)為 PCB 制造和 PCB 組裝提供一站式原型設(shè)計(jì),因此,他們?cè)?7 個(gè)工作日內(nèi)生產(chǎn)出優(yōu)質(zhì) PCB 和快速交鑰匙 PCBA。

Seeed Studio Fusion PCB 組裝服務(wù)負(fù)責(zé)從PCB 制造、零件采購(gòu)、組裝和測(cè)試服務(wù)的整個(gè)制造過(guò)程,因此您可以確保他們獲得優(yōu)質(zhì)產(chǎn)品。

在評(píng)估市場(chǎng)興趣并驗(yàn)證工作原型后,Seeed Propagate Service 可以通過(guò)專業(yè)指導(dǎo)和強(qiáng)大的聯(lián)系網(wǎng)絡(luò)幫助您將產(chǎn)品推向市場(chǎng)。

PCB組裝

PCB組裝包括兩個(gè)步驟,

添加焊膏和二極管

添加頭針和 USB 端口

焊膏和添加二極管

我們首先將焊膏添加到電路板底部的每個(gè)組件焊盤(pán),然后將二極管放置在其位置。

接下來(lái),我們小心地提起整個(gè) PCB 并將其放在熱板上。我正在使用我不久前制作的老式DIY 電爐。

熱板將表面加熱到焊膏熔化溫度,然后慢慢熔化。幾分鐘后焊膏完全融化,我們?nèi)∠翽CB并讓它冷卻片刻。

這是最終設(shè)置,我們使用烙鐵放置兩個(gè)插頭引腳連接器。

結(jié)果

我們將 ESP32 放在 VaderCam 板上并插入 5V 充電器。

等待幾秒鐘后,我們?cè)跒g覽器中打開(kāi) Web 應(yīng)用程序,我們可以看到來(lái)自 esp32 cam 的實(shí)時(shí)提要。

這就是今天的人們,如果您需要有關(guān)此項(xiàng)目的任何幫助,請(qǐng)發(fā)表評(píng)論。

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1DD3118電路圖紙資料
  2. 0.08 MB   |  1次下載  |  免費(fèi)
  3. 2AD庫(kù)封裝庫(kù)安裝教程
  4. 0.49 MB   |  1次下載  |  免費(fèi)
  5. 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
  6. 1.12 MB   |  1次下載  |  免費(fèi)
  7. 4網(wǎng)絡(luò)安全從業(yè)者入門(mén)指南
  8. 2.91 MB   |  1次下載  |  免費(fèi)
  9. 5DS-CS3A P00-CN-V3
  10. 618.05 KB  |  1次下載  |  免費(fèi)
  11. 6海川SM5701規(guī)格書(shū)
  12. 1.48 MB  |  次下載  |  免費(fèi)
  13. 7H20PR5電磁爐IGBT功率管規(guī)格書(shū)
  14. 1.68 MB   |  次下載  |  1 積分
  15. 8IP防護(hù)等級(jí)說(shuō)明
  16. 0.08 MB   |  次下載  |  免費(fèi)

本月

  1. 1貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說(shuō)明
  2. 0.50 MB   |  103次下載  |  1 積分
  3. 2涂鴉各WiFi模塊原理圖加PCB封裝
  4. 11.75 MB   |  89次下載  |  1 積分
  5. 3錦銳科技CA51F2 SDK開(kāi)發(fā)包
  6. 24.06 MB   |  43次下載  |  1 積分
  7. 4錦銳CA51F005 SDK開(kāi)發(fā)包
  8. 19.47 MB   |  19次下載  |  1 積分
  9. 5PCB的EMC設(shè)計(jì)指南
  10. 2.47 MB   |  16次下載  |  1 積分
  11. 6HC05藍(lán)牙原理圖加PCB
  12. 15.76 MB   |  13次下載  |  1 積分
  13. 7802.11_Wireless_Networks
  14. 4.17 MB   |  12次下載  |  免費(fèi)
  15. 8蘋(píng)果iphone 11電路原理圖
  16. 4.98 MB   |  6次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191390次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183342次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81588次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73815次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65989次下載  |  10 積分