在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁(yè) > 博客 > 「電路DIY」ESP32-CAM上的視頻流服務(wù)器

            「電路DIY」ESP32-CAM上的視頻流服務(wù)器

            發(fā)布人:電子資料庫(kù) 時(shí)間:2023-02-24 來(lái)源:工程師 發(fā)布文章

            不久前,我注意到ESP32基于攝像頭板稱為ESP32-CAM在立創(chuàng)商城上,計(jì)劃買一個(gè)來(lái)玩,但直到最近我看到一個(gè)教程時(shí)才有機(jī)會(huì)。我覺得這是一個(gè)很好的板子,今天的教程將重點(diǎn)介紹使用ESP32-CAM板構(gòu)建視頻流服務(wù)器。

            這個(gè)ESP32-CAM非常便宜(價(jià)格不到10美元),一個(gè)基于ESP32-S芯片的小型攝像頭模塊人工智能思考者. 它本質(zhì)上包括OV2640相機(jī)內(nèi)置ESP32模塊和外設(shè)(傳感器和執(zhí)行器)可連接的幾個(gè)GPIO,以及一個(gè)microSD卡插槽,可用于存儲(chǔ)相機(jī)的圖像。突出的事實(shí)是,它是專為獨(dú)立攝像頭應(yīng)用程序設(shè)計(jì)的,ESP32-CAM沒有配備USB端口等功能,所有這些功能都可以在普通的ESP-32主板上使用。缺少USB端口也意味著缺少FTDI芯片,要對(duì)電路板進(jìn)行編程,您需要使用FTDI程序員。

            image.png

            ESP32-CAM(來(lái)源:Dealextreme)

            ESP32-CAM板的一些功能如下所示:

            • 802.11b/g/n Wi-Fi BT SoC模塊,支持STA/AP/STA AP工作模式

            • 低功耗32位CPU,也可以服務(wù)于應(yīng)用處理器

            • 最高160MHz時(shí)鐘速度,總計(jì)算能力高達(dá)600 DMIPS

            • 內(nèi)置520 KB SRAM,外部4MPRAM

            • 支持UART/SPI/I2C/PWM/ADC/DAC

            • 支持OV2640和OV7670攝像頭,并內(nèi)置閃光燈

            • 支持圖像WiFI上傳

            • SD卡插槽

            • 嵌入式Lwip和FreeRTOS

            • 支持智能配置/AirKiss技術(shù)

            • 支持串行端口本地和遠(yuǎn)程固件升級(jí)(FOTA)

            為了演示ESP32-CAM是如何工作的,我們將構(gòu)建一個(gè)視頻流服務(wù)器,它的IP地址可以從外部訪問,從而從ESP32-CAM攝像頭獲取實(shí)時(shí)流。

            這些步驟非常簡(jiǎn)單,在本教程的最后,您應(yīng)該熟悉ESP32-CAM,足以用它構(gòu)建一個(gè)更驚人的項(xiàng)目。

            所需組件

            本項(xiàng)目所需的組成部分包括:;

            1. ESP32-CAM

            2. 3.3V FTDI Programmer

            3. 跨接導(dǎo)線

            4. 面包板

            組件可以從附加鏈接購(gòu)買。對(duì)于FTDI,SparkFun的FTDI基本突破被使用,但是您可以決定使用任何其他類似的板3.3V邏輯電平 .

            示意圖

            ESP32-CAM附帶連接的攝像頭,如果您的情況不同,您只需將攝像頭連接到所提供的端口即可。這就留下了ESP32-CAM和FTDI程序員之間的聯(lián)系。FTDI編程器通過UART與ESP32-CAM通信,它將連接到ESP32-CAM的UART引腳。連接如下圖所示;

            image.png

            示意圖

            再次檢查連接,確保一切正常。

            代碼

            我們將在這個(gè)項(xiàng)目中使用Arduino IDE,因此,我們需要為ESP32設(shè)置Arduino IDE和板文件。按照我們之前在鈥上寫的本教程中詳細(xì)介紹的步驟操作用Arduino IDE編程ESP32“去完成它

            今天項(xiàng)目的代碼基于CameraWebserverESP32庫(kù)中的示例。這個(gè)項(xiàng)目背后的想法很簡(jiǎn)單,ESP32-CAM板被配置為一個(gè)web服務(wù)器,在網(wǎng)頁(yè)上提供來(lái)自攝像頭的實(shí)時(shí)反饋,因此與ESP在同一網(wǎng)絡(luò)上的任何瀏覽器都可以通過訪問該板的IP地址來(lái)查看實(shí)時(shí)提要。

            代碼使用esp攝像頭圖書館和無(wú)線網(wǎng)絡(luò)圖書館。這個(gè)esp攝像頭庫(kù)包含允許訪問攝像機(jī)的功能和拍照和錄制視頻等功能,而ESP的無(wú)線網(wǎng)絡(luò)庫(kù)包含一些函數(shù),這些函數(shù)允許我們將ESP32設(shè)置為web服務(wù)器。安裝這些庫(kù)時(shí)安裝這些庫(kù)ESP32 Arduino IDE公司因此,它們不需要特殊的安裝過程。

            像往常一樣,我會(huì)對(duì)代碼的某些部分做一個(gè)快速的解釋,并在項(xiàng)目結(jié)束時(shí)提供完整的代碼。

            代碼從包含我們將要使用的所有庫(kù)開始。根據(jù)您的ESP32庫(kù)/附加模塊版本攝像頭引腳.h文件將作為文件附著到草圖,或?qū)⑵鋬?nèi)容復(fù)制到草圖中。在我們的例子中,它是作為一個(gè)文件附加的,并且該文件已經(jīng)被添加到下載部分下的文件中。



            #include "esp_camera.h"#include <WiFi.h>#include "camera_pins.h"

            接下來(lái),將指定正在使用的相機(jī)的型號(hào)。在這種情況下,我們將使用人工智能思考者照相機(jī),所以它是指定的。

            // Select camera model//#define CAMERA_MODEL_WROVER_KIT//#define CAMERA_MODEL_ESP_EYE//#define CAMERA_MODEL_M5STACK_PSRAM//#define CAMERA_MODEL_M5STACK_WIDE#define CAMERA_MODEL_AI_THINKER

            接下來(lái),我們提供要連接ESP32的訪問點(diǎn)的憑據(jù),并初始化StartCameraServer功能

            const char* ssid = "ssid";const char* password = "password";void startCameraServer();

            接下來(lái)是無(wú)效設(shè)置()功能。我們通過初始化串行通信來(lái)啟動(dòng)函數(shù),然后配置攝像機(jī),將其引腳設(shè)置為存儲(chǔ)在攝像頭引腳.h文件。我們還設(shè)置了頻率和像素格式等設(shè)置。

            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;

            接下來(lái),我們檢查電路板是否有一個(gè)PSRAM并初始化它,設(shè)置幀大小和JPEG質(zhì)量。

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

            接下來(lái),我們使用創(chuàng)建的配置初始化攝像機(jī)

            // camera initesp_err_t err = esp_camera_init(&config);if (err != ESP_OK) {
              Serial.printf("Camera init failed with error 0x%x", err);  return;
            }

            并設(shè)置正在使用的攝影機(jī)傳感器的屬性。

              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 blightness just a bit
                s->set_saturation(s, -2);//lower the saturation
              }  //drop down frame size for higher initial frame rate
              s->set_framesize(s, FRAMESIZE_QVGA);#if defined(CAMERA_MODEL_M5STACK_WIDE)
              s->set_vflip(s, 1);
              s->set_hmirror(s, 1);#endif

            接下來(lái),我們使用前面提供的憑據(jù)將節(jié)點(diǎn)連接到接入點(diǎn),并驗(yàn)證連接狀態(tài)。

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

            我們通過WiFi呼叫StartCameraServer()該功能可自動(dòng)開始將攝像頭饋送流至可通過板的IP地址訪問的網(wǎng)頁(yè)(顯示在串行監(jiān)視器上,使用Wifi.localIP())功能)

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

            這個(gè)無(wú)效循環(huán)()函數(shù)只是在每個(gè)刷新點(diǎn)引入一個(gè)延遲。

            這個(gè)StartCameraServer()函數(shù)是ESP32庫(kù)中內(nèi)置的函數(shù)之一。你可以檢查一下,以便更好地了解它是如何工作的。

            項(xiàng)目的完整代碼如下所示,并附在下載部分下。

            #include "esp_camera.h"#include <WiFi.h>#include "camera_pins.h"//// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,//            or another board which has PSRAM enabled//// Select camera model//#define CAMERA_MODEL_WROVER_KIT//#define CAMERA_MODEL_ESP_EYE//#define CAMERA_MODEL_M5STACK_PSRAM//#define CAMERA_MODEL_M5STACK_WIDE#define CAMERA_MODEL_AI_THINKERconst char* ssid = "ssid";const char* password = "password";void startCameraServer();void setup() {
              Serial.begin(115200);
              Serial.setDebugOutput(true);
              Serial.println();  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;  //init with high specs to pre-allocate larger buffers
              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;
              }#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 blightness just a bit
                s->set_saturation(s, -2);//lower the saturation
              }  //drop down frame size for higher initial frame rate
              s->set_framesize(s, FRAMESIZE_QVGA);#if defined(CAMERA_MODEL_M5STACK_WIDE)
              s->set_vflip(s, 1);
              s->set_hmirror(s, 1);#endif
            
              WiFi.begin(ssid, password);  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() {  // put your main code here, to run repeatedly:
              delay(10000);
            }
            演示

            將ESP-32 CAM連接到FTDI編程器,確保GPIO O引腳連接到GND,然后將編程器連接到您的PC,然后按照以下步驟上載代碼:

            • 工具 >董事會(huì)然后選擇ESP32翻轉(zhuǎn)模塊

            • 工具 >港口并選擇ESP32/FTDI所連接的COM端口

            • 工具 >分區(qū)方案 , select巨大的應(yīng)用程序(3MB無(wú)OTA) Holmium

            • 按下ESP32-CAM車載復(fù)位按鈕

            • 然后,單擊上載按鈕上載代碼

            上載代碼后,斷開GPIO 0與GND的連接并打開串行監(jiān)視器波特率為 one hundred and fifteen thousand and two hundred(與序列號(hào)。開始()功能)。按ESP板上顯示的ESP-IP地址重置按鈕。

            image.png


            IP地址

            要從攝像頭訪問源,請(qǐng)?jiān)谂cESP位于同一網(wǎng)絡(luò)的設(shè)備上打開瀏覽器,然后在地址欄中輸入ESP32-CAM IP地址。按啟動(dòng)流媒體按鈕,您應(yīng)該可以看到正在流式傳輸?shù)囊曨l。

            這個(gè)項(xiàng)目可以取得相當(dāng)大的進(jìn)步。只需很少或不需要額外的編碼,您就可以輕松地將項(xiàng)目連接到您的家庭助理,這樣您就可以從家庭助理應(yīng)用程序查看流,再多花一點(diǎn)力氣和一張SD卡,我們就可以像面部識(shí)別這樣做了。

            就這樣!請(qǐng)隨時(shí)通過評(píng)論區(qū)與我聯(lián)系有關(guān)項(xiàng)目的問題,也讓我知道,如果你將作出任何改進(jìn)。


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



            關(guān)鍵詞: 服務(wù)器 電路

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