
راه اندازی ماژول دوربین ESP32-CAM:شروع پروژهه ی اینترنت اشیاء با ESP32-CAM
آشنایی با ESP32-CAM و قابلیتهای آن برای DIY و IoT
چند سال پیش اگر از شما میپرسیدند یک ماژول دوربین دیجیتال با قابلیت وایفای چقدر قیمت دارد، بعید بود عدد پایینی بگویید. اما امروز اوضاع فرق کرده است.
ماژول ESP32-CAM که اولین بار در سال ۲۰۱۹ عرضه شد، با امکاناتی فراتر از انتظار وارد بازار شد. این برد کوچک با وجود قیمت مناسب امکاناتی مثل پردازندهی قدرتمند ESP32، پشتیبانی از دوربین OV2640 و قابلیت اتصال کارت حافظهی SD را در اختیار شما قرار میدهد.
این ماژولها برای پروژههای خانگی و صنعتی واقعاً کاربردی هستند. چه بخواهید یک دوربین هوشمند امنیتی ساده برای خانه یا مغازه بسازید، چه برای پروژههای تشخیص چهره یا پلاک خودرو استفاده کنید، یا حتی یک پروژهی سرگرمی مثل تشخیص حرکت و ردیابی اجسام انجام دهید، ESP32-CAM میتواند انتخاب خوبی باشد.
داشتن یکی از این بردها در جعبهابزار الکترونیک هر علاقهمند به DIY و اینترنت اشیاء (IoT) ، واقعاً ارزشمند است.
مرور سختافزاری ESP32-CAM
ESP32-CAM Hardware Overview
قلب ESP32-CAM، یک سیستم روی چیپ (SoC) به نام ESP32-S از شرکت Ai-Thinker است. از آنجا که یک SoC است، تراشهی ESP32-S یک کامپیوتر کامل را در خود جای داده است — شامل میکروپروسسور، RAM، حافظه ذخیرهسازی و واحدهای جانبی (پریفرالها) — همه روی یک تراشه.
در حالی که تواناییهای این تراشه بهتنهایی بسیار چشمگیر هستند، برد توسعهی ESP32-CAM حتی ویژگیهای بیشتری را به مجموعه اضافه میکند. بیایید هر جزء را یکی یکی بررسی کنیم.
پردازنده ESP32-S
The ESP32-S Processor
ESP32-CAM ماژول مدار چاپی نصب سطحی (Surface-mount PCB module) ESP32-S از Ai-Thinker را تجهیز کرده است. این ماژول معادل ماژول ESP-WROOM-32 از Espressif است (با همان فرم فاکتور و مشخصات کلی).
تراشهی ESP32-S شامل یک میکروپروسسور Tensilica Xtensa® LX6 با دو هستهی ۳۲ بیتی است که با سرعت حیرتانگیز ۲۴۰ مگاهرتز کار میکند! این همان چیزی است که ESP32-S را برای کارهای سنگینی مانند پردازش ویدئو، تشخیص چهره و حتی هوش مصنوعی مناسب میسازد.
حافظه
The Memory
حافظه برای کارهای پیچیده حیاتی است، بنابراین ESP32-S دارای ۵۲۰ کیلوبایت RAM داخلی است که روی همان دای (Die) همراه با دیگر اجزای تراشه قرار دارد.
ممکن است این مقدار برای کارهای سنگین مبتنی بر RAM کافی نباشد، بنابراین ESP32-CAM شامل ۴ مگابایت PSRAM خارجی (Pseudo-Static RAM) برای گسترش ظرفیت حافظه است. این مقدار RAM برای کارهایی مانند پردازش صوتی یا گرافیکی سنگین، کاملاً کافی است.
تمام این ویژگیها بدون داشتن فضای ذخیرهسازی کافی برای برنامهها و دادههای شما بیفایده خواهند بود. تراشهی ESP32-S در اینجا هم میدرخشد، زیرا شامل ۴ مگابایت حافظه فلش داخلی است.
دوربین
The Camera
سنسور دوربین OV2640 روی ESP32-CAM همان چیزی است که آن را از دیگر بردهای توسعه ESP32 متمایز میکند و آن را برای استفاده در پروژههای ویدئویی مانند زنگ درب تصویری یا دوربین پرستار بچه ایدهآل میسازد.
سنسور دوربین OV2640 دارای رزولوشن ۲ مگاپیکسل است که به حداکثر ۱۶۰۰×۱۲۰۰ پیکسل ترجمه میشود، که برای بسیاری از کاربردهای نظارت تصویری کافی است.
ESP32-CAM با طیف وسیعی از سنسورهای دوربین سازگار است، همانطور که در گیتهاب فهرست شده است.
حافظه ذخیرهسازی
The Storage
افزودن یک شیار کارت microSD روی ESP32-CAM یک امتیاز عالی است. این امکان را برای گسترش نامحدود فراهم میکند و این برد کوچک را به گزینهای عالی برای دیتالاگرها یا ثبت تصاویر تبدیل میسازد.
آنتن
The Antenna
ESP32-CAM دارای یک آنتن PCB داخلی (ردیابی روی برد) و همچنین یک کانکتور u.FL برای اتصال آنتن خارجی است. یک جامپر انتخاب آنتن (مقاومت صفر اهم) به شما اجازه میدهد بین این دو گزینه انتخاب کنید.
اگر میخواهید از آنتن داخلی به خارجی تغییر دهید، به بخش مربوط به اتصال آنتن خارجی به ESP32-CAM مراجعه کنید.
LEDها
LEDs
ESP32-CAM دارای یک LED مربع سفید است. این LED برای استفاده به عنوان فلش دوربین در نظر گرفته شده است، اما میتواند برای روشنایی عمومی نیز استفاده شود.
یک LED قرمز کوچک در پشت وجود دارد که میتواند به عنوان نشانگر وضعیت استفاده شود. این LED توسط کاربر برنامهپذیر است و به GPIO33 متصل شده است.
مشخصات فنی
Technical Specifications
برای خلاصهسازی، ESP32-CAM دارای مشخصات زیر است:
پردازندهها (Processors):
- CPU: میکروپروسسور Xtensa دو هستهای ۳۲ بیتی LX6، با فرکانس کاری ۲۴۰ مگاهرتز و کارایی تا ۶۰۰ DMIPS
- همپردازنده بسیار کممصرف (ULP co-processor)
حافظه (Memory):
- ۵۲۰ کیلوبایت SRAM
- ۴ مگابایت PSRAM خارجی
- ۴ مگابایت حافظه فلش داخلی
اتصال بیسیم (Wireless connectivity):
- Wi-Fi: استاندارد 802.11 b/g/n
- بلوتوث: نسخه 4.2 BR/EDR و BLE (که رادیو را با Wi-Fi به اشتراک میگذارد)
دوربین (Camera):
- سنسور OV2640 با رزولوشن ۲ مگاپیکسل
- اندازه آرایه: UXGA 1622×1200
- فرمتهای خروجی شامل: YUV422، YUV420، RGB565، RGB555 و داده فشرده ۸ بیتی
- نرخ انتقال تصویر: ۱۵ تا ۶۰ فریم بر ثانیه
- دارای LED فلش داخلی
- پشتیبانی از بسیاری از سنسورهای دوربین
- پشتیبانی از کارت microSD
امنیت (Security):
- پشتیبانی از تمام ویژگیهای امنیتی استاندارد IEEE 802.11، شامل: WFA، WPA/WPA2 و WAPI
- بوت امن (Secure boot)
- رمزگذاری فلش (Flash encryption)
- کلیدهای یکبارمصرف OTP با طول ۱۰۲۴ بیت (تا ۷۶۸ بیت برای مشتریان)
- شتابدهنده سختافزاری رمزنگاری: AES، SHA-2، RSA، رمزنگاری منحنی بیضوی (ECC)، تولیدکننده اعداد تصادفی (RNG)
مدیریت توان (Power management):
- رگولاتور داخلی LDO (افت ولتاژ کم)
- دامنه تغذیه مستقل برای RTC
- جریان حالت خواب عمیق: ۵ میکروآمپر
- قابلیت بیدار شدن از: وقفه GPIO، تایمر، اندازهگیری ADC، وقفه سنسور لمسی خازنی
شماتیک و دیتاشیتها
Schematic and Datasheets
برای اطلاعات بیشتر در مورد ESP32-CAM، لطفاً به منابع زیر مراجعه کنید:
- دیتاشیت ESP32-CAM
- شماتیک ESP32-CAM
- دیتاشیت دوربین OV2640
مصرف توان ESP32-CAM
ESP32-CAM Power Consumption
مصرف توان ESP32-CAM بسته به نوع استفاده شما متفاوت است.
این مقدار از ۸۰ میلیآمپر در حالت بدون استریم ویدئو تا حدود ۱۰۰ تا ۱۶۰ میلیآمپر در هنگام استریم ویدئو متغیر است؛ و در صورتی که فلش روشن باشد، میتواند به ۲۷۰ میلیآمپر برسد.
جدول حالتهای کاری و مصرف توان:
حالت کاری | مصرف توان |
---|---|
استندبای (Stand by) | ۸۰ میلیآمپر |
در حال استریم (In streaming) | ۱۰۰ تا ۱۶۰ میلیآمپر |
استریم با فلش (In streaming with flash) | ۲۷۰ میلیآمپر |
پینآوت ESP32-CAM
ESP32-CAM Pinout
برد ESP32-CAM در مجموع ۱۶ پین دارد. برای راحتی، پینهایی با عملکرد مشابه در کنار هم گروهبندی شدهاند. پینآوت به صورت زیر است:
پینهای تغذیه (Power Pins)
دو پین تغذیه وجود دارد: ۵V و ۳V3.
ESP32-CAM میتواند از طریق پین ۳.۳ ولت یا ۵ ولت تغذیه شود. از آنجا که بسیاری از کاربران مشکلاتی را هنگام تغذیه دستگاه با ۳.۳ ولت گزارش کردهاند، توصیه میشود که ESP32-CAM همیشه از طریق پین ۵V تغذیه شود.
پین VCC به طور معمول ۳.۳ ولت را از رگولاتور ولتاژ روی برد خروجی میدهد. با این حال، میتوان آن را با استفاده از لینک صفر اهم نزدیک به پین VCC طوری پیکربندی کرد که ۵ ولت خروجی بدهد.
پین GND، زمین مدار است.
پینهای GPIO
تراشه ESP32-S در مجموع دارای ۳۲ پین GPIO است، اما به دلیل اینکه بسیاری از آنها به صورت داخلی برای دوربین و PSRAM استفاده میشوند، برد ESP32-CAM فقط ۱۰ پین GPIO قابل استفاده دارد.
این پینها میتوانند برای کارهای مختلفی مانند UART، SPI، ADC و Touch اختصاص داده شوند.
پینهای UART
تراشه ESP32-S در واقع دو رابط UART دارد: UART0 و UART2.
اما تنها پین RX (GPIO16) از UART2 بیرون کشیده شده است، بنابراین تنها UART0 (پینهای GPIO1 و GPIO3) در ESP32-CAM قابل استفاده است.
همچنین، از آنجا که ESP32-CAM فاقد پورت USB است، این پینها باید هم برای فلش کردن و هم برای اتصال به دستگاههای UART (مثل GPS، حسگر اثرانگشت، حسگر فاصله و غیره) استفاده شوند.
پینهای کارت microSD
این پینها برای ارتباط با کارت microSD استفاده میشوند. اگر از کارت microSD استفاده نمیکنید، میتوانید این پینها را مانند ورودیها و خروجیهای معمولی به کار ببرید.
پینهای ADC
روی ESP32-CAM فقط پینهای ADC2 بیرون کشیده شدهاند.
با این حال، از آنجا که پینهای ADC2 به صورت داخلی توسط درایور Wi-Fi استفاده میشوند، زمانی که Wi-Fi فعال باشد نمیتوان از آنها استفاده کرد.
پینهای لمسی (Touch Pins)
ESP32-CAM دارای ۷ پین GPIO لمسی خازنی است.
وقتی یک بار خازنی (مانند انگشت انسان) در نزدیکی GPIO قرار گیرد، ESP32 تغییر ظرفیت خازنی را تشخیص میدهد.
پینهای SPI
ESP32-CAM تنها یک SPI (VSPI) در حالتهای Slave و Master دارد.
پینهای PWM
ESP32-CAM دارای ۱۰ کانال (تمام پینهای GPIO) PWM است که توسط یک کنترلر PWM کنترل میشوند.
خروجی PWM میتواند برای راهاندازی موتورهای دیجیتال و LEDها استفاده شود.
برای اطلاعات بیشتر، به راهنمای جامع پینآوت ESP32-CAM مراجعه کنید. این راهنما همچنین توضیح میدهد که کدام پینهای GPIO ESP32-CAM امن هستند و کدام پینها باید با احتیاط استفاده شوند.
برنامهنویسی ESP32-CAM
Programming the ESP32-CAM
برنامهنویسی ESP32-CAM میتواند کمی دردسرساز باشد، زیرا این برد پورت USB داخلی ندارد. به دلیل همین تصمیم طراحی، کاربران برای آپلود برنامهها از Arduino IDE به سختافزار اضافی نیاز دارند. هیچکدام از این مراحل خیلی پیچیده نیستند، اما میتواند آزاردهنده باشد.
برای برنامهنویسی این دستگاه، شما به یکی از این دو ابزار نیاز خواهید داشت:
- یک مبدل USB به سریال (FTDI Adapter)
- یا یک برنامهریز ESP32-CAM-MB
استفاده از مبدل FTDI
Using the FTDI Adapter
اگر تصمیم گرفتهاید از مبدل FTDI استفاده کنید، اتصال آن به ماژول ESP32-CAM به شکل زیر خواهد بود:
بسیاری از پروگرامرهای FTDI یک جامپر دارند که به شما اجازه میدهد بین ۳.۳ ولت و ۵ ولت انتخاب کنید. چون ما ESP32-CAM را با ۵ ولت تغذیه میکنیم، مطمئن شوید جامپر روی ۵V قرار دارد.
لطفاً توجه کنید که پین GPIO0 باید به زمین (GND) متصل شود. این اتصال فقط در زمان برنامهریزی ESP32-CAM لازم است.
وقتی برنامهریزی ماژول به پایان رسید، باید این اتصال را قطع کنید.
یادتان باشد! هر بار که میخواهید یک کُد جدید (Sketch) آپلود کنید، باید دوباره این اتصال را برقرار کنید.
استفاده از آداپتور ESP32-CAM-MB (توصیهشده)
Using the ESP32-CAM-MB Adapter (Recommended)
استفاده از مبدل FTDI برای برنامهریزی ESP32-CAM کمی دردسر دارد. به همین دلیل، بسیاری از فروشندگان اکنون برد ESP32-CAM را همراه با یک برد کوچک افزونه به نام ESP32-CAM-MB عرضه میکنند.
کافی است ESP32-CAM را روی این برد افزونه قرار دهید، یک کابل micro USB وصل کنید، و روی دکمه Upload در Arduino IDE کلیک کنید تا برنامه روی برد آپلود شود. به همین سادگی.
نکته برجسته این برد، مبدل USB به سریال CH340G است. این تراشه دادهها را بین کامپیوتر شما و ESP32-CAM ترجمه میکند. همچنین این برد دارای:
- دکمه RESET
- دکمه BOOT
- یک LED نشانگر تغذیه
- و یک رگولاتور ولتاژ برای تأمین توان کافی به ESP32-CAM
میباشد.
راهاندازی Arduino IDE
Setting Up the Arduino IDE
نصب برد ESP32
Installing the ESP32 Board
برای استفاده از ESP32-CAM (یا هر ESP32 دیگری) با Arduino IDE، ابتدا باید برد ESP32 (که با نام ESP32 Arduino Core هم شناخته میشود) را از طریق Arduino Board Manager نصب کنید.
اگر قبلاً این کار را انجام ندادهاید، این آموزش را دنبال کنید تا برد ESP32 را نصب کنید:
- آموزش برنامهنویسی ESP32 در Arduino IDE
- نصب برد ESP32 در Arduino IDE
چندین پلتفرم توسعه برای برنامهنویسی ESP32 موجود هستند. شما میتوانید از اینها استفاده کنید:
- Arduino IDE – مخصوص کسانی که با Arduino آشنا هستند
- Espruino … (ادامه دارد)
انتخاب برد و پورت
Selecting the Board and Port
پس از نصب ESP32 Arduino Core، Arduino IDE خود را ریاستارت کنید و به مسیر زیر بروید:
Tools > Board > ESP32 Arduino
و سپس AI-Thinker ESP32-CAM را انتخاب کنید.
اکنون ESP32-CAM را با استفاده از یک کابل USB به کامپیوتر خود متصل کنید. سپس به مسیر زیر بروید:
Tools > Port
و پورتی را که ESP32-CAM به آن وصل است انتخاب کنید.
همین! Arduino IDE اکنون برای استفاده با ESP32-CAM آماده است.
مثال اول ESP32-CAM : چشمکزن
ESP32-CAM Example 1 : Blink
وقتی مراحل قبلی را به پایان رساندید، آماده هستید تا اولین برنامهی خود را روی ESP32-CAM امتحان کنید!
Arduino IDE را باز کنید. اگر برد خود را جدا کردهاید، دوباره آن را وصل کنید.
بیایید سادهترین اسکتچ (Sketch) ممکن را آپلود کنیم – چشمکزن (Blink)!
این اسکتچ از LED فلش دوربین روی برد استفاده میکند. این LED به GPIO4 متصل است.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int flashPin = 4; void setup() { pinMode(flashPin, OUTPUT); } void loop() { digitalWrite(flashPin, HIGH); delay(1000); digitalWrite(flashPin, LOW); delay(1000); } |
اکنون دکمه Upload را فشار دهید.
اگر از مبدل FTDI استفاده میکنید، بعد از آپلود کد، اتصال GPIO0 به GND را قطع کنید. برای اجرای اسکتچ، ممکن است لازم باشد دکمه Reset روی ESP32-CAM را فشار دهید.
اگر همه چیز درست کار کرده باشد، اکنون باید LED فلش روی برد ESP32-CAM شما شروع به چشمکزدن کند!
تبریک میگوییم! شما بهتازگی اولین برنامهی خود را روی ESP32-CAM اجرا کردید! 🎉
بیشتر مثالهای ESP32-CAM
More ESP32-CAM Examples
هستهی Arduino برای ESP32 شامل چندین مثال است که همهچیز را از اسکن شبکههای نزدیک گرفته تا ساخت یک وبسرور نشان میدهند.
برای دسترسی به این اسکتچهای نمونه، به مسیر زیر بروید:
File > Examples > ESP32
شما مجموعهای از اسکتچهای نمونه را خواهید دید. میتوانید هر کدام را انتخاب کرده و در IDE بارگذاری کنید و شروع به آزمایش کنید.
مثال دوم ESP32-CAM : سرور استریم ویدیوی زنده
ESP32-CAM Example 2 : Live Video Streaming Server
بیایید اسکتچ CameraWebServer را اجرا کنیم. این اسکتچ، ESP32-CAM را به یک وبکم کامل تبدیل میکند، همراه با قابلیتهایی مثل تشخیص چهره و گزینههای سفارشیسازی فراوان.
این یک نمونهی بسیار چشمگیر از تواناییهای ESP32-CAM است!
شما میتوانید این مثال را در این مسیر پیدا کنید:
File > Examples > ESP32 > Camera > CameraWebServer
تنظیم کد برای ESP32-CAM
We’ll need to make a few changes…
برای اینکه این کد روی ESP32-CAM شما کار کند، باید چند تغییر کوچک اعمال کنید:
- انتخاب مدل دوربین
از آنجایی که ما از مدل AI-THINKER استفاده میکنیم، باید آن را غیرفعالسازی کامنت (uncomment) کرده و سایر مدلها را کامنت کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// =================== // 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 // ** Espressif Internal Boards ** //#define CAMERA_MODEL_ESP32_CAM_BOARD //#define CAMERA_MODEL_ESP32S2_CAM_BOARD //#define CAMERA_MODEL_ESP32S3_CAM_LCD |
- تنظیم شبکه وایفای
شما باید اطلاعات شبکهی وایفای خود را وارد کنید. متغیرهای زیر را پر کنید:
1 2 3 |
const char* ssid = "REPLACE_WITH_YOUR_SSID"; const char* password = "REPLACE_WITH_YOUR_PASSWORD"; |
دسترسی به سرور استریم ویدیو
Accessing the Video Streaming Server
وقتی اسکتچ را آپلود کردید، مانیتور سریال را با نرخ 115200 baud باز کنید و دکمهی Reset روی ESP32-CAM را فشار دهید.
باید آدرس IP را در مانیتور سریال ببینید.
مرورگر وب را باز کنید و آدرس IP نمایش دادهشده در مانیتور سریال را وارد کنید. مطمئن شوید که مرورگر وب شما روی همان شبکهای است که ESP32-CAM به آن متصل است.
ESP32-CAM باید یک صفحهی وب نمایش دهد. برای شروع استریم ویدیو، روی دکمهی Start Stream کلیک کنید.
شما میتوانید در پنل سمت چپ با تنظیمات مختلف دوربین کار کنید. برای مثال، میتوانید رزولوشن و نرخ فریم ویدیو را تغییر دهید، همچنین روشنایی، کنتراست، اشباع و موارد مشابه را تنظیم کنید.
برای گرفتن عکس کافی است روی دکمهی Get Still کلیک کنید.
توجه داشته باشید که تصاویر روی کامپیوتر دانلود میشوند و نه روی کارت microSD ذخیره.
اتصال یک آنتن خارجی به ESP32-CAM
Connecting an External Antenna to ESP32-CAM
ESP32-CAM دارای یک آنتن PCB داخلی و همچنین یک کانکتور u.FL برای اتصال آنتن خارجی است. یک جامپر انتخاب آنتن (مقاومت صفر اهم) به شما اجازه میدهد بین این دو گزینه انتخاب کنید.
آنتن PCB یک روش عالی برای شروع کار با ESP32-CAM است. این آنتن زمانی که نزدیک روتر باشید به خوبی کار میکند (شرکت Ai-Thinker ادعا میکند آنتن PCB دارای بهره 2.1dBi است).
اما اگر فاصلهی شما از روتر زیاد باشد، ممکن است با کندی در استریم ویدیو و دیگر مشکلات اتصال مواجه شوید. در این صورت باید از یک آنتن خارجی ۲.۴ گیگاهرتز با کانکتور IPX استفاده کنید.
برای این کار باید جامپرهای آنتن را تغییر دهید تا کانکتور u.FL فعال شود.
یک مجموعهی سهتایی از پدهای لحیمکاری در کنار کانکتور u.FL و بین آنتن روی برد و قاب فلزی ESP32-S قرار دارند. یک مقاومت صفر اهم، دو پد بالایی را به هم متصل میکند. کافی است این مقاومت را بردارید و آن را بین پدهای پایینی قرار دهید.