شروع به کار با بردهای توسعه مبتنی بر میکروکنترلر ESP32

فهرست مطالب

مقدمه

امروزه علاقه به هوشمندسازی وسایل، کنترل قطعات به صورت اتوماتیک و به طور کلی کاربردهای مرتبط با اینترنت اشیا (Internet of Things یا به اختصار IOT)، بسیار افزایش یافته است. یک سری از کلیدی‌ترین المان‌های الکتریکی برای انجام پروژه‌های اینترنت اشیا ماژول‌های مبتنی بر میکروکنترلر ESP32 هستند. در این آموزش هر آنچه که برای شروع به کار با بردهای ESP32 لازم است بدانید، به شما آموزش خواهیم داد.

آنچه در این آموزش یاد می گیرید

  • آشنایی با انواع بردهای ESP32
  • آشنایی با ویژگی‌ها و مشخصه‌های کلی بردهای ESP32
  • آشنایی با انواع پایه‌ها، رابط‌ها و سنسورهای موجود
  • برنامه‌نویسی یک برد مبتنی بر ESP32 با کمک نرم‌افزار Arduino IDE

چرا باید از ESP32 استفاده کنیم؟

این سوالی‌ست که پاسخ به آن ارزش‌های این ماژول و دلیل محبوبیت آن را بیش از پیش مشخص می‌کند. یک مقایسه ساده بین توانایی‌های این میکروکنترلر و بردی مانند آردوینو، به خوبی پاسخ این پرسش را خواهد داد. سرعت پردازش حدود 10 برابر سریع‌تر، 32 بیتی بودن این میکروکنترلر در مقابل آردینو Uno که تنها 8 بیتی‌ست، پایه‌های همه منظوره ورودی خروجی (پایه‌های GPIO)، پایه‌هایی با توانایی استفاده به عنوان حسگر لمسی، سنسور دمای داخلی، توانایی اضافه کردن وای‌فای و بلوتوث به پروژه‌هایتان و … از برتری‌های این میکروکنترلر محبوب است و همه این‌ها در حالی‌ست که قیمتی نزدیک به قیمت برد آردوینو Uno دارد! پس در ادامه بیشتر به شناخت ویژگی‌های این میکروکنترلر می‌پردازیم.

انواع مختلف بردهای ESP32

برای استفاده راحت از میکروکنترلر ESP32، بردهای گوناگونی مبتنی بر این میکروکنترلر طراحی و ساخته شده‌اند. این بردها، شامل بردهایی برای منظور خاص و همچنین بردهایی برای استفاده همه منظوره است. برای نمونه بردهای طراحی شده برای منظور خاص می‌توان به بردهای زیر اشاره کرد:

  • برد توسعه ESP32CAM
  • ماژول صوتی ESP32-A1S
  • برد توسعه TTGO ESP32 دارای نمایشگر OLED

همچنین برای بردهایی برای استفاده همه منظوره، می‌توان بردهای زیر را مثال زد:

  • ماژول وای‌فای و بلوتوث دو هسته‌ای ESP32S-WROOM
  • ماژول دوهسته‌ای ESP32 دارای چیپ درایور CP2102
  • ماژول بسیار محبوب NodeMCU – ESP32 Edition

در عکس زیر می‌توانید ماژول‌های نام برده شده در بالا و همچنین یک سری دیگر از ماژول‌های مبتنی بر میکروکنترلر ESP32 را مشاهده کنید.

ویژگی‌ها و مشخصات کلی ESP32

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

ویژگی‌های اصلی

  • دارای دو هسته و امکان کنترل جداگانه هر کدام از هسته‌ها
  • سرعت پردازش حداکثر تا 240 مگاهرتز
  • وای‌فای داخلی با امکان تنظیم در سه حالت
  • STA (Station Mode): وصل شدن به وای‌فای محیط
  • AP (Access Point): به عنوان روتر عمل می‌کند و بقیه وسایل می‌توانند به آن متصل شوند
  • STA_AP: عمل به عنوان روتر و در عین حال به یک ایستگاه دیگر وصل می‌شود
  • بلوتوث داخلی با دو ورژن
  • بلوتوث کلاسیک (Classic BT)
  • بلوتوث BLE (Bluetooth Low Energy)

