آردوینو برد Esp32 برد ESP8266 ماژول دوربین

آموزش راه اندازی ماژول ESP32-CAM

نوشته شده توسط CiferTech

تا بحال برای شما پیش آمده که بخواهید برای اتاق یا محل کارتان دوربین های مداربسته نصب کنید تا بتوانید بصورت زنده محیط های در مجاورت خودتان را تحت نظر داشته باشید. خوشبختانه به کمک تکنولوژی ESP32 و در نهایت ماژول ESP32-CAM می‌توانید به راحتی این کار را انجام دهید. پس با انرژی و چند دقیقه مطالعه خواهید فهمید که این پروژه را چگونه عملی کنید. تنها با استفاده از یک ماژول ساده این کار امکان پذیر است. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

خب تا این قسمت که هدف از این آموزش مشخص شد بیایید درباره اجزای اصلی تشکیل دهنده این ماژول کمی تبادل اطلاعات داشته باشیم ، پس برای شروع از ESP32 یا قلب این ماژول شروع می‌کنیم.

 


معرفی ESP32-Cam


ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوت‌های آن بلوتوث داخلی‌اش می‌باشد. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی ۴۰ نانومتری شرکت TSMC می‌باشد. این ماژول دارای بهترین پرفورمنس در مصرف انرژی می‌باشد یعنی با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیق‌تر به این برد نگاه کنیم باید بگوییم که این یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپ ها System on a chip microcontrollers هم گفته می‌شود.

از دیگر امکانات ماژول ESP32-cam می‌توان به دوربین OV2640 با قابلیت ثبت تصویر با فرمت JPEG, BMP, grayscale اشاره کرد. همچنین با LED flash مونتاژ شده بر روی این ماژول قادر به تصویر برداری در مکان‌های تاریک نیز خواهید بود. یکی از ویژگی‌های کاربردی این ماژول ورودی micro SD با قابلیت ارتقا تا ۴GB است که به کاربر اجازه ذخیره تصاویر را هم می‌دهد.

” برای درک بهتر می توانید آموزش تصویری را در کانال یوتیوب من تماشا کنید ”


روش راه اندازی ESP32-cam


برای شروع باید کتابخانه مربوط به این ماژول در نرم افزار Arduino IDE نصب گردد. ابتدا باید لینک زیر در محل ذکر شده FilePreferences کپی و پیست شود.

https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

سپس با مراجعه به بخش برد ها در Tools > Board > Boards Manager  و جسجوی ESP32 قادر به دانلود کتابخانه مربوط خواهید بود.

در ادامه می‌توانید در بخش File Examples ESP32 Camera کدهای مربوط به این ماژول را پیدا کنید. مثال CameraWebServer مربوط به این آموزش می‌باشد.

قبل از آپلود کد در ماژول باید تنظیمات شبکه را مشخص کنیم :

 ;"نام شبکه وای فای" = const char* ssid
 ;"پسوورد شبکه وای فای"= const char* password

در این مرحله مدل ماژول خود در بین دیگر مدل ها که در کد موجود است با کامند و آن کامند کردن مشخص کنیم.

define CAMERA_MODEL_AI_THINKER#

حال زمان پروگرام کردن ماژول رسیده، به یک FTDI programmer نیاز داریم تا کد های موجود در Arduino IDE را بر روی ماژول پروگرام کنیم ، مانند تصویر زیر اتصالات را برقرار کنید، دقت داشته باشید که پایه GPIO 0 باید به GND متصل باشد تا عمل پروگرام صورت گیرد.

از منوی Tools موارد انتخاب شده در تصویر را با نرم افزار خود تطابق دهید.

پس از آپلود شدن کد، پین GPIO 0 را که قبل‌تر به GND متصل کرده بودید را از GND جدا کنید. سپس سریال مانیتور را در نرم افزار اردوینو باز کنید و باند ریت را برای روی ۱۱۵۲۰۰ قرار دهید سپس دکمه RESET بر روی ماژول را فشار دهید.

همانطور که مشاهده می کنید نرم افزار به شما یک IP Address می دهد که با جسجوی این IP در مرورگر خود می توانید دوربین را فعال کنید .


اتصالات


Vcc == Vcc

GND == GND

TX == U0R

RX == U0T


لیست قطعات


  1. ماژول ESP32-CAM
  2. FTDI programmer

 


سورس کد آردوینو


کدهای زیر را کپی کرده و در آردوینو IDE قرار دهید. سپس روی برد آردوینو آپلود کنید. چنانچه روش آپلود کدها را نمی‌دانید، به آموزش کار با برد آردوینو مراجعه کنید.

#include "esp_camera.h"
#include 
//
// 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_THINKER
#include "camera_pins.h"
const char* ssid = "PM.GOHARIAN";
const char* 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);
}

 

تمامی مراحل ضروری جهت اجرای پروژه در این آموزش توضبح داده شده است، مراحل را یک به یک اجرا کرده و در صورت هر گونه سوال از طریق بخش دیدگاه ها با ما در ارتباط باشید. 

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۳۷۰ دیدگاه