این آموزش به شما کمک می کند تا محیط توسعه نرم افزاری را برای سخت افزار مبتنی بر تراشه 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 ایجاد کنید:

1. دستور زیر را در شل پروفایل خود کپی و جایگذاری کنید ( . profile ، .bashrc ، .zprofile ، و غیره)

alias get_idf='. $HOME/esp/esp-idf/export.sh'

2. با راه اندازی مجدد سشن ترمینال یا اجرای 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 از این فرکانس به عنوان مقدار پیش فرض استفاده می کند.

اگر چنین مشکلی دارید، موارد زیر را انجام دهید:

  1. از مانیتور خارج شوید.
  2. برگردید به menuconfig
  3. بروید به کانفیگ config –> ESP32-specific –> Main XTAL frequency, بعد CONFIG_ESP32_XTAL_FREQ_SEL تغییر دهید  به 26MHz.
  4. پس از آن، برنامه را دوباره بیلد و فلش کنید.
  5. شما می توانید بیلد، فلش و مانیتور را در یک مرحله ترکیب کنید:
idf.py -p PORT flash monitor

این همه چیزی است که برای شروع برنامه نویسی با ESP32 نیاز دارید!

اکنون آماده هستید تا چند مثال دیگر را امتحان کنید یا مستقیماً به توسعه برنامه های کاربردی خود بپردازید.

 

 منبع : https://docs.espressif.com/projects/esp-idf/en/release-v4.0/get-started/index.html

  نظرات

جهت ثبت نظر وارد سایت شوید

راهنمای استفاده از کد در کامنت
````
insert your code
``