آموزش Espآموزش ESP32آموزش اینترنت اشیا

برد ESP32 چیست؟ جامع ترین معرفی ESP32

پس از موفقیت چشمگیر ESP8266، شرکت Espressif (شرکت نیمه هادی که ESP8266 را ایجاد کرد) در یک ارتقاء کامل ESP32 را منتشر کرد. این میکروکنترلر نه تنها WiFi بلکه بلوتوث 4.0 (BLE/Bluetooth Smart) را نیز در خود جای داده است که آن را برای هر برنامه اینترنت اشیا (IoT) ایده آل می کند.

برد های ESP32 چند سال است که وارد بازار شده اند و دارای امکانات بسیار خارق العاده ای هستند. این میکروکنترلر از نسل قبلی خود یعنی ESP8266 بسیار بهتر عمل کرده و در حقیقت نسخه پیشرفته تر آن است. یکی از مزایای ESP32 این است که GPIO های بسیار بیشتری نسبت به ESP8266 دارد. و شما مجبور نخواهید بود که پین های IO خود را مالتیپلکس کنید. با این حال، چند نکته وجود دارد که باید در نظر داشته باشید، بنابراین لطفاً توضیحات پین ها را با دقت بخوانید.

معرفی ESP32

ESP32 در واقع مجموعه ای از میکروکنترلرها است که توسط Espressif Systems، یک شرکت چینی مستقر در شانگهای ساخته و توسعه یافته است. ویژگی های زیر دلایل اصلی علاقه مردم به ESP32 است:

  • پردازنده دو هسته ای: ESP32 مجهز به یک ریزپردازنده 32 بیتی LX6 Tensilica Xtensa® Dual-Core است که در فرکانس ساعت قابل تنظیم 80 تا 240 مگاهرتز کار می‌کند و تا 600 DMIPS (میلیون دستورالعمل در ثانیه) کار می‌کند.
  • مصرف برق فوق العاده کم: ESP32 با حالت‌های توان چندگانه و مقیاس‌بندی پویا قدرت، به مصرف انرژی بسیار کم دست می‌یابد که آن را برای استفاده در دستگاه‌های تلفن همراه، لوازم الکترونیکی پوشیدنی و برنامه‌های IoT ایده‌آل می‌کند.
  • قابلیت های وای فای: ESP32 دارای یک فرستنده گیرنده وای فای HT40 802.11b/g/n است که به آن امکان می دهد برای دسترسی به اینترنت (حالت ایستگاه) یا ایجاد شبکه بی سیم Wi-Fi خود (حالت نقطه دسترسی) به شبکه Wi-Fi متصل شود.

ماژول برد ESP32

  • قابلیت بلوتوث دو حالته: ESP32 از بلوتوث 4.0 (BLE/Bluetooth Smart) و همچنین بلوتوث کلاسیک (BT) پشتیبانی می کند که آن را برای طیف گسترده ای از برنامه های IoT مناسب می کند.
  • غنی از لوازم جانبی: ESP32 شامل مجموعه‌ای از تجهیزات جانبی داخلی مانند لمس خازنی، ADC، DAC، UART، SPI، I2C، PWM و موارد دیگر است.
  • پلتفرم های توسعه: چندین پلتفرم توسعه برای برنامه نویسی ESP32 وجود دارد. می توانید از Arduino IDE، MicroPython، Espruino، Espressif SDK و… استفاده کنید.
  • طراحی قوی: ESP32 می تواند به طور قابل اعتماد در محیط های صنعتی با دمای عملیاتی از -40 درجه سانتیگراد تا +125 درجه سانتیگراد کار کند.
  • کم هزینه: این یکی از میکروکنترلرهای ارزان است که قیمت آن از 6 دلار شروع می شود. این باعث می شود که ESP32 برای مخاطبان گسترده ای در دسترس باشد.

پلتفرم های برنامه نویسی ESP32

چندین پلتفرم توسعه برای برنامه نویسی ESP32 وجود دارد.

