مقدمه
امروزه علاقه به هوشمندسازی وسایل، کنترل قطعات به صورت اتوماتیک و به طور کلی کاربردهای مرتبط با اینترنت اشیا (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
ولتاژ کاری این میکروکنترلر 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 است. این برد دارای یک 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)
بسیار مفید و خلاصه
سلام دوست عزیز
خوشحالیم که آموزش برایتان مفید بوده.
سلام. من این کد رو آپلود کردم ولی این ارور رو داد
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
سلام.
اروری که گرفتید مربوط به کد نمیشه، به نظر میرسه که از نظر سختافزاری مشکلی وجود داره. این خطایی که باهاش مواجه شدید به این معناست که کد بدون مشکل کامپایل شده اما تو ارسال اطلاعات به برد ESP32 مشکل وجود داره. برای رفع این مشکل:
* از یک کابل کوتاهتر و با کیفیتتر استفاده کنید.
* تو قسمت Tools -> Upload Speed پایینترین سرعت ممکن رو انتخاب کنید.
* موقعی که کد تو نرمافزار کامپایل و آماده آپلود میشه، شما متن … Connecting رو مشاهده میکنید، اون موقع دکمه Boot رو فشار بدید و نگه دارید. موقعی که شروع به آپلود
کرد رها کنید.
اگر این روشها جواب نداد احتمالش هست که بردتون سالم نباشه.
سلام پایه D2 کدومه ؟؟؟
در معرفی پایه ها و نام گذاری ها که D2 نداشتیم !!
سلام.
پشت میکروکنترلر رو که مشاهده کنید اسم پایهها نوشته شده. برای آشنایی بیشتر با پایههای میکروکنترلر ESP32 میتونید آموزش زیر رو مطالعه کنید.
https://thecaferobot.com/learn/full-guide-to-esp32-pinout-reference-what-gpio-pins-should-we-use/
روش تست کامل برد چه اردوینو باشه چه این برد را بیزحمت بفرمایید که بطور جامع چجوری باید تست کنیم که اگه ایراد داشت بشه در مهلت قانونی تعیین شده از طرف فروشگاه پس بفرستم وقتی من برای اولین بار برد میخرم اولا تا بیام یاد بگیرم زمان میگذره بعد تا بیام ماژول هت را هم تهیه کنم کلی بعد امتهان کنم یه ماه رد میشه که !!
پس مرحله به مرحله نحوه تست بردها را آموزش بدید از بابت چک کردن سلامت و درستی کارکردشون
الان باری این برد چجوری میشه؟
سلام.
سادهترین روش امتحان هر برد به این صورته:
اتصال برد به کامپیوتر و شناخته شدن اون توسط سیستم (در صورت شناخته نشدن حتما چک کنید که درایور اون برد بر روی سیستمتون نصبه)
بعد از شناخته شدن توسط سیستم، میتونید برنامهای به اسم Blink رو روی اون بریزید. این برنامه رو میتونید در نرمافزار Arduino IDE قسمت Files -> Examples -> Basics -> Blink پیدا کنید. در هر بردی معمولا یک LED وجود داره که در صورت ریختن این کد به روی برد، شروع به چشمک زدن میکنه.
سلام
درصورتی که ماژولی که میخواهیم به esp32 ( توسعه یافته با طرح برد NODEMCU ) وصل کنیم، به تغذیه ی 5v نیاز داشته باشد، از کدام پایه باید استفاده کرد؟ چون esp32 مثل اردوینوuno پایه ی 5v نداره.
با سلام
از پین VIN میتونید استفاده کنید. 5 ولت ولتاژ خروجی دارد
سلام درود عرض ادب و ارادت، مهندس من یک ماژول esp32 بهمراه برد کمکی خریداری کردم میخواستم بدون از برد آردوینوuno برای پروگرام کردنش میشه استفاده کرد ، من میکروی آردوینو خارج کردم و بردها آردینو مینی پروگرام میکنم میشه با esp هم اینکارو کرد. سپاس از پاسخ شما
سلام
در صورتی که برد شما باید تبدیل به یک ماژول usb-ttl بشود برای این کار پین ریست برد رو به gnd وصل کنید، که در این صورت میتونید با وصل کردن پین های rx , tx برد به esp32 پروگرام رو انجام بدید.
با سلام و خسته نباشید ببخشید موقع آپلود برنامه با خطا مواجه میشم و متن خطا
A fatal error occurred: Serial data stream stopped: Possible serial noise or corruption.
Failed uploading: uploading error:
با سلام
همان طور که در ارور آماده است خطا در نوز دار بودن پروتکل اعلام شده است.
در صورتی که پایه های RX و TX به جایی وصل می باشند آنها را جدا کنید. همچنین امکان دارد از ضعیف بودن تغذیه بوجود بیاید.
این موارد را باید بررسی کنید تا در صورتی که مربوط به این شرایط باشد آنها را برطرف کنید.