انواع پایه‌ها و رابط‌های موجود

  • 34 پایه ورودی خروجی همه منظوره (General Purpose Input/Output یا همان GPIO) قابل تنظیم
  • 18 پایه مبدل آنالوگ به دیجیتال (ADC) 12 بیتی
  • 2 پایه مبدل دیجیتال به آنالوگ (DAC) 8 بیتی
  • 4 رابط SPI
  • 2 رابط I2C
  • 2 رابط I2S
  • 3 رابط UART
  • 16 پایه PWM

برای اطلاعات بیشتر در مورد پایه‌های برد ESP32 می‌توانید به لینک زیر مراجعه کنید.

آموزش جامع انواع پایه‌های میکروکنترلر ESP32: از کدام پایه‌های ESP32 استفاده کنیم؟

سنسورهای موجود در برد

  • 10 پایه قابل استفاده به عنوان حسگر لمسی
  • سنسور دمای داخلی
  • سنسور اثر هال داخلی

برای دریافت دیتاشیت میکروکنترلر ESP32 به لینک زیر مراجعه کنید.

 

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

ولتاژ کاری این میکروکنترلر 3.3 ولت است. در نتیجه برای تغذیه آن، اگر از خود میکروکنترلر استفاده می‌کنید لازم است که ولتاژ 3.3 ولت را به عنوان تغذیه ماژول تامین کنید. اما بردهای توسعه مبتنی بر میکروکنترلر ESP32 دارای یک رگولاتور ولتاژ 3.3 ولت هستند. در نتیجه در صورتی که از بردهای توسعه مبتنی بر میکروکنترلر ESP32 (مشابه بردهای معرفی شده در قبل) استفاده می‌کنید، می‌توانید تغذیه برد و همچنین برنامه‌ریزی کردن برد را از طریق پورت میکرو USB که بر روی برد قرار دارد انجام دهید. این بردها، دارای یک رگولاتور ولتاژ 3.3 ولت هستند که عمل تبدیل ولتاژ 5 ولت تامین شده از طریق USB به ولتاژ 3.3 ولت مورد نیاز میکروکنترلر را انجام می‌دهد.

نصب درایور مناسب برای بردهای ESP32

در صورتی که از میکروکنترلر خام استفاده می‌کنید، نیاز به یک مبدل USB to TTL دارید. در آن صورت بر اساس مبدل مورد استفاده خود اقدام به نصب درایور مناسب کنید. اما در صورتی که از بردهای توسعه مبتنی بر ESP32 بهره می‌برید، این بردها خود دارای مبدل نیز هستند. در این حالت بر اساس توضیحات مربوط به برد مورد استفاده، لازم است که درایور مناسب را نصب نمایید. مبدل استفاده شده در این بردها، عمدتا CP2102 و یا CH340 می‌باشد. در صورتی که از نوع مبدل استفاده شده در برد خود اطلاع ندارید، می‌توانید به ترتیب زیر عمل کنید:

  • برد را به سیستم خود متصل کنید.
  • در قسمت جست‌وجوی سیستم خود Device Manager را جستجو کنید.
  • پس از باز کردن Device Manager، در قسمت Ports می‌توانید نام مبدل استفاده شده در برد خود را مشاهده کنید. در صورتی که در کنار نام مبدل، علامت تعجب در داخل مثلث زرد رنگ مشاهده می‌کنید به معنای آن است که درایور بر روی سیستم شما نصب نیست و نیاز است به نصب درایور اقدام کنید. 

برای اطلاع بیشتر از نحوه نصب درایورها، می‌توانید به لینک‌های زیر مراجعه کنید.

آموزش نصب درایور CH340 در ویندوز

آموزش نصب انواع درایورها بر روی ویندوز به صورت دستی

محیط‌های برنامه‌نویسی

یکی از دلایل محبوبیت میکروکنترلر ESP32 قابلیت برنامه‌نویسی ساده آن است. این برنامه‌نویسی می‌تواند در بسیاری از محیط‌ها گوناگون انجام شود. تعدادی از آن‌ها عبارت‌اند از:

  • Arduino IDE
  • محیط برنامه‌نویسی LUA
  • میکروپایتون
  • Espressif IDF (IoT Development Framework)
  • جاوا اسکریپت

اولین پروژه با ESP32: کنترل یک LED

