那曲檬骨新材料有限公司

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

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

3天內(nèi)不再提示

使用ESP32-S3搭建網(wǎng)絡(luò)攝像頭

jf_Vqngj70R ? 來源:美男子玩編程 ? 2023-09-06 12:48 ? 次閱讀

本篇博文使用ESP32-S3搭建網(wǎng)絡(luò)攝像頭,相比較局域網(wǎng)攝像頭,本篇博文將分享如何搭建外網(wǎng)可以訪問的網(wǎng)絡(luò)攝像頭。

這主要是使用內(nèi)網(wǎng)穿透技術(shù),內(nèi)網(wǎng)穿透是為了使具有某一個特定源 IP 地址和源端口號的數(shù)據(jù)包(這里指局域網(wǎng)攝像頭)不被網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備屏蔽而正確路由到內(nèi)網(wǎng)主機(jī)。

主要流程分為兩步:

1、先實(shí)現(xiàn)局域網(wǎng)訪問網(wǎng)絡(luò)攝像頭;

2、在此基礎(chǔ),使用內(nèi)網(wǎng)穿透的方式,搭建外網(wǎng)可訪問的網(wǎng)絡(luò)攝像頭。

1局域網(wǎng)攝像頭

ESP32實(shí)現(xiàn)局域網(wǎng)攝像頭的方式比較簡單,驅(qū)動代碼如下:

#include "esp_camera.h"
#include


//
// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality
//            Ensure ESP32 Wrover Module or other board with PSRAM is selected
//            Partial images will be transmitted if image exceeds buffer size
//
//            You must select partition scheme from the board menu that has at least 3MB APP space.
//            Face Recognition is DISABLED for ESP32 and ESP32-S2, because it takes up from 15 
//            seconds to process single frame. Face Detection is ENABLED if PSRAM is enabled as well


// ===================
// Select camera model
// ===================
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
// #define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM
//#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
//#define CAMERA_MODEL_XIAO_ESP32S3 // Has PSRAM
// ** Espressif Internal Boards **
//#define CAMERA_MODEL_ESP32_CAM_BOARD
//#define CAMERA_MODEL_ESP32S2_CAM_BOARD
//#define CAMERA_MODEL_ESP32S3_CAM_LCD
#define CAMERA_MODEL_DFRobot_FireBeetle2_ESP32S3 // Has PSRAM
//#define CAMERA_MODEL_DFRobot_Romeo_ESP32S3 // Has PSRAM


#include "camera_pins.h"
#include "DFRobot_AXP313A.h"


DFRobot_AXP313A axp;


// ===========================
// Enter your WiFi credentials
// ===========================
const char* ssid = "";
const char* password = "";


void startCameraServer();
void setupLedFlash(int pin);


void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  Serial.println();


  while(axp.begin() != 0){
    Serial.println("init error");
    delay(1000);
  }


  axp.enableCameraPower(axp.eOV2640);  // 給攝像頭供電


  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_sccb_sda = SIOD_GPIO_NUM;
  config.pin_sccb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.frame_size = FRAMESIZE_UXGA;
  config.pixel_format = PIXFORMAT_JPEG; // for streaming
  //config.pixel_format = PIXFORMAT_RGB565; // for face detection/recognition
  config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
  config.fb_location = CAMERA_FB_IN_PSRAM;
  config.jpeg_quality = 12;
  config.fb_count = 1;


  // if PSRAM IC present, init with UXGA resolution and higher JPEG quality
  //                      for larger pre-allocated frame buffer.
  if(config.pixel_format == PIXFORMAT_JPEG){
    if(psramFound()){
      config.jpeg_quality = 10;
      config.fb_count = 2;
      config.grab_mode = CAMERA_GRAB_LATEST;
    } else {
      // Limit the frame size when PSRAM is not available
      config.frame_size = FRAMESIZE_SVGA;
      config.fb_location = CAMERA_FB_IN_DRAM;
    }
  } else {
    // Best option for face detection/recognition
    config.frame_size = FRAMESIZE_240X240;
#if CONFIG_IDF_TARGET_ESP32S3
    config.fb_count = 2;
#endif
  }