می‌توانید با Espruino (Node.js را شبیه‌سازی می‌کند)، سیستم‌عامل Mongoose (سیستم عاملی که توسط Espressif Systems و Google Cloud IoT توصیه شده)، MicroPython (پیاده‌سازی Python 3 برای میکروکنترلرها)، آردوینو IDE و… استفاده کنید.

خوشبختانه در بروزرسانی ها، افزونه ای برای برد ESP32 به محیط آردوینو IDE افزوده شده است. پیشنهاد میشود برای پروژه های خود از زبان برنامه نویسی آردوینو استفاده کنید تا در ساده ترین حالت ممکن بتوانید پروژه های پیچیده را اجرا کنید.

امکانات جانبی ESP32 و I/O

اگرچه میکروکنترلر ESP32 در مجموع دارای 48 پین GPIO است، اما تنها 25 عدد از آنها به پین های اطراف برد متصل هستند. این پین ها می توانند وظایف جانبی مختلفی را به خود اختصاص دهند، از جمله:

15 کانال ADC 15 کانال ADC با دقت 12 بیتی با محدوده های قابل انتخاب
واحد ارتباط UART رابط UART با کنترل جریان و پشتیبانی IrDA
25 خروجی PWM  25 پین PWM برای کنترل مواردی مانند سرعت موتور یا روشنایی LED دارد
2 کانال DAC دو DAC با دقت 8 بیتی برای تولید ولتاژ آنالوگ واقعی
واحد SPI, I2C و I2S سه رابط SPI و یک رابط I2C برای اتصال سنسورها و تجهیزات جانبی مختلف و همچنین دو رابط I2S برای افزودن صدا به پروژه شما
9 تاچ پد 9 پین با حسگر لمسی خازنی

به لطف ویژگی مالتی پلکس داخلی هر پین ESP32 میتواند چند عملکرد را انجام بدهد. به عنوان مثال، یک پین GPIO می تواند به عنوان ورودی ADC، خروجی DAC یا پد لمسی عمل کند.

توجه داشته باشید:

لطفاً توجه داشته باشید که توضیحات پین های ارائه شده زیر برای برد توسعه محبوب 30 پین ESP32 devkit v1 است.

برد توسعه دهنده 30 پین esp32

یعنی برد های مربوط به ESP32 دارای تعداد پین های مختلف هستند که به ترتیب های مختلفی کنار هم قرار گرفته اند. اما عملکرد پین ها با نام مشابه یکسان هست فقط در برد های مخلتف ممکن است جای آن ها تفاوت داشته باشد. همچنین این برد ها در امکانات روی بردی نیز با هم تفاوت دارند مثلا بعضی خروجی 5 ولت دارند و بعضی ندارند.

توضیحات پین های ESP32

برد توسعه ESP32 DevKit V1 در مجموع 30 پین دارد. برای درک راحت تر، پین‌هایی با عملکرد مشابه با هم گروه‌بندی شده اند. تصویر زیر اطلاعات کاملی راجع به پایه ها به شما میدهد.

توضیحات پین های ESP32

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

پبیایید نگاهی دقیق‌تر به پین‌های ESP32 و عملکرد آن‌ها بیاندازیم.

پین های GPIO

برد توسعه ESP32 دارای 25 پین GPIO است که با برنامه نویسی مناسب می توان عملکردهای مختلفی را به آنها اختصاص داد. انواع مختلفی از GPIO وجود دارد: فقط دیجیتال، آنالوگ، لمس خازنی، و … بیشتر این GPIO های دیجیتال را می توان با پول آپ داخلی یا پول دان داخلی پیکربندی کرد یا روی امپدانس بالا تنظیم کرد.

پین های GPIO

استفاده از کدام ESP32 GPIO ایمن است؟

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

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

  پایه   GPIO ایمن است؟ دلیل
