تا بحال برای شما پیش آمده که بخواهید برای اتاق یا محل کارتان دوربین های مداربسته نصب کنید تا بتوانید بصورت زنده محیط های در مجاورت خودتان را تحت نظر داشته باشید. خوشبختانه به کمک تکنولوژی 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 نصب گردد. ابتدا باید لینک زیر در محل ذکر شده File> Preferences کپی و پیست شود.
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
لیست قطعات
- ماژول ESP32-CAM
- 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 منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

۳۷۰ دیدگاه