#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif


  // 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;
  }


  sensor_t * s = esp_camera_sensor_get();
  // initial sensors are flipped vertically and colors are a bit saturated
  if (s->id.PID == OV3660_PID) {
    s->set_vflip(s, 1); // flip it back
    s->set_brightness(s, 1); // up the brightness just a bit
    s->set_saturation(s, -2); // lower the saturation
  }
  // drop down frame size for higher initial frame rate
  if(config.pixel_format == PIXFORMAT_JPEG){
    s->set_framesize(s, FRAMESIZE_QVGA);
  }


#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM)
  s->set_vflip(s, 1);
  s->set_hmirror(s, 1);
#endif


#if defined(CAMERA_MODEL_ESP32S3_EYE)
  s->set_vflip(s, 1);
#endif


// Setup LED FLash if LED pin is defined in camera_pins.h
#if defined(LED_GPIO_NUM)
  setupLedFlash(LED_GPIO_NUM);
#endif


  WiFi.begin(ssid, password);
  WiFi.setSleep(false);


  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");


  startCameraServer();


  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");
}


void loop() {
  // Do nothing. Everything is done in another task by the web server
  delay(10000);
}

代碼中有幾點(diǎn)需要注意:

1、宏定義選擇適配的攝像頭模式。

// ===================
// Select camera model
// ===================
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
// #define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM
//#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
//#define CAMERA_MODEL_XIAO_ESP32S3 // Has PSRAM
// ** Espressif Internal Boards **
//#define CAMERA_MODEL_ESP32_CAM_BOARD
//#define CAMERA_MODEL_ESP32S2_CAM_BOARD
//#define CAMERA_MODEL_ESP32S3_CAM_LCD
#define CAMERA_MODEL_DFRobot_FireBeetle2_ESP32S3 // Has PSRAM
//#define CAMERA_MODEL_DFRobot_Romeo_ESP32S3 // Has PSRAM

2、無線路由器SSID和密碼要填寫正確。

// ===========================
// Enter your WiFi credentials
// ===========================
const char* ssid = "";
const char* password = "";

3、給攝像頭供電

axp.enableCameraPower(axp.eOV2640);  // 給攝像頭供電

4、板卡需要外接天線,否則可能無法連接路由器。

編譯下載程序到板卡中,確保局域網(wǎng)訪問網(wǎng)絡(luò)攝像頭可正常使用。

2內(nèi)網(wǎng)穿透網(wǎng)絡(luò)攝像頭

內(nèi)網(wǎng)穿透我們使用花生殼這款軟件提供的內(nèi)網(wǎng)穿透服務(wù)。

在官網(wǎng)下載APP

下載安裝完成后,在內(nèi)網(wǎng)穿透服務(wù)點(diǎn)擊新建映射,如下圖所示:

6c73a7fe-4c6a-11ee-a25d-92fbcf53809c.png

填寫新建映射的基本信息,請注意內(nèi)網(wǎng)主機(jī)和內(nèi)網(wǎng)端口是局域網(wǎng)攝像頭的主機(jī)和端口(端口默認(rèn)為80),如下圖所示:

6ca0b06e-4c6a-11ee-a25d-92fbcf53809c.png

新建映射完成后,可以在APP看到新增的設(shè)備列表,如下圖所示:

6cb80426-4c6a-11ee-a25d-92fbcf53809c.png

復(fù)制訪問網(wǎng)址,在瀏覽器中打開:http://2j90962r69.goho.co:47918/

即使不在同一個局域網(wǎng)內(nèi)也可以正常訪問攝像頭啦。

6cc8e5de-4c6a-11ee-a25d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 攝像頭
    +關(guān)注

    關(guān)注

    60

    文章

    4862

    瀏覽量

    96298
  • 局域網(wǎng)
    +關(guān)注

    關(guān)注

    5

    文章

    761

    瀏覽量

    46395
  • ip地址
    +關(guān)注

    關(guān)注

    0

    文章

    303

    瀏覽量

    17128
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    978

    瀏覽量

    17524

