آموزش راه اندازی ESP32-CAM | اگر چند سال پیش از شما میپرسیدند که یک دوربین دیجیتال با WiFi چقدر هزینه خواهد داشت، احتمالاً نمیگفتید ۱۰ دلار. اما اکنون اینطور نیست.
ESP32-CAM، که در اوایل سال ۲۰۱۹ به بازار عرضه شد، بازی را تغییر داده است. به طرز شگفتانگیزی، با هزینهای کمتر از ۱۰ دلار، شما یک ESP32 با پشتیبانی از دوربین و یک کارت SD دریافت میکنید.
این ماژولها واقعاً جالب هستند. اگر نیاز به شناسایی حرکت در پروژه های خود داشته باشید، یا شناسایی چهرهها، رمزگشایی پلاکهای خودرو، یا صرفاً یک دوربین امنیتی، وجود یکی از این ماژولها در جعبه ابزار شما ارزشمند است. در ادامه با خانه رباتیک ایران همراه باشید.
بررسی سختافزار ESP32-CAM
قلب ESP32-CAM یک System-on-Chip (SoC) از Ai-Thinker به نام ESP32-S است. به عنوان یک SoC، تراشه ESP32-S شامل یک کامپیوتر کامل میکروپروسسور، RAM، حافظه و ادوات جانبی روی یک تراشه واحد است. در حالی که قابلیتهای این تراشه بسیار چشمگیر است، برد توسعه ESP32-CAM ویژگیهای بیشتری به آن اضافه میکند. بیایید به بررسی هر یک از اجزا به صورت جداگانه بپردازیم.
پردازنده ESP32-S
ESP32-CAM از ماژول ESP32-S برای نصب روی مدار چاپی سطحی از Ai-Thinker بهره میبرد. این ماژول معادل ماژول ESP-WROOM-32 از Espressif است (از نظر ابعاد و مشخصات کلی مشابه است).
ESP32-S شامل یک میکروپروسسور Tensilica Xtensa® LX6 با دو هسته ۳۲ بیتی است که با فرکانس خیرهکننده ۲۴۰ مگاهرتز فعالیت میکند! این ویژگی باعث میشود که ESP32-S برای وظایف سنگین مانند پردازش ویدیو، شناسایی چهره و حتی هوش مصنوعی مناسب باشد.
حافظه
حافظه برای وظایف پیچیده از اهمیت بالایی برخوردار است، بنابراین ESP32-S دارای ۵۲۰ کیلوبایت حافظه داخلی RAM است که در همان سیلیکون سایر اجزای تراشه قرار دارد.
ممکن است برای وظایف نیازمند RAM زیاد ناکافی باشد، بنابراین ESP32-CAM شامل ۴ مگابایت PSRAM (حافظه شبهاستاتیک) است تا ظرفیت حافظه را افزایش دهد. این مقدار RAM بهویژه برای پردازشهای سنگین صوت یا گرافیک کافی است.
تمام این ویژگیها در صورت عدم وجود فضای ذخیرهسازی کافی برای برنامهها و دادهها بیمعنا میشوند. تراشه ESP32-S در این زمینه نیز درخشان است، زیرا شامل ۴ مگابایت حافظه فلش داخلی است.
دوربین
حسگر دوربین OV2640 که روی ESP32-CAM قرار دارد، آن را از سایر بردهای توسعه ESP32 متمایز میکند و آن را برای استفاده در پروژههای ویدئویی مانند زنگ در و دوربین مراقب کودک ایدهآل میسازد.
حسگر دوربین OV2640 دارای وضوح ۲ مگاپیکسل است که به حداکثر ۱۶۰۰×۱۲۰۰ پیکسل تبدیل میشود، که برای بسیاری از برنامههای نظارتی کافی است.
ESP32-CAM با طیف وسیعی از حسگرهای دوربین سازگار است، همانطور که در گیتهاب فهرست شده است.
ذخیرهسازی
اضافه شدن یک اسلات کارت microSD به ESP32-CAM یک مزیت خوب است. این امکان را برای گسترش نامحدود فراهم میکند و این برد را برای ثبت دادهها یا عکسبرداری بسیار مناسب میسازد.
آنتن
ESP32-CAM دارای یک آنتن با مدار PCB داخلی و همچنین یک کانکتور u.FL برای اتصال به آنتن خارجی است. یک جامپر انتخاب آنتن (مقاومت صفر اهمی) به شما این امکان را میدهد که یکی از این دو گزینه را انتخاب کنید.
اگر میخواهید از آنتن داخلی به یک آنتن خارجی سوئیچ کنید، به راهنمای اتصال آنتن خارجی به ESP32-CAM مراجعه کنید.
LEDها
ESP32-CAM دارای یک LED مربع سفید است. این LED برای استفاده به عنوان فلاش دوربین طراحی شده، اما همچنین میتواند برای روشنایی عمومی نیز استفاده شود.
یک LED قرمز کوچک در پشت دستگاه وجود دارد که میتوان از آن به عنوان نشانگر وضعیت استفاده کرد. این LED قابل برنامهریزی توسط کاربر است و به GPIO33 متصل میشود.
مشخصات فنی
به طور خلاصه، ESP32-CAM دارای مشخصات زیر است:
پردازندهها:
CPU: میکروپروسسور دو هستهای ۳۲ بیتی Xtensa LX6، با سرعت ۲۴۰ مگاهرتز و عملکرد تا ۶۰۰ DMIPS
پردازنده کممصرف (ULP)
حافظه:
۵۲۰ کیلوبایت SRAM
۴ مگابایت PSRAM خارجی
۴ مگابایت حافظه فلش داخلی
اتصال بیسیم:
Wi-Fi: 802.11 b/g/n
بلوتوث: v4.2 BR/EDR و BLE (رادیو با Wi-Fi مشترک است)
دوربین:
سنسور ۲ مگاپیکسلی OV2640
اندازه آرایه UXGA 1622×۱۲۰۰
فرمتهای خروجی شامل YUV422، YUV420، RGB565، RGB555 و دادههای فشرده ۸ بیتی
نرخ انتقال تصویر بین ۱۵ تا ۶۰ فریم در ثانیه
LED فلش داخلی
پشتیبانی از سنسورهای دوربین متعدد
پشتیبانی از کارت microSD
امنیت:
تمام ویژگیهای امنیتی استاندارد IEEE 802.11 پشتیبانی میشود، از جمله WFA، WPA/WPA2 و WAPI
بوت ایمن
رمزگذاری فلش
OTP 1024 بیتی، تا ۷۶۸ بیت برای مشتریان
شتابدهنده سختافزاری رمزنگاری: AES، SHA-2، RSA، رمزنگاری منحنی بیضوی (ECC)، تولید کننده عدد تصادفی (RNG)
مدیریت توان:
رگولاتور داخلی کمافت
دامنه قدرت جداگانه برای RTC
جریان خواب عمیق ۵ میکروآمپر
بیدار شدن از طریق وقفه GPIO، تایمر، اندازهگیری ADC، وقفه حسگر لمسی خازنی
نقشه و دیتاشیتها
برای اطلاعات بیشتر درباره ESP32-CAM، لطفاً به منابع زیر مراجعه کنید:
دیتاشیت ESP32-CAM
نقشه شماتیک ESP32-CAM
دیتاشیت دوربین OV2640
مصرف انرژی ESP32-CAM
مصرف انرژی ESP32-CAM بسته به نوع استفاده متفاوت است.
این مصرف انرژی از ۸۰ میلیآمپر در حالت عدم پخش ویدیو تا حدود ۱۰۰~۱۶۰ میلیآمپر در حالت پخش ویدیو متغیر است؛ با روشن بودن فلش، میتواند به ۲۷۰ میلیآمپر برسد.
- حالت عملیاتی مصرف انرژی
- حالت آماده ۸۰ میلیآمپر
- در حالت پخش ۱۰۰~۱۶۰ میلیآمپر
- در حالت پخش با فلش ۲۷۰ میلیآمپر
پیناوت ESP32-CAM
ESP32-CAM دارای ۱۶ پین در مجموع است. به منظور راحتی، پینها با عملکرد مشابه در کنار هم گروهبندی شدهاند. پیناوت به شرح زیر است:
مصرف برق ESP32-CAM به استفادهای که از آن میشود بستگی دارد.
این مقدار از ۸۰ میلیآمپر زمانی که ویدیو استریم نمیشود شروع میشود و به حدود ۱۰۰ تا ۱۶۰ میلیآمپر زمانی که ویدیو استریم میشود میرسد؛ با روشن کردن فلش، ممکن است به ۲۷۰ میلیآمپر برسد.
وضعیت عملکرد مصرف برق
حالت خواب ۸۰ میلیآمپر
در حال استریم ۱۰۰ تا ۱۶۰ میلیآمپر
در حال استریم با فلش ۲۷۰ میلیآمپر
پین آوت ESP32-CAM
ESP32-CAM دارای ۱۶ پین در مجموع است. به منظور راحتی، پینهای با عملکرد مشابه در کنار هم گروهبندی شدهاند. پین آوت به شرح زیر است:
پینهای تغذیه
دو پین تغذیه وجود دارد: ۵V و ۳V3. ماژول ESP32-CAM میتواند از طریق پین ۳.۳V یا ۵V تغذیه شود. از آنجا که بسیاری از کاربران گزارش کردهاند که هنگام تغذیه دستگاه با ۳.۳V مشکلاتی وجود دارد، توصیه میشود که ESP32-CAM همیشه از طریق پین ۵V تغذیه شود. پین VCC عموماً ۳.۳V را از رگولاتور ولتاژ داخلی خروجی میدهد، اما میتوان آن را با استفاده از لینک صفر اهمی نزدیک به پین VCC به ۵V پیکربندی کرد.
GND پین زمین است.
پینهای GPIO
چیپ ESP32-S در مجموع دارای ۳۲ پین GPIO است، اما از آنجا که بسیاری از آنها به طور داخلی برای دوربین و PSRAM استفاده میشوند، ESP32-CAM تنها ۱۰ پین GPIO در دسترس دارد. این پینها میتوانند به وظایف مختلفی مانند UART، SPI، ADC و Touch اختصاص داده شوند.
پینهای UART
چیپ ESP32-S در واقع دارای دو رابط UART، یعنی UART0 و UART2 است. با این حال، تنها پین RX (GPIO 16) از UART2 خروجی دارد، بنابراین UART0 تنها UART قابل استفاده در ESP32-CAM است (GPIO 1 و GPIO 3). همچنین، از آنجا که ESP32-CAM پورت USB ندارد، این پینها باید برای فلاش کردن و همچنین اتصال به دستگاههای UART مانند GPS، حسگرهای اثر انگشت، حسگرهای فاصله و غیره استفاده شوند.
پینهای کارت microSD
این پینها برای رابطدهی با کارت microSD استفاده میشوند. اگر از کارت microSD استفاده نمیکنید، میتوانید از این پینها به عنوان ورودی و خروجیهای معمولی استفاده کنید.
پینهای ADC
در ESP32-CAM تنها پینهای ADC2 خروجی دارند. با این حال، از آنجا که پینهای ADC2 به طور داخلی توسط درایور WiFi استفاده میشوند، نمیتوانند زمانی که Wi-Fi فعال است استفاده شوند.
پینهای لمسی
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
برنامهنویسی ESP32-CAM ممکن است کمی مشکل باشد زیرا این ماژول دارای پورت USB داخلی نیست. به همین دلیل، کاربران به سختافزار اضافی نیاز دارند تا برنامهها را از Arduino IDE بارگذاری کنند. هیچیک از این کارها پیچیده نیست، اما نامناسب است.
برای برنامهنویسی این دستگاه، شما به یک آداپتور USB به سریال (یک آداپتور FTDI) یا یک آداپتور برنامهنویسی ESP32-CAM-MB نیاز خواهید داشت.
استفاده از آداپتور FTDI
اگر تصمیم به استفاده از آداپتور FTDI دارید، در اینجا نحوه اتصال آن به ماژول ESP32-CAM آورده شده است.
بسیاری از برنامهنویسهای FTDI دارای یک جامپر هستند که به شما این امکان را میدهد که بین ۳.۳V و ۵V انتخاب کنید. از آنجایی که ما ESP32-CAM را با ۵V تغذیه میکنیم، مطمئن شوید که جامپر روی ۵V تنظیم شده است.
لطفاً توجه داشته باشید که پین GPIO 0 به زمین (Ground) متصل است. این اتصال تنها در حین برنامهریزی ESP32-CAM ضروری است. پس از اتمام برنامهریزی ماژول، باید این اتصال را قطع کنید.
به خاطر داشته باشید! شما باید این اتصال را هر بار که میخواهید یک اسکریپت جدید بارگذاری کنید، برقرار کنید.
استفاده از آداپتور ESP32-CAM-MB (توصیهشده)
استفاده از آداپتور FTDI برای برنامهریزی ESP32-CAM کمی دردسرساز است. به همین دلیل، بسیاری از فروشندگان اکنون برد ESP32-CAM را به همراه یک برد کوچک افزونه به نام ESP32-CAM-MB میفروشند.
شما ESP32-CAM را روی برد افزونه قرار میدهید، یک کابل میکرو USB متصل میکنید و دکمه بارگذاری (Upload) را فشار میدهید تا برد خود را برنامهریزی کنید. همینقدر ساده است.
نکته قابل توجه در این برد، مبدل USB به سریال CH340G است. این مبدل دادهها را بین کامپیوتر شما و ESP32-CAM ترجمه میکند. همچنین یک دکمه RESET، یک دکمه BOOT، یک LED نشانگر وضعیت و یک رگولاتور ولتاژ برای تأمین انرژی کافی برای ESP32-CAM وجود دارد.
راهاندازی محیط برنامهنویسی Arduino IDE
نصب برد ESP32
برای استفاده از ESP32-CAM یا هر ESP32 دیگری با Arduino IDE، ابتدا باید برد ESP32 (که به عنوان ESP32 Arduino Core نیز شناخته میشود) را از طریق مدیر برد Arduino نصب کنید.
اگر هنوز این کار را نکردهاید، از این آموزش برای نصب برد ESP32 پیروی کنید:
آموزش برنامهنویسی ESP32 در Arduino IDE
نصب برد ESP32 در Arduino IDE
چندین پلتفرم توسعه برای برنامهنویسی ESP32 در دسترس است. شما میتوانید از Arduino IDE استفاده کنید که برای افرادی که با Arduino آشنا هستند طراحی شده است.
انتخاب برد و پورت
پس از نصب ESP32 Arduino Core، IDE Arduino خود را دوباره راهاندازی کنید و به مسیر Tools > Board > ESP32 Arduino بروید و AI-Thinker ESP32-CAM را انتخاب کنید.
اکنون ESP32-CAM را با استفاده از یک کابل USB به کامپیوتر خود متصل کنید. سپس به مسیر Tools > Port بروید و پورت COM که به ESP32-CAM متصل است را انتخاب کنید.
خلاصه! حالا Arduino IDE برای ESP32-CAM تنظیم شده است!
مثال ۱: چشمک زدن (Blink)
پس از اتمام مراحل قبلی، شما آمادهاید تا اولین برنامه خود را با ESP32-CAM تست کنید! Arduino IDE را راهاندازی کنید. اگر برد خود را جدا کردهاید، دوباره آن را متصل کنید.
بیایید سادهترین اسکریپت همه زمانها را بارگذاری کنیم . Blink!
این اسکریپت از LED فلاش دوربین روی برد استفاده میکند. این LED به GPIO 4 متصل است.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ |
int flashPin = ۴; void setup() { pinMode(flashPin, OUTPUT); } void loop() { digitalWrite(flashPin, HIGH); delay(۱۰۰۰); digitalWrite(flashPin, LOW); delay(۱۰۰۰); } |
حالا دکمه بارگذاری را فشار دهید. اگر از آداپتور FTDI استفاده میکنید، پس از بارگذاری کد، GPIO 0 را از GND جدا کنید. برای اجرای اسکچ، ممکن است لازم باشد دکمه ریست روی ESP32-CAM خود را فشار دهید.
اگر همه چیز به درستی کار کرد، LED فلش روی بورد ESP32-CAM شما باید اکنون چشمکزن باشد!
تبریک میگویم! شما اولین ESP32-CAM خود را برنامهریزی کردهاید!
مثالهای بیشتر ESP32-CAM
هسته آردوینو ESP32 شامل چندین مثال است که هر چیزی از جستجوی شبکههای نزدیک تا ساخت یک وبسرور را نشان میدهد. برای دسترسی به اسکچهای مثال، به منوی File > Examples > ESP32 بروید.
شما یک انتخاب از اسکچهای مثال را مشاهده خواهید کرد. میتوانید هر یک از آنها را انتخاب کنید و اسکچ را در IDE خود بارگذاری کرده و شروع به آزمایش کنید.
مثال ۲ ESP32-CAM: سرور پخش زنده ویدئو
بیایید اسکچ CameraWebServer را اجرا کنیم. این اسکچ ESP32-CAM را به یک وبکم تمامعیار تبدیل میکند، با ویژگیهایی مانند تشخیص چهره و گزینههای سفارشیسازی بسیار. این یک مثال بسیار چشمگیر از تواناییهای ESP32-CAM است!
شما میتوانید این مثال را در مسیر File > Examples > ESP32 > Camera > CameraWebServer پیدا کنید.
مثال ۲ ESP32-CAM: سرور پخش زنده ویدئو
بیایید اسکچ CameraWebServer را اجرا کنیم. این اسکچ ESP32-CAM را به یک وبکم تمامعیار تبدیل میکند، با ویژگیهایی مانند تشخیص چهره و گزینههای سفارشیسازی بسیار. این یک مثال بسیار چشمگیر از تواناییهای ESP32-CAM است!
شما میتوانید این مثال را در مسیر File > Examples > ESP32 > Camera > CameraWebServer پیدا کنید.
۱ ۲ |
const char* ssid = "REPLACE_WITH_YOUR_SSID"; const char* password = "REPLACE_WITH_YOUR_PASSWORD"; |
کدی که نیاز به ویرایش دارد با رنگ زرد هایلایت شده است.
کد اکنون آماده است تا به ESP32-CAM بارگذاری شود.
دسترسی به سرور پخش ویدئو
پس از بارگذاری اسکچ، مانیتور سریال را با نرخ باود ۱۱۵۲۰۰ باز کنید و دکمه ریست روی ESP32-CAM را فشار دهید. شما باید آدرس IP را در مانیتور سریال مشاهده کنید.
یک مرورگر را راهاندازی کنید و آدرس IP نمایش داده شده در مانیتور سریال را وارد کنید. اطمینان حاصل کنید که مرورگر وب در همان شبکهای است که ESP32-CAM به آن متصل است.
ESP32-CAM باید یک صفحه وب را نمایش دهد. برای شروع پخش ویدئو، دکمه “Start Stream” را فشار دهید.
شما میتوانید با تنظیمات مختلف دوربین در پانل سمت چپ بازی کنید. به عنوان مثال، میتوانید وضوح و نرخ فریم ویدئو، و همچنین روشنایی، کنتراست، اشباع و موارد مشابه را تغییر دهید.
به سادگی دکمه “Get Still” را فشار دهید تا یک تصویر بگیرید. توجه داشته باشید که تصاویر به جای ذخیره روی کارت microSD، به کامپیوتر دانلود میشوند.
اتصال آنتن خارجی به ESP32-CAM
ESP32-CAM با یک آنتن PCB روی بورد و یک کانکتور u.FL برای اتصال آنتن خارجی عرضه میشود. یک جامپر انتخاب آنتن (مقاومت صفر اهم) به شما این امکان را میدهد که بین دو گزینه انتخاب کنید.
آنتن PCB یک راه عالی برای شروع آزمایش با ESP32-CAM است. این آنتن در صورتی که نزدیک روتر خود باشید به خوبی عمل میکند (AI-Thinker ادعا میکند که آنتن PCB دارای یک گین ۲.۱dBi است).
اگر از روتر خود خیلی دور باشید، ممکن است با پخش ویدئوی کند و مشکلات دیگر در اتصال مواجه شوید، در این صورت بهتر است از یک آنتن خارجی ۲.۴GHz با کانکتور IPX استفاده کنید. برای این کار، باید جامپرهای آنتن را تغییر دهید تا کانکتور u.FL فعال شود.
یک سهگانه پدهای لحیم کاری در کنار کانکتور u.FL و بین آنتن روی بورد و بدنه فلزی ESP32-S قرار دارد. یک مقاومت صفر اهمی دو پد بالایی را به هم متصل میکند. به سادگی این مقاومت را بردارید و آن را بین دو پد پایینی قرار دهید.
شعبه بابل: پل کارگر به سمت کشوری، روبروی ماکروویو، جنب فروشگاه جانبو
شعبه ساری: خیابان مهدیه، نبش بهمن شرقی