در این بخش، با استفاده از برنامه Ardunio IDE یک برد مبتنی بر ESP32 را برنامه‌نویسی می‌کنیم. برای این کار لازم است که ابتدا برد ESP32 را بر روی نرم‌افزار Arduino IDE نصب کنید. برای این کار می‌توانید به آموزش زیر مراجعه کنید.

آموزش نصب نرم افزار آردوینو IDE روی ویندوز و مک

آموزش نصب برد ESP32 به روی Arduino IDE (ویندوز، لینوکس، مک OS)

قطعات مورد نیاز

برد NodeMCU – ESP32 Edition × 1

نرم افزار های مورد نیاز

Arduino IDE

بردی که در اینجا استفاده کرده‌ایم، برد NodeMCU – ESP32 Edition است. این برد دارای یک LED است که به پایه GPIO2 میکروکنترلر متصل است. می‌خواهیم این LED را با برنامه‌نویسی برد کنترل کرده و آن را به حالت چشمک زدن در بیاوریم. در صورتی که از بردی غیر از NodeMCU – ESP32 Edition استفاده می‌کنید، می‌توانید به راحتی خودتان یک LED به پایه D2 متصل کنید. برای این کار یک پایه LED را به پایه D2 و پایه دیگر را به زمین متصل کنید. سپس می‌توانید همین برنامه را اجرا کنید.

کد

ابتدا دقت کنید که در نرم‌افزار Ardunio IDE، نوع برد و پورت را به درستی انتخاب کنید.

سپس کد زیر را بر روی برد ESP32 خود آپلود کنید.

/*
  Made on May 17, 2021
  By MehranMaleki @ Electropeak
  https://electropeak.com/learn/
*/
#define esp32_onboard_led 2


void setup() {
  pinMode(esp32_onboard_led, OUTPUT);
}

void loop() {
  digitalWrite(esp32_onboard_led, HIGH);   //turn the LED on (HIGH is the voltage level)
  delay(500);                              //wait for half a second
  digitalWrite(esp32_onboard_led, LOW);    //turn the LED off by making the voltage LOW
  delay(500);                              //wait for half a second
}

پس از آپلود موفق‌آمیز کد به روی برد، تصویری مشابه تصویر زیر در نرم‌افزار Arduino IDE مشاهده خواهید نمود:

در ادامه LED موجود بر روی برد شروع به چشمک زدن خواهد کرد.

یک گام جلوتر

  • در ادامه سعی کنید به یادگیری پایه‌های برد ESP32 با جزئیات بیشتر بپردازید و کاربردهای آن‌ها را یاد بگیرید.
  • سنسور دمای داخلی ESP32 را راه‌اندازی کنید و دمای هسته آن را نمایش دهید.

آموزش های مشابه

