Wa Koodu

Èkọ́ ESP32 44/55 - ESP32 Kamẹ́ra Wẹ́b Sẹ́fà Fídíò Sítíìmù Lórí Wifi CAM-2 | Àkójọpọ̀ ESP32 ti SunFounder

Èkọ́ ESP32 44/55 - ESP32 Kamẹ́ra Wẹ́b Sẹ́fà Fídíò Sítíìmù Lórí Wifi CAM-2 | Àkójọpọ̀ ESP32 ti SunFounder

Nínú ẹ̀kọ́ yìí, a óò ṣẹ̀dá ibùdó ojú ọjọ́ gidi-àkókò nípa lílo ESP32 àti ẹ̀yà kámẹ́rà rẹ̀. Iṣẹ́-ọwọ́ yìí yóò jẹ́ kí ESP32 ṣàfihàn àwọn ìsọfúnni ojú ọjọ́ bíi ìwọ̀n-otútù àti ọ̀rinrin ní orí ibojú LCD, ní àkókò kan náà tí yóò máa gbé fídíò jáde lórí Wi-Fi. Ní ìparí ẹ̀kọ́ yìí, ìwọ yóò ní ibùdó ojú ọjọ́ tí ó ṣiṣẹ́ pátápátá tí ó máa ń mú ìmúdójúìwọ̀n wá gbogbo ìṣẹ́jú 10, tí ó ń pèsè ìsọfúnni ojú ọjọ́ tí ó ṣe pàtàkì ní ọwọ́ rẹ. Fún ìmúdájú púpọ̀ sí i, wo fídíò náà (nínú fídíò ní 00:00).

extension_bopard_camera

Ohun Èlò Tí A Ṣàlàyé

Àwọn èròjà pàtàkì ti iṣẹ́-ọwọ́ yìí ní ESP32 microcontroller, ibojú LCD, àti ẹ̀yà kámẹ́rà. ESP32 jẹ́ microcontroller alágbára tí ó ní agbára Wi-Fi àti Bluetooth tí a kọ́ sínú rẹ̀, tí ó jẹ́ kí ó lè sopọ̀ mọ́ ayélujára àti láti bá àwọn ẹ̀rọ mìíràn sọ̀rọ̀. Ẹ̀yà kámẹ́rà jẹ́ kí fídíò lè máa gbé jáde, nígbà tí ibojú LCD ń fi ìsọfúnni ojú ọjọ́ hàn fún olùṣàmúlò.

LCD tí a lò nínú iṣẹ́-ọwọ́ yìí jẹ́ ibojú ìṣàfihàn ohun kíkọ 20x4, tí ó lè fi iye pàtàkì ìsọfúnni hàn ní àkókò kan. Ó ti sopọ̀ mọ́ ESP32 fún ìṣàfihàn ìwọ̀n-otútù, ọ̀rinrin, àti àwọn ìsọfúnni ojú ọjọ́ mìíràn tí a gbà láti API orí ayélujára. ESP32 tún ní ètò ìṣàkóso bátì, tí ó jẹ́ kí ó lè ṣiṣẹ́ láìsí okun.

Àwọn Àlàyé Datasheet

Olùṣe Espressif
Nọ́mbà apá ESP32-WROOM-32
Fóltì Logic/IO 3.3 V
Fóltì ìpèsè 3.0 - 3.6 V
Ìwọ̀n-ìṣàn jáde (fún GPIO) 12 mA
Ìwọ̀n-ìṣàn tó pọ̀jù (fún GPIO) 40 mA
Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWM 1 kHz
Àwọn ìpele ìṣàkóso ìwọ̀n-ìkóhun 0.3 * VDD sí 0.7 * VDD
Ìrẹwẹ́sì fóltì / RDS(on) / ìkún 0.1 V (typ.)
Àwọn ìwọ̀n-ìkógun ooru 125 °C
Àpótí QFN48
Àwọn àkíyèsí / àwọn oríṣiríṣi Ó ní àwọn àṣàyàn PSRAM

 

  • Rí i dájú pé ìpèsè agbára tó tọ́ wà (3.0 - 3.6 V).
  • Lo àwọn ohun èlò ìtújáde ooru fún àwọn ìlò tí ń lo ìwọ̀n-ìṣàn gíga.
  • Ṣọ́ra pẹ̀lú àwọn ìwọ̀n-ìkóhun GPIO (12 mA fún pin).
  • So LCD àti kámẹ́rà pọ̀ dáradára láti yẹra fún àìsùn ìbánisọ̀rọ̀.
  • Ṣàyẹ̀wò àwọn ìsọfúnni Wi-Fi àti àwọn bọ́tìnnì API fún àwọn ìṣòro ìsopọ̀.

Àwọn Ìtọ́sọ́nà Ìsopọ̀

Láti so ESP32 pọ̀ mọ́ LCD àti ẹ̀yà kámẹ́rà, bẹ̀rẹ̀ nípa sísopọ̀ àwọn pin agbára àti ilẹ̀. So pin ilẹ̀ ti ESP32 pọ̀ mọ́ ilẹ̀ ti LCD àti kámẹ́rà. Lẹ́yìn náà, so pin 5V ti ESP32 pọ̀ mọ́ VCC ti LCD. Fún kámẹ́rà, so okun aláwọ̀ búráùn pọ̀ mọ́ ilẹ̀, okun pupa pọ̀ mọ́ 5V, okun aláwọ̀ yẹ́lò pọ̀ mọ́ GPIO 21, àti okun ọ̀sàn pọ̀ mọ́ GPIO 22. Rí i dájú pé àwọn ìsopọ̀ náà ṣokùn dáradára láti yẹra fún àwọn ìṣòro nígbà tí ẹ̀rọ bá ń ṣiṣẹ́.

