در این بلاگ از اینترنت اشیا یوکاسافت یک مقاله از سایت circuit school در مورد تراشه esp32 و قابلیت های آن نسبت یه سایر محصولات مشابه توضیح داده شده است. لینک اصلی مقاله در انتهای بلاگ برای علاقه مندان به تراشه esp32 قرار داده شده است.
ESP32 چیست، چگونه کار می کند و با ESP32 چه کاری می توانید انجام دهید؟ESP32 چیست، چگونه کار می کند و چه زمانی باید از آن استفاده کرد؟ بیایید و درباره این قطعه که در دنیای فناوری توجهات را به خود جلب کرده است بیشتر بدانید!
ESP32 مانند آردوینو یک برد توسعه است. این بدان معناست که تمام ویژگی های مورد نیاز برای ایجاد پروژه های خود را دارد. برای درک بهتر این قطعه، باید بدانید چه کسی آن را ایجاد کرده است؟ و وظایف اصلی آن چیست؟ ESP32 چگونه کار می کند؟ و ویژگی های فنی آن چیست .
Esp32 بسیار برتر از Arduino uno و ESP8266 است، این بدان معنا نیست که برای هر پروژه ای ایده آل است، در ادامه یاد میگیریم که Esp32 چیست و چگونه کار می کند و ویژگی های خاص آن در مقایسه با سایر محصولات مشابه چیست
ESP32 چیست؟
ESP32 توسط Espressif Systems با مجموعهای از SoC (سیستم روی تراشه) و ماژولهایی که کمهزینه با مصرف انرژی کم هستند ایجاد شده است .
این ESP32 جدید جانشین ESP8266 معروف است (با وای فای داخلی آن بسیار محبوب شد). ESP32 نه تنها دارای وای فای داخلی است، بلکه دارای بلوتوث و بلوتوث کم انرژی است . به عبارت دیگر می توانیم ESP32 را به عنوان "ESP8266 در Steroids" تعریف کنیم.
تراشه ESP32 ESP32-D0WDQ6 مبتنی بر ریزپردازنده دو هسته ای Tensilica Xtensa LX6 با فرکانس کاری حداکثر 240 مگاهرتز است.
بسته کوچک ESP32 دارای سطح بالایی از ادغام است مانند:
- سوئیچ های آنتن
- Balun برای کنترل RF
- تقویت کننده توان
- تقویت کننده دریافت نویز کم
- فیلترها و ماژول های مدیریت انرژی
علاوه بر همه اینها، از طریق ویژگیهای صرفهجویی در مصرف انرژی از جمله همگامسازی ساعت و حالتهای مختلف عملکرد، به مصرف انرژی بسیار پایین دست مییابد . جریان ساکن تراشه ESP32 کمتر از 5 μA است که آن را به ابزاری ایدهآل برای پروژههای باطری یا برنامههای IoT شما تبدیل میکند .
تفاوت بین ESP32 و ESP8266
همانطور که در بالا ذکر شد ESP32 جانشین ESP8266 است، بیایید یاد بگیریم که تفاوت های بین ESP32 و ESP8266 با ویژگی ها و مشخصات آنها در زیر چیست.
- ESP32 دارای یک هسته اضافی در مقایسه با ESP8266 است
- وای فای سریعتر
- تعداد پین های GPIO (ورودی/خروجی) افزایش یافته است
- سازگاری با بلوتوث 4.2 و بلوتوث کم مصرف ( کم انرژی ).
علاوه بر این، ESP32 دارای پین های حساس به لمس است که می تواند برای "بیدار کردن" ESP32 از حالت خواب عمیق و سنسور جلوه هال داخلی استفاده شود.
اگرچه هر دو برد بسیار ارزان هستند، ESP32 کمی گرانتر از ESP8266 است. ESP32 سزاوار آن است زیرا ویژگی های بیشتری نسبت به ESP8266 دارد.
ما در جدول زیر مشخصات فنی اصلی بین ESP8266 و ESP32 را متمایز کرده ایم.
مشخصات | ESP8266 | ESP32 |
---|---|---|
ریزپردازنده | Xtensa تک هسته ای 32 بیتی L106 | Xtensa Dual-Core 32 بیتی LX6 با 600 DMIPS |
Wi-Fi (802.11 b/g/n) | HT20 | HT40 |
بلوتوث | ندارد | بلوتوث 4.2 y BLE |
فرکانس کاری (مقدار معمولی) | 80 مگاهرتز | 160 مگاهرتز |
شرم | در دسترس نیست | 448 کیلوبایت |
فلاش | در دسترس نیست | 520 کیلوبایت |
GPIO | 17 | 34 |
PWM (سخت افزار) | در دسترس نیست | در دسترس نیست |
PWM (نرم افزار) | 8 کانال | 16 کانال |
SPI | 2 | 4 |
I2C | 1 | 2 |
I2S | 2 | 2 |
UART | 2 | 2 |
ADC | وضوح 10 بیت | وضوح 12 بیت |
می توان | خیر | آره |
رابط مک اترنت | خیر | آره |
حسگر لمسی | خیر | آره |
حسگر دما | خیر | بله (فقط نسخه های قدیمی) |
سنسور اثر هال | خیر | آره |
دمای کار | -40 درجه سانتیگراد تا 125 درجه سانتیگراد | -40 درجه سانتیگراد تا 125 درجه سانتیگراد |
بلوک ها و ویژگی های عملکردی ESP32
اگرچه در جدول قبلی می توانید به برخی از مشخصات فنی اصلی ESP32 توجه کنید، اما حقیقت این است که همه چیز در جدول نیست. در واقع، بسیاری از جزئیات گم شده است. برای آشنایی با تمامی ویژگی های این SoC باشکوه ، لازم است به مدارک زیر که توسط توسعه دهنده Espressif ارائه شده است مراجعه کنید .
بلوک دیاگرام معماری ESP32
در زیر بلوک دیاگرام معماری ESP32 وجود دارد که تمام بلوک های عملکردی ESP32 SOC را نشان می دهد.
همانطور که از بلوک دیاگرام بالا می بینید، اجازه می دهد تا تمام بلوک های فردی را با جزئیات در زیر بیاموزیم.
اتصال بی سیم
تراشه SoC ESP32 دارای اتصال وای فای است که با سرعت 802.11 b/g/n در باند 2.4 گیگاهرتز سازگار است و به سرعت 150 مگابیت بر ثانیه می رسد. همچنین شامل ارتباط بلوتوث سازگار با بلوتوث نسخه 4.2 و بلوتوث کم انرژی (BLE) است.
بلوک رادیویی نزدیک به ماژول های ارتباطی بی سیم گره خورده است . در واقع این همان چیزی است که اطلاعات را ارسال و دریافت می کند.
یعنی داده های دیجیتالی ماژول های وای فای و بلوتوث را می گیرد و آنها را به سیگنال های الکترومغناطیسی تبدیل می کند که در هوا برای برقراری ارتباط با تلفن همراه یا روتر شما حرکت می کنند .
همچنین عملیات معکوس را انجام می دهد: امواج الکترومغناطیسی تولید شده توسط دستگاه های دیگر را به داده های دیجیتالی تبدیل می کند که ماژول های WiFi و بلوتوث قادر به تفسیر هستند.
هسته
همانطور که قبلاً اشاره کردیم که ESP32 دارای ریزپردازنده های دو هسته ای کم مصرف Tensilica Xtensa 32 بیتی LX6 است .
همانطور که از تصویر بلوک هسته بالا مشاهده می کنید، دارای یک پردازنده کمکی بسیار کم مصرف است که برای انجام تبدیل های آنالوگ به دیجیتال و سایر عملیات ها در حالی که دستگاه در حالت خواب عمیق و کم مصرف کار می کند استفاده می شود. به این ترتیب مصرف بسیار کم توسط SoC حاصل می شود.
توجه به این نکته مهم است که این پردازنده ها مزایای معمولی بزرگی را برای یک پردازنده سیگنال دیجیتال ارائه می دهند:
- فرکانس کاری: 240 مگاهرتز (دستورالعمل ها را 15 برابر سریعتر از برد آردوینو UNO اجرا می کند)
- این اجازه می دهد تا عملیات با اعداد واقعی (اعداد با کاما) را بسیار کارآمد انجام دهید.
- به شما امکان می دهد اعداد بزرگ را فوراً ضرب کنید.
اگرچه این ویژگی ها هنگام برنامه نویسی شفاف هستند، اما تأثیر زیادی بر کارایی و اندازه کدهایی که روی میکروکنترلر نوشته می شود، دارند.
حافظه در Esp32
در اکثر میکروکنترلرهای مبتنی بر آردوینو، سه نوع حافظه وجود دارد:
- حافظه برنامه: برای ذخیره طرح.
- حافظه SRAM : برای ذخیره متغیرهایی که در کد استفاده می شود.
- حافظه EEPROM: برای ذخیره متغیرهایی که حتی با خاموش شدن دستگاه ارزش خود را از دست نمی دهند.
در ESP32 این اتفاق نمی افتد، در واقع انواع بیشتری از حافظه ها وجود دارند که معمولاً به دو دسته داخلی و خارجی طبقه بندی می شوند.
حافظه های داخلی آنهایی هستند که قبلاً در SoC گنجانده شده اند و حافظه های خارجی آنهایی هستند که می توانند برای افزایش ظرفیت سیستم اضافه شوند.
بسیاری از بردهای توسعه مبتنی بر ESP32 حافظه خارجی را برای عملکرد بهتر سیستم اضافه می کنند.
حافظه های داخلی ESP32 و عملکرد آنها:
- حافظه ROM (448 KiB): این حافظه فقط نوشتنی است، یعنی نمی توانید آن را دوباره برنامه ریزی کنید. اینجا جایی است که کدهایی که پشته بلوتوث را مدیریت میکنند، کنترل لایه فیزیکی Wi-Fi، برخی از روالهای همه منظوره، و بوت لودر برای شروع کد از حافظه خارجی ذخیره میشوند.
- حافظه داخلی SRAM (520 کیلوبایت): این حافظه توسط پردازنده برای ذخیره داده ها و دستورالعمل ها استفاده می شود. مزیت آن این است که دسترسی پردازنده بسیار آسان تر از SRAM خارجی است.
- RTC SRAM (16 کیلو بایت): این حافظه زمانی که دستگاه در حالت خواب عمیق کار می کند توسط پردازنده کمکی استفاده می شود.
- Efuse (1 کیلوبیت) : 256 بیت از این حافظه توسط خود سیستم استفاده می شود و 768 بیت باقی مانده برای برنامه های کاربردی دیگر ذخیره می شود.
- Flash Embedded ( Flash Embedded ) : این حافظه جایی است که کد برنامه ما ذخیره می شود. مقدار حافظه بسته به تراشه مورد استفاده متفاوت است:
- 0 مگابایت (تراشه های ESP32-D0WDQ6، ESP32-D0WD، ESP32-S0WD)
- 2 مگابایت (تراشه ESP32-D2WD)
- 4 مگابایت (تراشه ESP32-PICO-D4)
برای ESP32 هایی که حافظه تعبیه شده ندارند یا به سادگی زمانی که حافظه برای برنامه شما کافی نیست، می توان حافظه خارجی بیشتری اضافه کرد:
- تا 16 مگابایت فلش مموری خارجی را می توان اضافه کرد. به این ترتیب می توانید برنامه های پیچیده تری توسعه دهید.
- همچنین تا 8 مگابایت حافظه SRAM خارجی را پشتیبانی می کند.
بنابراین، برای شما دشوار است که در هنگام اجرای یک برنامه با استفاده از این پلتفرم، حافظه خود را محدود کنید.
شتاب دهنده های سخت افزاری رمزگذاری
یکی از عوامل مهم در هر سیستمی امنیت است. به همین دلیل است که ESP32 دارای شتاب دهنده های الگوریتمی با هدف رمزگذاری است:
- AES (FIPS PUB 197)
- SHA (FIPS PUB 180-4)
- RSA
- و غیره
این شتاب دهنده ها امکان افزایش سرعت عملکرد و کاهش پیچیدگی نرم افزار را فراهم می کند و امکان رمزگذاری و رمزگشایی پویا را فراهم می کند . به این ترتیب، سیستم از حملات هکری احتمالی که به دنبال دریافت کد ذخیره شده هستند، محافظت می شود.
ویژگی های جانبی
ESP32 مجموعه ای عالی از تجهیزات جانبی دارد که می توانید از بلوک دیاگرام بالا ببینید.
نمودار و پین های پین اوت ESP32:
همانطور که در تصویر بالا از نمودار پین اوت ماژول ESP32 WROOM مشاهده می کنید، تمام انواع پین ها در رنگ های مختلف ذکر شده اند که در ادامه به تفصیل توضیح می دهیم.
پین های دیجیتال
ESP32 در مجموع دارای 34 پین دیجیتال است. این پین ها شبیه پین های دیجیتال آردوینو هستند که به شما امکان می دهد نمایشگر LED، صفحه نمایش OLED، سنسورها، دکمه ها، زنگ ها و غیره را به پروژه های خود اضافه کنید.
بیشتر این پین ها از حالت کشش داخلی، پایین آمدن و امپدانس بالا نیز پشتیبانی می کنند. آنها را برای اتصال دکمه ها و صفحه کلیدهای ماتریسی و همچنین برای استفاده از تکنیک های کنترل LED مانند Charlieplexing بسیار ایده آل می کند.
ماژول ESP32 WROOM دارای 25 پین GPIO است که فقط پایه های ورودی، پین های با کشش ورودی و پین های بدون کشش داخلی وجود دارد.
طبق بخش «شرایط عملیاتی توصیه شده» در برگه داده ESP32، حداکثر جریانی که به ازای هر یک GPIO گرفته می شود، 40 میلی آمپر است.
فقط پین های ورودی:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
پینهایی با pull up INPUT_PULLUP
- GPIO14
- GPIO16
- GPIO17
- GPIO18
- GPIO19
- GPIO21
- GPIO22
- GPIO23
پین بدون کشش داخلی
- GPIO13
- GPIO25
- GPIO26
- GPIO27
- GPIO32
- GPIO33
ADC (مبدل آنالوگ به دیجیتال)
برخی از پین های ذکر شده در نمودار pinout نیز می توانند برای تعامل با سنسورهای آنالوگ استفاده شوند، مانند پین های آنالوگ یک برد آردوینو.
برای این، ESP32 دارای رزولوشن 12 بیتی (0-4096) است که به این معنی است که وقتی ولتاژ مشاهده شده 0 است، مقدار آن 0 است و زمانی که حداکثر ولتاژی مانند 3.3 ولت مشاهده شود، مقدار به 4096 می رسد)، مبدل آنالوگ به دیجیتال 18 کانال، به این معنی که می توانید از حداکثر 18 سنسور آنالوگ خوانش کنید.
این به شما امکان می دهد تا برنامه های کاربردی متصل بسیار فشرده را توسعه دهید، حتی زمانی که از چندین سنسور آنالوگ استفاده می کنید.
پین های ورودی آنالوگ:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
DAC (مبدل دیجیتال به آنالوگ)
سیگنال های PWM در اکثر بردهای آردوینو برای تولید ولتاژ آنالوگ استفاده می شود. ESP32 دارای دو مبدل دیجیتال به آنالوگ 8 بیتی است.
این اجازه می دهد تا دو سیگنال ولتاژ آنالوگ خالص تولید شود. از این مبدل ها می توان برای موارد زیر استفاده کرد:
- مدار آنالوگ را کنترل کنید
- شدت یک LED را دستکاری کنید
- حتی می توانید یک آمپ و بلندگوی کوچک را برای پخش آهنگ به پروژه خود اضافه کنید.
پین های DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
GPIO های لمسی خازنی
اگر میخواهید برنامههایی را بدون دکمههای مکانیکی توسعه دهید ، میتوانید از پینهای حساس به لمس در ESP32 برای دستیابی به آن استفاده کنید.
این پین ها قادر به تشخیص تغییرات کوچکی هستند که هنگام نزدیک شدن انگشت به پین ایجاد می شود. به این ترتیب می توان انواع کنترل ها مانند دکمه ها یا نوارهای اسلاید را بدون نیاز به قطعات مکانیکی ایجاد کرد.
پین های لمسی خازنی:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
RTC
همانطور که قبلاً در مورد پشتیبانی RTC GPIO در بخش اصلی یاد گرفتیم. GPIO هایی که به زیرسیستم مدیریت کم مصرف RTC هدایت می شوند ، می توانند زمانی که ESP32 در خواب عمیق است استفاده شوند. این RTC GPIO ها را می توان برای بیدار کردن ESP32 از خواب عمیق زمانی که پردازنده کمکی بسیار کم (ULP) در حال اجرا است استفاده کرد. GPIO های زیر را می توان به عنوان منبع بیدار کردن خارجی استفاده کرد.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
درایور SD / SDIO / MMC
این ابزار جانبی به ESP32 اجازه می دهد تا به طور مستقیم با کارت های SD و MMC تعامل داشته باشد. در واقع، با ترکیب این کنترلر با مبدل دیجیتال آنالوگ، می توان پخش کننده صوتی کوچک خود را بهبود بخشید.
UART
بسیاری از میکروکنترلرها دارای ماژول های UART هستند که در آردوینو به پورت های سریال معروف هستند. این اجازه می دهد تا ارتباطات ناهمزمان بین دو دستگاه تنها با استفاده از دو پین برقرار شود.
ESP32 دارای سه پورت UART است:
- UART0
- UART1
- UART2
همه اینها با پروتکل های RS-232، RS-485 و IrDA سازگار هستند.
I2C
ESP32 دارای دو رابط I2C یا TWI است که از حالت های عملیاتی master و slave پشتیبانی می کند. ویژگی های آن عبارتند از:
- حالت استاندارد (100 کیلوبیت بر ثانیه)
- حالت سریع (400 کیلوبیت بر ثانیه)
- آدرس دهی 7 و 10 بیتی
پین های I2C
- GPIO 21 (SDA)
- GPIO 22 (SCL)
SPI
ESP32 همچنین دارای ارتباط SPI است. دارای سه اتوبوس کاملاً کاربردی است:
- چهار حالت انتقال: این بدان معناست که با تمام یا تقریباً تمام دستگاه های SPI و QSPI موجود در بازار سازگار است.
- همه پورت های SPI قادر به سرعت بالا (از لحاظ نظری تا 80 مگاهرتز) هستند.
- بافر 64 بایتی برای انتقال و دریافت.
به طور پیش فرض، نگاشت پین برای SPI به صورت زیر است:
SPI | MOSI | میسو | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
کنترل از راه دور مادون قرمز
ESP32 همچنین امکان انتقال و دریافت سیگنال ها را با استفاده از پروتکل های مادون قرمز مختلف (همان مواردی که توسط کنترل از راه دور تلویزیون استفاده می شود) را می دهد.
بنابراین، شما همچنین می توانید از ESP32 برای ایجاد کنترل از راه دور خود استفاده کنید که به شما امکان می دهد با تلویزیون یا استریوی خود تعامل داشته باشید.
PWM
همانند ESP8266، ESP32 نیز از استفاده از خروجی های آنالوگ با استفاده از PWM پشتیبانی می کند. تفاوت بزرگ این است که در ESP32 امکان استفاده از 16 پین به عنوان خروجی PWM وجود دارد که ESP8266 فقط 8 را پشتیبانی می کند و برد Arduino UNO که فقط 6 را پشتیبانی می کند.
پین های PWM:
تمام پین های PWM با نماد زیر در نمودار پینوت ESP32 در بالا نشان داده شده اند.
چگونه یک برد توسعه ESP32 را انتخاب کنیم؟
قبل از انتخاب برد توسعه ESP32، باید جنبه های خاصی را در نظر بگیرید:
- پین اعداد و پیکربندی: دسترسی به پینآت برد برای استفاده صحیح از آن مهم است.
- رابط سریال USB و تنظیم کننده ولتاژ : این دو ویژگی عملاً در همه بردهای توسعه یافت می شود. اینها مواردی هستند که به برد اجازه می دهند مستقیماً به رایانه متصل شود تا انرژی و برنامه ریزی شود.
- کانکتور باتری : اگر به فکر ورود به سیستم های کم مصرف با باتری هستید، می توانید بردهایی را انتخاب کنید که قبلاً دارای کانکتور باتری هستند.
- عملکردهای اضافی : بسیاری از بردهای توسعه برای ESP32 دارای ویژگی های اضافی مانند دوربین ها، نمایشگرهای OLED ، ماژول های LoRa و غیره هستند.
سایر تابلوهای توسعه ESP32 و پروژه های تخصصی
تابلوهای توسعه دیگری با ویژگی های خاص وجود دارند که می توانند در پروژه های خاص تر مفید باشند:
- ESP32-CAM : این یک برد توسعه مبتنی بر ESP32 است که دارای دوربین، اسلات کارت microSD و چندین GPIO است.
- TTGO T-Call ESP32 با SIM800L GSM/GPRS : برد توسعه ای که یک ماژول ESP32 را با یک SIM800L GSM/GPRS ترکیب می کند.
- M5Stack : یک برد توسعه بسیار مقرون به صرفه است که دارای صفحه نمایش LCD رنگی 2 اینچی، محفظه زیبا، کانکتور USB نوع C برای برنامه نویسی و تغذیه، اتصال I2C و گروهی از پین های GIPO برای اتصال آن به انواع دستگاه ها می باشد. .
- ESP-EYE : یک برد توسعه برای تشخیص تصویر و پردازش صدا است که می تواند در برنامه های مختلف AioT استفاده شود. دارای تراشه ESP32، دوربین 2 مگاپیکسلی و میکروفون است. ESP-EYE فضای ذخیره سازی زیادی را با 8 مگابایت SRAM و 4 مگابایت حافظه فلش ارائه می دهد. همچنین از انتقال تصویر از طریق Wi-Fi و اشکال زدایی از طریق پورت Micro-USB پشتیبانی می کند.
نتیجه گیری در مورد تراشه ESP32
این مقاله ای است که در مورد ESP32 یاد گرفتیم ESP32 چیست ، ESP32 چگونه کار می کند ، نمودار بلوک عملکردی ESP32 با توضیح ، پین های ESP 32 و عملکردهای آنها ، ESP32 Security و غیره،
این نسل جدیدی از بردها و میکروکنترلرها برای دنیای اینترنت اشیا، اتوماسیون خانگی و اشیاء متصل است.
و اگرچه همانطور که در این مقاله مشاهده کردید قدرت آن باعث می شود که یک میکروکنترلر قوی و مقرون به صرفه باشد، ESP8266 همچنان برای چند سال دیگر با همه ما ادامه خواهد.
برای اطلاعات تکمیلی میتوانید به این لینک مراجعه کنید.