Comments (14)

  • امیرمحمد Reply

    بسیار مفید و خلاصه

    سپتامبر 28, 2021 at 4:37 ب.ظ
    • مهران ملکی Reply

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

      سپتامبر 29, 2021 at 1:58 ب.ظ
  • سعید Reply

    سلام. من این کد رو آپلود کردم ولی این ارور رو داد
    Connecting…..
    Chip is ESP32-D0WD (revision 1)
    Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
    Crystal is 40MHz
    MAC: 8c:ce:4e:9a:93:14
    Uploading stub…
    Running stub…
    Stub running…
    Configuring flash size…
    Warning: Could not auto-detect Flash size (FlashID=0xffffff, SizeID=0xff), defaulting to 4MB
    Compressed 8192 bytes to 47…

    A fatal error occurred: Timed out waiting for packet content
    A fatal error occurred: Timed out waiting for packet content

    مارس 7, 2022 at 10:52 ب.ظ
    • مهران ملکی Reply

      سلام.
      اروری که گرفتید مربوط به کد نمیشه، به نظر میرسه که از نظر سخت‌افزاری مشکلی وجود داره. این خطایی که باهاش مواجه شدید به این معناست که کد بدون مشکل کامپایل شده اما تو ارسال اطلاعات به برد ESP32 مشکل وجود داره. برای رفع این مشکل:
      * از یک کابل کوتاه‌تر و با کیفیت‌تر استفاده کنید.
      * تو قسمت Tools -> Upload Speed پایین‌ترین سرعت ممکن رو انتخاب کنید.
      * موقعی که کد تو نرم‌افزار کامپایل و آماده آپلود میشه، شما متن … Connecting رو مشاهده میکنید، اون موقع دکمه Boot رو فشار بدید و نگه دارید. موقعی که شروع به آپلود
      کرد رها کنید.
      اگر این روش‌ها جواب نداد احتمالش هست که بردتون سالم نباشه.

      مارس 8, 2022 at 9:21 ق.ظ
  • متین Reply

    سلام پایه D2 کدومه ؟؟؟
    در معرفی پایه ها و نام گذاری ها که D2 نداشتیم !!

    اکتبر 25, 2022 at 5:00 ب.ظ
  • متین Reply

    روش تست کامل برد چه اردوینو باشه چه این برد را بیزحمت بفرمایید که بطور جامع چجوری باید تست کنیم که اگه ایراد داشت بشه در مهلت قانونی تعیین شده از طرف فروشگاه پس بفرستم وقتی من برای اولین بار برد میخرم اولا تا بیام یاد بگیرم زمان میگذره بعد تا بیام ماژول هت را هم تهیه کنم کلی بعد امتهان کنم یه ماه رد میشه که !!

    پس مرحله به مرحله نحوه تست بردها را آموزش بدید از بابت چک کردن سلامت و درستی کارکردشون

    الان باری این برد چجوری میشه؟

    اکتبر 25, 2022 at 5:10 ب.ظ
    • مهران ملکی Reply

      سلام.
      ساده‌ترین روش امتحان هر برد به این صورته:
      اتصال برد به کامپیوتر و شناخته شدن اون توسط سیستم (در صورت شناخته نشدن حتما چک کنید که درایور اون برد بر روی سیستمتون نصبه)
      بعد از شناخته شدن توسط سیستم، میتونید برنامه‌ای به اسم Blink رو روی اون بریزید. این برنامه رو میتونید در نرم‌افزار Arduino IDE قسمت Files -> Examples -> Basics -> Blink پیدا کنید. در هر بردی معمولا یک LED وجود داره که در صورت ریختن این کد به روی برد، شروع به چشمک زدن میکنه.

      اکتبر 28, 2022 at 4:02 ب.ظ
  • فاطمه شاهنظری Reply

    سلام
    درصورتی که ماژولی که میخواهیم به esp32 ( توسعه یافته با طرح برد NODEMCU ) وصل کنیم، به تغذیه ی 5v نیاز داشته باشد، از کدام پایه باید استفاده کرد؟ چون esp32 مثل اردوینوuno پایه ی 5v نداره.

    نوامبر 15, 2022 at 7:13 ق.ظ
    • علی عبدالملکی Reply

      با سلام
      از پین VIN میتونید استفاده کنید. 5 ولت ولتاژ خروجی دارد

      نوامبر 16, 2022 at 3:56 ب.ظ
  • احمد رضا خدام Reply

    سلام درود عرض ادب و ارادت، مهندس من یک ماژول esp32 بهمراه برد کمکی خریداری کردم میخواستم بدون از برد آردوینوuno برای پروگرام کردنش میشه استفاده کرد ، من میکروی آردوینو خارج کردم و بردها آردینو مینی پروگرام میکنم میشه با esp هم اینکارو کرد. سپاس از پاسخ شما

    دسامبر 6, 2022 at 12:03 ق.ظ
    • علی عبدالملکی Reply

      سلام
      در صورتی که برد شما باید تبدیل به یک ماژول usb-ttl بشود برای این کار پین ریست برد رو به gnd وصل کنید، که در این صورت میتونید با وصل کردن پین های rx , tx برد به esp32 پروگرام رو انجام بدید.

      دسامبر 13, 2022 at 9:24 ق.ظ
  • یعقوب نظامی Reply

    با سلام و خسته نباشید ببخشید موقع آپلود برنامه با خطا مواجه میشم و متن خطا
    A fatal error occurred: Serial data stream stopped: Possible serial noise or corruption.
    Failed uploading: uploading error:

    مارس 17, 2024 at 9:53 ق.ظ
    • محمد دمیرچی Reply

      با سلام
      همان طور که در ارور آماده است خطا در نوز دار بودن پروتکل اعلام شده است.
      در صورتی که پایه های RX و TX به جایی وصل می باشند آنها را جدا کنید. همچنین امکان دارد از ضعیف بودن تغذیه بوجود بیاید.
      این موارد را باید بررسی کنید تا در صورتی که مربوط به این شرایط باشد آنها را برطرف کنید.

      مارس 24, 2024 at 10:53 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.