D0 0 ⚠️ برای رفتن به حالت اجرا کد HIGH و برای برنامه نویسی LOW باشد
TX0 1 Tx برای فلش و رفع اشکال استفاده می شود
D2 2 ⚠️ باید در هنگام بوت LOW باشد و همچنین به LED روی برد متصل شود
RX0 3 Rx برای فلش و رفع اشکال استفاده می شود
D4 4
D5 5 ⚠️ هنگام بوت شدن باید HIGH باشد
D6 6 به حافظه فلش متصل است
D7 7 به حافظه فلش متصل است
D8 8 به حافظه فلش متصل است
D9 9 به حافظه فلش متصل است
D10 10 به حافظه فلش متصل است
D11 11 به حافظه فلش متصل است
D12 12 ⚠️ هنگام بوت شدن باید LOW باشد
D13 13
D14 14
D15 15 ⚠️ باید در هنگام راه‌اندازی HIGHباشد، در صورت LOW بودن Log غیرفعال میشود
RX2 16
TX2 17
D18 18
D19 19
D21 21
D22 22
D23 23
D25 25
D26 26
D27 27
D32 32
D33 33
D34 34 ⚠️ ورودی GPIO، نمی تواند به عنوان خروجی پیکربندی شود
D35 35 ⚠️ ورودی GPIO، نمی تواند به عنوان خروجی پیکربندی شود
VP 36 ⚠️ ورودی GPIO، نمی تواند به عنوان خروجی پیکربندی شود
VN 39 ⚠️ ورودی GPIO، نمی تواند به عنوان خروجی پیکربندی شود

تصویر زیر نشان می دهد که کدام پین های GPIO را می توان با خیال راحت استفاده کرد.

پین های ESP32 GPIO که برای استفاده ایمن هستند
پین های ESP32 GPIO که برای استفاده ایمن هستند

پین های Input Only

پین های GPIO34، GPIO35، GPIO36(VP) و GPIO39(VN) را نمی توان به عنوان خروجی پیکربندی کرد. آنها می توانند به عنوان ورودی دیجیتال یا آنالوگ یا برای اهداف دیگر استفاده شوند. برخلاف سایر پین‌های GPIO، آنها فاقد مقاومت‌ پول آپ و پول دان داخلی هستند.

پین های وقفه ESP32

همه GPIO ها را می توان به عنوان وقفه پیکربندی کرد.

پین های آنالوگ به دیجیتال

ESP32 دو ADC SAR با دقت 12 بیت را ادغام می کند و از اندازه گیری ها در 15 کانال (پین های فعال آنالوگ) پشتیبانی می کند.

پین های آنالوگ به دیجیتال

واحد آنالوگ به دیجیتال ESP32 یک ADC با دقت 12 بیتی است، به این معنی که می تواند سطوح آنالوگ گسسته 4096 (2^12) را تشخیص دهد. به عبارت دیگر، ولتاژ ورودی از 0 تا 3.3 ولت (ولتاژ عملیاتی) را به مقدار صحیح از 0 تا 4095 تبدیل می کند. این مسئله منجر به وضوح 0.0008 ولت (0.8 میلی ولت) در هر واحد می شود.

علاوه بر این، وضوح ADC و محدوده کانال را می توان به صورت برنامه ای تنظیم کرد.

هشدار: وقتی Wi-Fi فعال است نمی توان از پین های ADC2 استفاده کرد. اگر پروژه شما به Wi-Fi نیاز دارد، به جای آن از پین های ADC1 استفاده کنید.

پین های DAC

ESP32 شامل دو کانال DAC با دقت 8 بیتی برای تبدیل سیگنال های دیجیتال به ولتاژ آنالوگ واقعی است. می توان از آن به عنوان “پتانسیومتر دیجیتال” برای کنترل دستگاه های آنالوگ استفاده کرد.

پین های DAC ESP32

این DAC ها دارای وضوح 8 بیتی هستند، به این معنی که مقادیر از 0 تا 256 به ولتاژ آنالوگ از 0 تا 3.3 ولت تبدیل می شوند. رزولوشن 8 بیتی DAC ممکن است برای استفاده در برنامه های صوتی کافی نباشدزیرا در آن پروژه ها یک DAC خارجی با وضوح بالاتر (12-24 بیت) ترجیح داده می شود.

پین های Touch

ESP32 دارای 9 GPIO لمسی خازنی است. هنگامی که یک بار خازنی (مانند انگشت انسان) در مجاورت GPIO باشد، ESP32 تغییر در ظرفیت خازنی را تشخیص می دهد.