Lẹ́yìn náà, so LCD pọ̀ mọ́ àwọn pin GPIO tí ó yẹ. Àwọn pin pàtó lè yàtọ̀ nígbà míì, ṣùgbọ́n ní ọ̀pọ̀ ìgbà, ìwọ yóò so àwọn pin ìṣàkóso pọ̀ mọ́ àwọn GPIO tí a yàn ní orí ESP32. Rí i dájú pé o wo datasheet tàbí àwòrán pinout fún LCD rẹ̀ pàtó láti fi ìdí rẹ̀ múlẹ̀ pé ìsopọ̀ tó tọ́ wà. Lẹ́yìn tí o bá parí àwọn ìsopọ̀ wọ̀nyí, ṣàyẹ̀wò gbogbo ìsopọ̀ lẹ́ẹ̀kan sí i fún àwọn ìsopọ̀ tí kò ṣokùn tàbí tí kò tọ́.

Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà

Nínú kóòdù náà, a kọ́kọ́ fi àwọn ilé-ìkàwé pàtàkì tí a nílò fún ṣíṣe kámẹ́rà àti Wi-Fi ṣiṣẹ́. Àwọn ìdámọ̀ pàtàkì ni a kédè, pẹ̀lú ssid àti password fún àwọn ìsọfúnni Wi-Fi. Ìtòlẹ́sẹẹsẹ fún kámẹ́rà ni a ṣètò nípa lílo camera_config_t structure, níbi tí a ti ń ṣàlàyé ọ̀pọ̀lọpọ̀ àwọn paramita bíi ọ̀nà pixel àti ìwọ̀n fírámù.

const char* ssid = "SSID";
const char* password = "PASSWORD";

void setup() {
  Serial.begin(115200);
  camera_config_t config;
  // ... (àwọn ètò ìtòlẹ́sẹẹsẹ)
  esp_err_t err = esp_camera_init(&config);
  // Ṣàyẹ̀wò fún àwọn àṣìṣe
}

Àkójọpọ̀ yìí ń bẹ̀rẹ̀ kámẹ́rà náà àti ṣàyẹ̀wò fún àwọn àṣìṣe nígbà ìṣètò. Bí kámẹ́rà bá kùnà láti bẹ̀rẹ̀, a óò tẹ̀ ìsọfúnni àṣìṣe jáde sí ibojú serial.

Lẹ́yìn náà, a ń ṣiṣẹ́ lórí ìsopọ̀ Wi-Fi àti bẹ̀rẹ̀ olùpèsè kámẹ́rà. Ìyípo ìsopọ̀ náà ń bá a lọ títí tí ìsopọ̀ Wi-Fi tó yọrí sí rere, èyí tí ó ṣe pàtàkì fún gbígba ìsọfúnni ojú ọjọ́ láti API.

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

Nínú apá yìí, a ń bẹ̀rẹ̀ ìsopọ̀ Wi-Fi àti tẹ̀ àwọn àmì-àṣìṣe sí ibojú serial títí tí ìsopọ̀ náà yóò fi múlẹ̀. Ní kété tí ó bá ti sopọ̀, olùpèsè kámẹ́rà yóò bẹ̀rẹ̀, tí ó jẹ́ kí fídíò lè máa gbé jáde.

Kóòdù pípé yóò gbé jáde ní ìsàlẹ̀ àpilẹ̀kọ yìí, níbi tí o ti lè rí bí gbogbo àwọn apá ṣe papọ̀.

Ìṣàfihàn / Ohun Tí O Lè Retí

Ní kété tí gbogbo nǹkan bá ti sopọ̀ tí a sì ti gbé kóòdù náà sílẹ̀, o lè retí pé ESP32 yóò sopọ̀ mọ́ nẹ́tíwọọkì Wi-Fi àti bẹ̀rẹ̀ sí gba ìsọfúnni ojú ọjọ́ gbogbo ìṣẹ́jú 10. Àwọn ìwọ̀n-otútù àti ọ̀rinrin yóò hàn lórí ibojú LCD. Ní àfikún, kámẹ́rà yóò gbé fídíò jáde lórí Wi-Fi, èyí tí a lè wọlé sí nípa lílo àdírẹ́sì IP àdúgbò tí a tẹ̀ jáde nínú ibojú serial. Bí ìsopọ̀ Wi-Fi bá kùnà, ESP32 yóò fi ìyé rẹ hàn nípa ìtẹ̀jáde serial (nínú fídíò ní 10:00).

Àwọn Àkókò Fídíò

  • 00:00 Ìbẹ̀rẹ̀
  • 1:42 Ìfihàn sí ESP32-Cam
  • 4:30 Àlàyé kóòdù Arduino
  • 7:35 Yíyan Bọ́ọ̀dì ESP32 àti ebute COM nínú Arduino IDE
  • 9:17 Ìṣàfihàn
  • 12:06 Ìṣàfihàn lórí Fóònù Alágbèéká

Aworan

ESP32-40-micro-sd-card-2
ESP32-40-micro-sd-card-2
extension_bopard_camera
extension_bopard_camera
845-ESP32 Tutorial 44/55- Arduino code for camera web sever
Ede: C++
#include "esp_camera.h"
#include <WiFi.h>

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

#include "camera_pins.h"

// Replace the next variables with your SSID/Password combination
const char* ssid = "SSID";
const char* password = "PASSWORD";

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

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

Orisun & itọkasi

Fáìlìs📁

Ko si awọn faili ti o wa.