این آموزش به شما کمک می کند تا محیط توسعه نرم افزاری را برای سخت افزار مبتنی بر تراشه ESP32 شرکت Espressif در فریمورک ESP-IDF را تنظیم کنید. این سری از آموزش های مربوط به برنامه نویسی ESP32 که درتکفورالپست خواهد شد برگردانراهنمای برنامه نویسی ESP-IDPاز Espressif می باشد.
پس از تنظیم، با یک مثال ساده به شما نحوه استفاده از فریمورک ESP-IDF (Espressif IoT Framework Development) را با کانفیگ, بیلد پروژه و فلش کردن فریمور روی برد ESP32 نشان خواهیم داد.
این آموزش برای ورژن v4.0 می باشددیگر نسخه هادر Espressifدردسترس می باشد.
معرفی
ESP32سیستم روی تراشه یا همان SoC استکه امکانات زیر را در خود جای داده است:
- Wi-Fi (2.4 GHz band)
- Bluetooth 4.2
- Dual high performance cores
- Ultra Low Power co-processor
- Several peripherals
سیستم روی تراشه یا SoC چیست؟
سیستم روی تراشه، که به آن SoC نیز می گویند، در اصل یک مدار مجتمع یا IC است که از یک پلتفرم واحد استفاده می کند و یک سیستم الکترونیکی یا کامپیوتری را بر روی خود جای می دهد. همانطور که از نامش پیداست، یک سیستم کامل روی یک تراشه است.
در واقع SoC را می توان به مانند سیستمی تلقی کرد که توسط طراحان برد الکترونیکی روی برد طراحی شده است اما در مقیاس تراشه. به عنوان مثال شما از طراح می خواهید سیستمی برای شما طراحی کند که در کنار میکروی قابل برنامه ریزی امکان ارتباطات بی سیم بلوتوث و وایفای و ارتباط شبکه, ارتباط صنعتی مدباس و موارد دیگر را در کنار هم داشته باشد. اگر زمان طراحی، هزینه طراحی و مصرف انرژی آن را در نظر نگیریم قابلیت اطمینان عملکرد برد در حالت های متفاوت خود چالشی است که فقط در آزمایشگاههای معتبر قابل دستیابی است به لطف فناوری SoC می توان تمام این سیستم را روی یک تراشه داشت.
ESP32 که از فناوری 40 نانومتری بهره می برد، یک پلتفرم قوی و یکپارچه را ارائه می دهد که به ساخت پروژه هایی با نیازهای مستمر با مصرف انرژی کارآمد، طراحی جمع و جور، امنیت، عملکرد بالا و قابلیت اطمینان کمک می کند.
Espressif منابع سخت افزاری و نرم افزاری پایه را ارائه می دهد تا به توسعه دهندگان برنامه کمک کند تا ایده های خود را با استفاده از سخت افزار سری ESP32 تحقق بخشند. فریمورک توسعه نرم افزار Espressif برای توسعه برنامه های اینترنت اشیاء (IoT) با Wi-Fi، بلوتوث، مدیریت انرژی و چندین ویژگی دیگر سیستم در نظر گرفته شده است.
آنچه برای شروع برنامه نویسی ESP32 نیاز داریم
سخت افزار:
- برد ESP32
- کابل یو اس بی - USB A / micro USB B
- کامپیوتری با سیستم عامل ویندوز، لینوکس و یا مک
نرم افزار:
- تولچین برای کامپایل کد برای ESP32
- ابزار بیلد پروژه - CMake و Ninja ابزاری کامل برای بیلد ESP32 می باشند.
- ESP-IDF که اساساً حاوی API (کتابخانه های نرم افزاری و سورس کد) برای ESP32 و اسکریپت هایی برای کار با تولچین است.
- ویرایشگر متن برای نوشتن برنامه ها (پروژه ها) در C، به عنوان مثال، Eclipse
بردهای توسعه ESP32
اگر یکی از بردهای توسعه ESP32 را در زیر دارید، می توانید روی لینک آن کلیک کنید تا اطلاعات بیشتری در مورد سخت افزار آن بدانید.
نصبمرحلهبهمرحله
این یک نقشه راه دقیق است که شما را در مراحل نصب راهنمایی می کند.
راه اندازی محیط توسعه
- مرحله اول - نصب نیازمندی ها برای ویندوز، لینوکس یا مک
- مرحله دو - در یافت ESP-IDF
- مرحله سه - تنظیم ابزارها یا تولز
- مرحله چهار - تنظیم متغیرهای محیط توسعه
ایجاد اولین پروژه
- مرحله پنج - شروع اولین پروژه
- مرحله شش - اتصال دیوایس (برد توسعه)
- مرحله هفت - کانفیگ
- مرحله هشت - بیلد پروژه
- مرحله نه - فلش برنامه روی برد
- مرحله ده - مانیتور
مرحله یک - نصب پیش نیازها
قبل از انجام مراحل بعدی، بعضی از ابزارها باید روی کامپیوتر نصب شوند. برای اطلاع از دستورالعمل های سیستم عامل خود، لینک های زیر را دنبال کنید:
ویندوز:
راه اندازی تولچین ESP-IDF برای ویندوز
لینوکس:
Standard Setup of Toolchain for Linux
مک:
Standard Setup of Toolchain for Mac OS
مرحله دو - دریافت ESP-IDF
برای ایجاد برنامه های کاربردی برای ESP32، به کتابخانه های نرم افزاری ارائه شده توسط Espressif درریپازیتوریESP-IDFرا نیاز دارید.
برای دریافت ESP-IDF، به مسیر نصب خود بروید و ریپازیتوری را با git clone، مطابق دستورالعمل های زیر که مخصوص سیستم عامل شما است، کلون کنید.
نکته:این راهنما از پوشه~/espدر لینوکس و مک یا%userprofile%\espدر ویندوز به عنوان پوشه نصب ESP-IDF استفاده می کند. می توانید از هر مسیر دیگری استفاده کنید، اما باید دستورات را به درستی تنظیم کنید.اگر می خواهید مسیر پیش فرض را تغییر دهید به خاطر داشته باشید که ESP-IDF از فاصله های بین کاراکتر در مسیرها پشتیبانی نمی کند.
دریافت ESP-IDF در لینوکس و مک
ترمینال را باز کرده و دستورات زیر را اجرا کنید:
cd ~/esp
git clone -b release/v4.0 --recursive https://github.com/espressif/esp-idf.git
ESP-IDF در~/esp/esp-idfدانلود می شود.
برای اطلاع از اینکه از کدام نسخه ESP-IDF در شرایط خاص استفاده کنید، بهداکیومنت ورژنمراجعه کنید.
دریافت ESP-IDF در ویندوز
ESP-IDF Tools Installer برای ویندوز که در مرحله 1 معرفی شده است علاوه بر نصب ابزارها، همچنین می تواند یک نسخه از ESP-IDF را دانلود کند.
برای اطلاع از اینکه از کدام نسخه ESP-IDF در شرایط خاص استفاده کنید، بهداکیومنت ورژنمراجعه کنید.
اگر می خواهید ESP-IDF را بدون کمک ESP-IDF Tools Installer دانلود کنید، Command Prompt را باز کرده و دستورات زیر را اجرا کنید:
mkdir %userprofile%\esp
cd %userprofile%\esp
git clone -b release/v4.0 --recursive https://github.com/espressif/esp-idf.git
ESP-IDF در مسیر%userprofile%\esp\esp-idfدانلود می شود.
نکته:git clone -b release/v4.0به git می گوید که شاخه را در ریپازیتوری ESP-IDF git clone مربوط به این نسخه از داکیومنت، کلون کند.
امکان "Download zip file" گیت هاب با ESP-IDF کار نمی کند، یکgit cloneمورد نیاز است. به عنوان نسخه جایگزین،نسخه Stableرا می توان بدون Git نصب کرد.
گزینه --recursive را از فراموش نکنید. اگر قبلاً ESP-IDF را بدون این گزینه کلون کرده اید، یک فرمان دیگر اجرا کنید تا همه زیرماژول ها را دریافت کنید:
cd esp-idf
git submodule update --init
مرحله سه - تنظیم ابزارها برای ESP32
گذشته از نصب ESP-IDF، شما همچنین باید ابزارهای مورد استفاده ESP-IDF مانند کامپایل، دیباگر، بسته های پایتون و غیره را نصب کنید.
تنظیم ابزارها برای ویندوز
ابزار نصب ESP-IDF برای ویندوز که در مرحله 1 معرفی شده است، تمام ابزارهای مورد نیاز را نصب می کند.
اگر می خواهید ابزارها را بدون کمک ESP-IDF Tools Installer نصب کنید، Command Prompt را باز کرده و دستورات زیر را اجرا کنید:
cd %userprofile%\esp\esp-idf
install.bat
تنظیم ابزارها برای لینوکس و مک
cd ~/esp/esp-idf
./install.sh
دانلود فایل های جایگزین
tools_installer تعدادی فایل ضمیمه شده به GitHub Releases را دانلود می کند. اگر دسترسی به GitHub کند است، اگر امکان دارد یک متغیر محیطی تنظیم کنید تا سرور دانلود Espressif برای دانلود GitHub asset ترجیح داده شود.
نکته:این تنظیم فقط ابزارهای دانلود شده از نسخه های GitHub را کنترل می کند، نشانی های اینترنتی مورد استفاده برای دسترسی به ریپازیتوری Git را تغییر نمی دهد.
نحوه تنظیم سرور دانلود Espressif در ویندوز
برای ست کردن سرور دانلود Espressif هنگام اجرای ESP-IDF Tools Installer یا نصب ابزارها از خط فرمان، کنترل پنل System را باز کنید، سپس روی Advanced Settings کلیک کنید. یک متغیر محیطی جدید (از نوع User یا System) با نام IDF_GITHUB_ASSETS و مقدارdl.espressif.com/github_assetsاضافه کنید. پس از انجام کار روی OK کلیک کنید.
اگر پنجره خط فرمان یا پنجره ESP-IDF Tools Installer قبل از افزودن متغیر محیط جدید باز بود، باید آن را ببندید و دوباره باز کنید.
در حالی که این متغیر محیط تنظیم شده است، ESP-IDF Tools Installer و نصب کننده خط فرمان روی سرور دانلود Espressif تنظیم می شوند.
نحوه تنظیم سرور دانلود Espressif درلینوکس و مک
برای ست کردن سرور دانلود Espressif هنگام نصب ابزارها، هنگام اجرای install.sh از دستورات زیر استفاده کنید:
cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh
سفارشی سازی مسیر نصب ابزارها
اسکریپت های معرفی شده در این مرحله ابزارهای کامپایل مورد نیاز ESP-IDF را در مسیر اصلی کاربر نصب می کند:$HOME/.espressif در لینوکس و %USERPROFILE%.espressifدر ویندوز. اگر می خواهید ابزارها را در مسیر دیگری نصب کنید، قبل از اجرای اسکریپت های نصب، متغیر محیط IDF_TOOLS_PATH را تنظیم کنید. مطمئن شوید مجوز برای خواندن و نوشتن این مسیر را دارید.
در صورت تغییر IDF_TOOLS_PATH، مطمئن شوید که هر بار که اسکریپت هایinstall.bat/install.shوexport.bat/export.shاجرا می شوند بر روی همان مقدار تنظیم شده است.
مرحله چهار - تنظیم متغیرهای محیط
ابزارهای نصب شده هنوز به متغیر محیط PATH اضافه نشده اند. برای استفاده از ابزارها در خط فرمان، بعضی متغیرهای محیطی باید تنظیم شوند. ESP-IDF اسکریپت دیگری را ارائه می دهد که این کار را انجام می دهد.
تنظیم متغیرهای محیط برای ویندوز
ESP-IDF Tools Installer برای ویندوز یک میانبر Command Prompt برای ESP-IDF در منوی Start ایجاد می کند. این میانبر، Command Prompt را باز می کند و همه متغیرهای محیط مورد نیاز را تنظیم می کند. می توانید این میانبر را باز کرده و به مرحله بعد بروید.
متناوبا، اگر می خواهید از ESP-IDF در پنجره Command Prompt موجود استفاده کنید، می توانید کد زیر را اجرا کنید:
%userprofile%\esp\esp-idf\export.bat
تنظیم متغیرهای محیط برای لینوکس و مک
در ترمینالی که قصد استفاده از ESP-IDF را دارید، دستور زیر را اجرا کنید:
. $HOME/esp/esp-idf/export.sh
به فاصله بین نقطه شروع و مسیر توجه کنید!
اگر قصد دارید از esp-idf به طور مکرر استفاده کنید، می توانید یک نام مستعار برای اجرایexport.shایجاد کنید:
- دستور زیر را در شل پروفایل خود کپی و جایگذاری کنید (
. profile،.bashrc،.zprofile، و غیره)
alias get_idf='. $HOME/esp/esp-idf/export.sh'
- با راه اندازی مجدد سشن ترمینال یا اجرای
source [path to profile]،پیکربندی را رفرش کنید. برای نمونه،source ~/.bashrc.
حالا می توانیدget_idfرا اجرا کنید تا محیط esp-idf را در هر سشن ترمینال تنظیم یا رفرش کنید.
از نظر فنی، می توانیدexport.shرا مستقیماً به shell پروفایل خود اضافه کنید. با این حال، توصیه نمی شود. با انجام این کار، محیط مجازی IDF در هر سشن ترمینال (از جمله در مواردی که IDF مورد نیاز نیست) فعال می شود، و هدف محیط مجازی را شکست می دهد و احتمالاً بر سایر نرم افزارها تأثیر می گذارد.
مرحله پنج - شروع اولین پروژه
اکنون هممه چیز آماده هست تا برنامه ای برای ESP32 آماده کنیم. می توانید با پروژهget-start/hello_worldاز مسیرمثال هادر IDF شروع کنید.
get-start/hello_worldرا در مسیر~/espکپی کنید.
اجرای پروژه نمونه ESP32 در لینوکس و مک
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
اجرای پروژه نمونه ESP32 در ویندوز
cd %userprofile%\esp
xcopy /e /i %IDF_PATH%\examples\get-started\hello_world hello_world
طیف وسیعی از پروژه های نمونه در مسیرexamplesدر ESP-IDF وجود دارد. می توانید هر پروژه ای را به همان روشی که در بالا ارائه شده کپی کرده و اجرا کنید.
همچنین می توان مثال ها را یکجا ایجاد کرد، بدون اینکه ابتدا آنها را کپی کنید.
نکته:سیستم بیلد در ESP-IDF ازESP-IDF از فاصله های بین کاراکتر در مسیرهایا پروژه هاپشتیبانی نمی کند.
مرحله شش - اتصال دیوایس (برد توسعه)
حالا برد ESP32 خود را به رایانه وصل کنید و بررسی کنید که برد در زیر کدام پورت سریال قابل مشاهده است.
پورت های سریال الگوهای زیر را در نام خود دارند:
- ویندوز: اسامی مانند
COM1 - لینوکس: شروع با
/dev/tty - مک: شروع با
/dev/cu.
نام پورت را در دست داشته باشید زیرا در مراحل بعدی به آن نیاز خواهید داشت.
مرحله هفت - کانفیگ
از مرحله پنج به مسیرhello_worldبروید و پروژه را پیکربندی کنید و ابزار پیکربندی پروژهmenuconfigرا اجرا کنید.
کانفیگ پورت سریال در لینوکس و مک برای فلش کردن برد ESP32
cd ~/esp/hello_world
idf.py menuconfig
کانفیگ پورت سریال درویندوز برای فلش کردن برد ESP32
cd %userprofile%\esp\hello_world
idf.py menuconfig
اگر مراحل قبلی به درستی انجام شده باشد ، منوی زیر ظاهر می شود:
برای حرکت و استفاده ازmenuconfig، کلیدهای زیر را فشار دهید:
کلیدهای جهت برای حرکت روی آیتم های منو
Enterرا برای رفتن به زیر منو انجام دهید
Esc برای بالا رفتن از یک سطح یا خروج
؟برای مشاهده صفحه راهنمای منو یا آیتم پیکربندی. کلید "Enter" از صفحه راهنما خارج می شود
کلیدهایSpace، یا کلیدهایYوNبرای فعال کردن (بله) و غیرفعال کردن (نه) آیتم پیکربندی با کادرهای تأیید "[*]"
/برای پیدا کردن آیتم پیکربندی
توجه:اگر از برد ESP32-DevKitC با ماژول ESP32-SOLO-1 استفاده می کنید، قبل از فلش کردن مثال ها، حالت تک هسته ای (CO NFIG_FREERTOS_UNICORE) را در menuconfig فعال کنید.
مرحله هشت - بیلد پروژه
بیلد پروژه با اجرای دستور:
idf.py build
این دستور برنامه و همه اجزای ESP-IDF را کامپایل می کند، سپس بوت لودر، جدول پارتیشن و باینری برنامه را تولید می کند.
$ idf.py build
Running cmake in directory /path/to/hello_world/build
Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"...
Warn about uninitialized values.
-- Found Git: /usr/bin/git (found version "2.17.0")
-- Building empty aws_iot component due to configuration
-- Component names: ...
-- Component paths: ...
... (more lines of build system output)
[527/527] Generating hello-world.bin
esptool.py v2.3.1
Project build complete. To flash, run this command:
../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello-world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin
or run 'idf.py -p PORT flash'
در صورت عدم وجود خطا، بیلد پروژه با تولید فایل باینری فریمور .bin به پایان می رسد
مرحله نه - فلش برنامه روی برد
با اجرای دستور زیر فایل های باینری که به تازگی ایجاد کرده اید را روی برد ESP32 خود فلش کنید:
idf.py -p PORT [-b BAUD] flash
پورت را با نام پورت سریال برد ESP32 خود در مرحله 6 جایگزین کنید. دستگاه خود را وصل کنید.
همچنین می توانید باود فلاشر را با تغییرBAUD با سرعت مورد نیاز تغییر دهید. نرخ پیش فرض باود460800است.
برای اطلاعات بیشتر در مورد آرگومان هایidf.py
نکته:گزینهflashبه طور خودکار پروژه را بیلد و فلش می کند، بنابراین اجرای دستورidf.py buildضروری نیست.
Running esptool.py in directory [...]/esp/hello_world
Executing "python [...]/esp-idf/components/esptool_py/esptool/esptool.py -b 460800 write_flash @flash_project_args"...
esptool.py -b 460800 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 hello-world.bin
esptool.py v2.3.1
Connecting....
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0220
Compressed 22992 bytes to 13019...
Wrote 22992 bytes (13019 compressed) at 0x00001000 in 0.3 seconds (effective 558.9 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 82...
Wrote 3072 bytes (82 compressed) at 0x00008000 in 0.0 seconds (effective 5789.3 kbit/s)...
Hash of data verified.
Compressed 136672 bytes to 67544...
Wrote 136672 bytes (67544 compressed) at 0x00010000 in 1.9 seconds (effective 567.5 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
اگر تا پایان فرآیند فلش مشکلی وجود نداشته باشد، ماژول ریست می شود و برنامه "hello_world" اجرا می شود.
مرحله ده - مانیتور
برای بررسی اینکه آیا "hello_world" واقعاً در حال اجرا است،idf.py -p PORT monitorرا تایپ کنید (فراموش نکنید که PORT را با نام پورت سریال خود جایگزین کنید).
این دستور برنامه IDF Monitor را راه اندازی می کند:
$ idf.py -p /dev/ttyUSB0 monitor
Running idf_monitor in directory [...]/esp/hello_world/build
Executing "python [...]/esp-idf/tools/idf_monitor.py -b 115200 [...]/esp/hello_world/build/hello-world.elf"...
--- idf_monitor on /dev/ttyUSB0 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun 8 2016 00:22:57
...
پس از راه اندازی و diagnostic.logs اسکرول را به بالا برده، باید "Hello world!" را ببینید. چاپ شده توسط برنامه
...
Hello world!
Restarting in 10 seconds...
I (211) cpu_start: Starting scheduler on APP CPU.
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...
برای خروج از مانیتور IDF از میانبرCtrl+]استفاده کنید.
اگر مانیتور IDF مدت کوتاهی پس از آپلود خراب شد، یا اگر به جای پیامهای بالا، پیامهای تصادفی نامفهوم مشابه آنچه در زیر آمده مشاهده کردید، احتمالاً برد شما از کریستال 26 مگاهرتز استفاده می کند. اکثر طرح های برد توسعه از 40 مگاهرتز استفاده می کنند ، بنابراین ESP-IDF از این فرکانس به عنوان مقدار پیش فرض استفاده می کند.

اگر چنین مشکلی دارید، موارد زیر را انجام دهید:
- از مانیتور خارج شوید.
- برگردید به menuconfig
- بروید به کانفیگ config –> ESP32-specific –> Main XTAL frequency, بعد CONFIG_ESP32_XTAL_FREQ_SEL تغییر دهید به 26MHz.
- پس از آن، برنامه را دوباره بیلد و فلش کنید.
- شما می توانید بیلد، فلش و مانیتور را در یک مرحله ترکیب کنید:
idf.py -p PORT flash monitor
این همه چیزی است که برای شروع برنامه نویسی با ESP32 نیاز دارید!
اکنون آماده هستید تا چند مثال دیگر را امتحان کنید یا مستقیماً به توسعه برنامه های کاربردی خود بپردازید.
منبع : https://docs.espressif.com/projects/esp-idf/en/release-v4.0/get-started/index.html