پین های لمسی ESP32

می توانید با چسباندن هر جسم رسانا به این پین ها مانند فویل آلومینیومی، پارچه رسانا، رنگ رسانا و … یک پد لمسی بسازید. به دلیل طراحی کم نویز و حساسیت بالای مدارمی توان حتی پدهای نسبتاً کوچکی ساخت.

علاوه بر این، از این پین های لمسی خازنی می توان برای بیدار کردن ESP32 از خواب عمیق (Deep Sleep) استفاده کرد.

پین های I2C

ESP32 دارای یک گذرگاه I2C است که به شما امکان می دهد تا 112 سنسور و تجهیزات جانبی را متصل کنید. پین های SDA و SCL به طور پیش فرض به پین های زیر اختصاص داده می شوند. با این حال، می توانید با دستور wire.begin(SDA, SCL) پروتکل I2C را روی هر پایه GPIO فعال کنید.

پین های I2C

پین های SPI در ESP32

ESP32 دارای سه SPI (SPI، HSPI و VSPI) در حالت‌های Slave و Master است. این SPI ها همچنین از ویژگی های SPI همه منظوره ذکر شده در زیر پشتیبانی می کنند:

  • 4 حالت زمان بندی انتقال فرمت SPI
  • تا 80 مگاهرتز سرعت و کلاک های تقسیم شده آن
  • حداکثر 64 بایت FIFO

پین های SPI ESP32

فقط VSPI و HSPI رابط های SPI قابل استفاده هستند و سومین گذرگاه SPI توسط تراشه حافظه فلش یکپارچه استفاده می شود. پین های VSPI معمولا در کتابخانه های استاندارد استفاده می شوند.

HSPI در مقابل VSPI

HSPI گاهی اوقات به اشتباه به عنوان SPI “سخت افزاری” و VSPI به عنوان SPI “مجازی یا نرم افزار” تعبیر می شود. اما در واقعیت، آنها یکسان هستند

همانند I2C، می‌توانید پروتکل SPI را روی هر پین GPIO با دستور bus.begin(CLK_PIN، MISO_PIN، MOSI_PIN، SS_PIN) فعال کنید.

پین های UART

ESP32 دارای سه رابط UART UART0، UART1 و UART2 است که از ارتباطات ناهمزمان (RS232 و RS485) و IrDA تا حداکثر 5 مگابیت در ثانیه پشتیبانی می کند.

  • پین های UART0 به مبدل USB به سریال متصل می شوند و برای فلش کردن و دیباگ استفاده می شوند. بنابراین، پین‌ های UART0 برای استفاده توصیه نمی‌شوند.
  • پین های UART1 برای چیپ حافظه فلش یکپارچه رزرو شده است.
  • از سوی دیگر، UART2 گزینه ای امن برای اتصال به دستگاه های UART مانند GPS، حسگر اثر انگشت، سنسور ها و … است.

پین های UART ESP32

علاوه بر این، UART مدیریت سخت افزار سیگنال های CTS و RTS و کنترل جریان نرم افزار (XON و XOFF) را نیز فراهم می کند.

پین های PWM در برد ESP32

این برد دارای 21 کانال (همه GPIO ها به جز GPIO های Input Only) از پین های PWM است که توسط یک کنترل کننده PWM کنترل می شود. خروجی PWM را می توان برای درایو موتورهای دیجیتال و LED استفاده کرد.

پین های PWM در برد ESP32

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

پین های RTC GPIO

برخی از GPIO ها به زیرسیستم کم مصرف RTC هدایت می شوند و به آنها RTC GPIO می گویند. این پین ها برای بیدار کردن ESP32 از خواب عمیق زمانی که پردازنده کمکی Ultra Low Power (ULP) در حال اجرا است استفاده می شود. GPIO های برجسته شده در زیر می توانند به عنوان منابع بیدار کردن خارجی استفاده شوند.

پین های ESP32 RTC GPIO

پین های تسمه ای (Strapping)

پنج پین تسمه وجود دارد: GPIO0، GPIO2، GPIO5، GPIO12 و GPIO15

پین های تسمه ای esp32

