Setting UP ESP32-CAM for First Time
تا بحال برای شما پیش آمده که بخواهید برای اتاق یا محل کارتان دوربین های مداربسته نصب کنید تا بتوانید بصورت زنده محیط های در مجاورت خودتان را تحت نظر داشته باشید. خوشبختانه به کمک تکنولوژی ESP32 و در نهایت ماژول ESP32-CAM میتوانید به راحتی این کار را انجام دهید. پس با انرژی و چند دقیقه مطالعه خواهید فهمید که این پروژه را چگونه عملی کنید. تنها با استفاده از یک ماژول ساده این کار امکان پذیر است. خب تا این قسمت که هدف از این آموزش مشخص شد بیایید درباره اجزای اصلی تشکیل دهنده این ماژول کمی تبادل اطلاعات داشته باشیم ، پس برای شروع از ESP32 یا قلب این ماژول شروع میکنیم. برای آموزش های بیشتر به CiferTech مراجعه کنید، همچنین برای حمایت از من حتما پیج من در اینستاگرام را دنبال کنید. ^-^
ESP32-Cam معرفی
ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوتهای آن بلوتوث داخلیاش میباشد. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی 40 نانومتری شرکت TSMC میباشد. این ماژول دارای بهترین پرفورمنس در مصرف انرژی میباشد یعنی با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیقتر به این برد نگاه کنیم باید بگوییم که این یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپ ها System on a chip microcontrollers هم گفته میشود.

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

روش راه اندازی ESP32-cam
برای شروع باید کتابخانه مربوط به این ماژول در نرم افزار Arduino IDE نصب گردد. ابتدا باید لینک زیر در محل ذکر شده File> Preferences کپی و پیست شود.
1 |
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 مربوط به این آموزش میباشد.

قبل از آپلود کد در ماژول باید تنظیمات شبکه را مشخص کنیم :
1 2 |
;"نام شبکه وای فای" = const char* ssid ;"پسوورد شبکه وای فای"= const char* password |

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

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

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

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

لیست قطعات
- ماژول ESP32-CAM
- FTDI programmer
سورس کد آردوینو
کدهای زیر را کپی کرده و در آردوینو IDE قرار دهید. سپس روی برد آردوینو آپلود کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
#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); } |
خیلی مفید و عالی بود، ممنون که این پست رو گذاشتی
ممنون، خوشحالم که مفید بود برات 🙂
خیلی خوب بود، میشه کارای هر پایه رو بیشتر توضیح بدید
حتما در آموزش های بعدی بیشتر توضیح میدم
عالی بود واقعا دمت گرم راستی یه سوال چجوری میشه صفحه وب ایجاد شده رو تغییر داد و تغییرات توش ایجاد کرد کتابخونه وبش کجاست ؟ و اینکه کیفیت دوربینش چطوریه میشه ارتقا داد ؟
I am really impressed with your writing skills and also with the layout on your blog.
Is this a paid theme or did you customize it yourself?
Anyway keep up the excellent quality writing, it is
rare to see a great blog like this one nowadays.