原文標(biāo)題:ESP32-S3搭建外網(wǎng)可訪問的網(wǎng)絡(luò)攝像頭(內(nèi)網(wǎng)穿透)

文章出處:【微信號:美男子玩編程,微信公眾號:美男子玩編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    請問ESP32-S3 USB HOST是否支持USB2.0?

    規(guī)格書介紹ESP32-S2指定USB HOST支持的USB1.1,ESP32-S3的USB HOST支持USB2.0? 請問ESP32-S3 USB HOST是否支持USB2.0? 接入USB
    發(fā)表于 07-19 06:53

    請問ESP32-S3攝像頭,WIFI,藍(lán)牙鍵鼠,藍(lán)牙耳機(jī)對話,SD卡,USBOTG,一路串口通訊可以同時使用嗎?

    請問ESP32-S3上,攝像頭,WIFI,藍(lán)牙鍵鼠,藍(lán)牙耳機(jī)對話,SD卡,USBOTG,一路串口通訊可以同時使用嗎,最好再留5個IO輸出。
    發(fā)表于 02-15 06:03

    【FireBeetle 2 ESP32-S3開發(fā)板體驗(yàn)】測評1_搭建開發(fā)環(huán)境

    ,擁有16MB Flash和8MB PSRAM。搭載的ESP32-S3芯片擁有強(qiáng)大的神經(jīng)網(wǎng)絡(luò)運(yùn)算能力和信號處理能力,適用于圖像識別、語音識別等項(xiàng)目。 FireBeetle 2 ESP32-S3板載
    發(fā)表于 07-29 21:40

    淺談ESP32-C3ESP32-S3芯片

    ESP32-C3ESP32-S3的發(fā)布,不僅為IOT行業(yè)提供了高性價比、穩(wěn)定、好用、安全的通訊層,支持AI加速,同時在顯示層應(yīng)用也將占有一席之地。
    發(fā)表于 04-28 10:37 ?1.9w次閱讀

    ESP32 AUDIO OV2640攝像頭 音頻調(diào)試日記

    reset 禁用3.vsync需使能兩次三、 I2S0切換使用ES8388和攝像頭前言記錄一下ESP32-DOWD芯片音頻和攝像頭的調(diào)試
    發(fā)表于 12-16 16:53 ?14次下載
    <b class='flag-5'>ESP32</b> AUDIO OV2640<b class='flag-5'>攝像頭</b> 音頻調(diào)試日記

    ESP32 CAM:遙控物體檢測攝像頭

    電子發(fā)燒友網(wǎng)站提供《ESP32 CAM:遙控物體檢測攝像頭.zip》資料免費(fèi)下載
    發(fā)表于 12-15 09:56 ?2次下載
    <b class='flag-5'>ESP32</b> CAM:遙控物體檢測<b class='flag-5'>攝像頭</b>

    基于ESP32-CAM的RSTP協(xié)議的網(wǎng)絡(luò)攝像頭

    本次介紹的程序是使用ESP32-CAM進(jìn)行圖像采集并將圖像以RTSP協(xié)議進(jìn)行無線傳輸。在同網(wǎng)絡(luò)的PC上使用軟件對攝像頭的圖像進(jìn)行拉取觀看。
    的頭像 發(fā)表于 12-15 11:39 ?4013次閱讀

    合宙ESP32-S3開發(fā)板特性解讀

    穿越萬水千山,奔赴與工程師朋友的約定——合宙ESP32-S3超值MCU開發(fā)板,來了! 1 合宙ESP32-S3開發(fā)板簡介 合宙CORE-ESP32S3是基于樂鑫ESP32-S3芯片進(jìn)行
    的頭像 發(fā)表于 01-11 18:45 ?1w次閱讀

    什么是ESP32-CAM攝像頭

    ESP32-CAM是一款基于ESP32-S2 芯片,具有攝像功能的微型模組。同時配備了OV2640 攝像頭、連接外設(shè)的GPIO,以及用于存儲拍攝圖像的microSD 卡。
    的頭像 發(fā)表于 02-17 11:01 ?2.4w次閱讀
    什么是<b class='flag-5'>ESP32</b>-CAM<b class='flag-5'>攝像頭</b>?

    啟明去端分享| ESP32-S3如何實(shí)現(xiàn)tcp_client和tcp_server

    /get-started/index.html#get-started-set-up-env硬件需求:Esp32-s3開發(fā)板ESP32-S3TCP介紹傳輸控制協(xié)議(TCP
    的頭像 發(fā)表于 09-07 18:53 ?5520次閱讀
    啟明去端分享| <b class='flag-5'>ESP32-S3</b>如何實(shí)現(xiàn)tcp_client和tcp_server

    新品上市 | 合宙ESP32-S3開發(fā)板

    穿越萬水千山,奔赴與工程師朋友的約定——合宙ESP32-S3超值MCU開發(fā)板,來了!1合宙ESP32-S3開發(fā)板簡介合宙CORE-ESP32S3是基于樂鑫ESP32-S3芯片進(jìn)行設(shè)計(jì)的
    的頭像 發(fā)表于 01-13 15:53 ?3340次閱讀
    新品上市 | 合宙<b class='flag-5'>ESP32-S3</b>開發(fā)板

    ESP32觸屏攝像頭

    電子發(fā)燒友網(wǎng)站提供《ESP32觸屏攝像頭.zip》資料免費(fèi)下載
    發(fā)表于 06-27 14:28 ?0次下載
    <b class='flag-5'>ESP32</b>觸屏<b class='flag-5'>攝像頭</b>

    基于ESP32-S3的高性能開發(fā)板介紹

    PSRAM,可以存儲更多的代碼和數(shù)據(jù),模組搭載的ESP32-S3芯片擁有強(qiáng)大的神經(jīng)網(wǎng)絡(luò)運(yùn)算能力和信號處理能力,適用于圖像識別、語音識別等項(xiàng)目。
    的頭像 發(fā)表于 09-05 11:33 ?1.1w次閱讀
    基于<b class='flag-5'>ESP32-S3</b>的高性能開發(fā)板介紹

    借助ESP32-S3主控MCU、ChirpLAN?小網(wǎng)關(guān)搭建網(wǎng)絡(luò)

    借助先進(jìn)的ESP32-S3主控MCU,ChirpLAN?小網(wǎng)關(guān)為您帶來前所未有的網(wǎng)絡(luò)體驗(yàn)。
    的頭像 發(fā)表于 03-14 10:02 ?1167次閱讀

    分享6個實(shí)用的ESP32-S3物聯(lián)網(wǎng)項(xiàng)目:從智能設(shè)備到安全創(chuàng)新

    的實(shí)時安全攝像頭等。 項(xiàng)目一、MutantW V2 - DIY ESP32-S3 智能手表 硬件和軟件組件: 硬件清單 1x ESP32-
    的頭像 發(fā)表于 05-17 10:15 ?945次閱讀
    六合彩管家婆| 网上百家乐官网作弊不| 澳门百家乐威尼斯| 新皇冠现金网怎么样| 百家乐试玩账户| 百家乐官网闲庄和| bet365官网| 顶尖百家乐的玩法技巧和规则| 百家乐官网透明发牌机| 百家乐官网为什么庄5| 现金网制作| 龙博百家乐的玩法技巧和规则| 百家乐官网网站东方果博| bet365高尔夫娱乐场| 免费百家乐追号| 全讯网百家乐官网的玩法技巧和规则 | 风水24龙| 深州市| 丹东亿酷棋牌下载| 在线百家乐作弊| 百家乐官网网页游戏| 百家乐官网翻天主题曲| 百家乐官网游戏软件开发| 天猫国际娱乐城| 大发888送58| 百家乐又称为什么| 闲和庄百家乐娱乐| 澳门百家乐破解| 免费百家乐官网奥| 988百家乐官网娱乐| k7娱乐| 百家乐真人游戏棋牌| 百家乐赌博机销售| 百家乐沙| 百家乐生活馆拖鞋| 什么是百家乐的大路| 百家乐赌博在线娱乐| 明陞百家乐官网娱乐城| 百家乐官网网站那个好| 大发888赌城| 大发888娱乐场|