از این پین ها برای قرار دادن ESP32 در حالت BOOT (برای اجرای برنامه ذخیره شده در فلش مموری) یا حالت FLASH (برای آپلود برنامه در حافظه فلش) استفاده می شود. بسته به وضعیت این پین ها، ESP32 در حالت روشن وارد حالت BOOT یا حالت FLASH می شود.

در اکثر بردهای توسعه با USB/Serial داخلی، لازم نیست نگران وضعیت این پین ها باشید، زیرا برد آنها را در حالت صحیح برای فلش یا حالت بوت قرار می دهد.

با این حال، اگر دستگاه های جانبی به این پین ها متصل باشند، ممکن است هنگام تلاش برای آپلود کد جدید یا فلش کردن ESP32 با سیستم عامل جدید، با مشکلاتی مواجه شوید، زیرا این لوازم جانبی مانع از ورود ESP32 به حالت صحیح می شوند.

پین های تسمه پس از ریستارت به طور معمول عمل می کنند، اما همچنان باید با احتیاط از آنها استفاده کرد.

پین های تغذیه در برد ESP32

دو پایه پاور وجود دارد: پایه VIN و پایه 3V3. اگر منبع تغذیه 5 ولتی تنظیم شده دارید، می توان از پین VIN برای تغذیه مستقیم ESP32 و لوازم جانبی آن استفاده کرد. پایه 3V3 خروجی از تنظیم کننده ولتاژ روی برد است. می توانید تا 600 میلی آمپر از آن دریافت کنید. GND پین زمین است.

پین های تغذیه در برد ESP32

پین فعالسازی EN

پین EN پین فعالسازی برای ESP32 است که به طور پیش فرض روی HIGH است. هنگامی که HIGH باشد، تراشه فعال می شود. وقتی LOW باشد تراشه غیرفعال می شود.

پین فعالسازی EN

پین EN نیز به یک کلید فشاری متصل است که می تواند پین EN را LOW کند و برد را ریست کند.

4 (13 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

6 نظر

  1. سلام خسته نباشید
    من این برد رو خریدم
    دوست دارم یاد بگیرم بتونم خودم کد براش طراحی کنم یعنی هر پروژه ای که خواستم بدون احتیاج یه هیچ مقاله ای کو نویسی کنم
    پیشنهاد شما چیه؟
    اگر دوره کد نویسی esp32 رو ببینم کفایت میکنه؟

    1. سلام عزیز
      تا حد خیلی زیادی بعد از دوره ESP32 برنامه نویسی این برد را یاد میگیرید و خیلی از پروژه ها را میتوانید راه اندازی کنید. دقت کنید که برنامه نویسی بی انتها هست و شما با هر دوره ای در هر زمینه ای باز هم نیاز به تحقیق و تمرین دارید

  2. سلام
    من برای برد esp32 بجای برد بورد سیم جامپر گرفتم اما دیدم سایز سیم های جامپر بزرگ تر از پین ها بود میشه راهنمایی کنید چگونه بدون برد بورد به این برد سیم اتصال بدم باید سیم نوع دیگه ای بگیرم؟
    بردبورد پروژه من رو شلوغ میکنه

    1. سلام عزیز
      تا زمانی که پروژتون کامل نشده باید روی برد بورد کار کنید بعد از اون میتونید برد PCB با آلتیوم دیزاینر طراحی کنید و مدار جمع و جوری داشته باشید

  3. با سلام خدمت مهندس رحیمی بزرگوار و تیم محترم آیرنکس
    جناب مهندس میخواستم پیشنهاد بدهم در این دوره آموزشی(esp32) که قراره در اردیبهشت ماه منتشر بشه در صورت امکان پروژه جذاب تشخیص هوشمند چهره را هم قرار بدین که مطمئنا متقاضی زیاد خواهد داشت البته بنده مقاله ای که در این خصوص گذاشته بودید رو مطالعه کردم واقعا جالب بود ولی قسمت اتصالات و متوجه نشدم چون از رگولاتور-خازن-مقاومت و…استفاده شده بود
    خیلی ممنون

    1. سلام عزیز
      سعی میکنیم در دوره قرار بدیم

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *