آموزش Espآموزش ESP32آموزش اینترنت اشیا

برنامه نویسی ESP32 با میکروپایتون Micropython

MicroPython یک نسخه سبک از زبان برنامه نویسی پایتون است که برای برنامه نویسی میکروکنترلرها، SOC ها و سایر دستگاه های امبدد توسعه یافته است. میکروپایتون ایجاد شد تا توسعه دهندگان را قادر سازد تا از ماهیت “آسان برای یادگیری و استفاده” پایتون برای توسعه سیستم های امبدد استفاده کنند. با توجه به اینکه پایتون اکنون زبان اصلی در اکثر مدارس است و یکی از محبوب ترین و پرکاربردترین زبان های برنامه نویسی در سراسر جهان است، از طریق میکرو پایتون، تعداد زیادی از کاربران پایتون میتوانند زبان پیچیده سی را دور بزنند و از پایتون برای برنامه نویسی میکروکنترلر ها استفاده کنند. تا پیش از این زبان سی و سی پلاس پلاس برای میکروکنترلر ها استفاده میشد.

در حالی که MicroPython هنوز در سطح محبوبیت C و C++ برای توسعه سیستم های امبدد و میکروکنترلری نیست، اما محبوبیت آن روز به روز بیشتر میشود زیرا میکروکنترلرها، IDE ها و بردهای توسعه مختلف پشتیبانی از میکروپایتون را به مجموعه خود اضافه کرده اند.

در این آموزش میخواهیم برنامه نویسی برد ESP32 را با استفاده از میکروپایتون انجام دهیم.

ما در ابتدا بررسی میکنیم چرا باید از میکروپایتون به جای آردوینو برای برنامه نویسی ESP32 استفاده کرد.

میکروپایتون یا آردوینو ؟!

یکی از ثابت‌شده‌ترین و آسان‌ترین راه‌های برنامه‌نویسی ESP32، استفاده از Arduino IDE است که به معنای استفاده از زبان C/C++ آردوینو است. C و C++، برای چندین دهه، دو زبان محبوب برای توسعه سیستم های امبدد بوده اند و نسخه آردوینو زبان آن را حتی ساده تر کرده است. علاوه بر این، آردوینو دارای یکی از بزرگترین جوامع فناوری در جهان با کتابخانه های جدید، رفع مشکلات، پشتیبانی از برد های جدید و … است. همه اینها آردوینو را به ابزاری قدرتمند برای برنامه نویسی بردهای امبدد تبدیل می کند.

میکروپایتون یا آردوینو

MicroPython نسبتاً جدید است، جامعه کاربران آن در حال رشد است، اما هنوز هم از نظر قدرت نمیتواند با آردوینو مقایسه شود. از طرف دیگر، MicroPython اساساً یک نسخه ناب از پایتون است که یکی از محبوب ترین زبان های برنامه نویسی در جهان است و به همین دلیل، هر مشکلی که توسط جامعه MicroPython قابل حل نباشد، میتواند توسط جامعه پایتون اصلی رفع شود.

علاوه بر پشتیبانی انجمن، MicroPython همچنین دارای ویژگی‌های خاصی است که آن را بالاتر از کلاس Arduino قرار می‌دهد. یکی از این ویژگی ها REPL است. REPL مخفف Read-Evaluate-Print است. این ویژگی به شما امکان می دهد بدون نیاز به کامپایل یا آپلود کل کد به یک برد متصل شوید و کد را به سرعت اجرا کنید. به این ترتیب، می توانید هر قسمت از کد خود را در حین توسعه آزمایش کنید.

ماژول ESP32

ماژول ESP32

شما می توانید از هر یک از بردهای دیگر مبتنی بر ESP32 به جای DOIT ESP32 DevKit استفاده کنید و می توانید انتخاب کنید که با LED داخلی کار کنید یا از ال ای دی خارجی استفاده کنید. علاوه بر اجزای سخت افزاری، به نرم افزاری مانند Thonny IDE نیز نیاز داریم. در ادامه این مقاله بیشتر در مورد این نرم افزار بحث خواهد شد.

فلش کردن میکروپایتون در ESP32

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

مرحله 1: ما با دانلود فایل bin برای جدیدترین سیستم عامل MicroPython از صفحه دانلود MicroPython شروع می کنیم. شما باید بین سه گزینه انتخاب کنید.

  • Stable firmware builds
  • Daily firmware builds
  • Daily firmware builds with SPIRAM support

اگر به تازگی کار با MicroPython را شروع کرده اید، بهترین گزینه این است که به سراغ ساخت های سیستم عامل Stable بروید. اگر شما یک کاربر با تجربه و پیشرفته MicroPython ESP32 هستید که می‌خواهید حرفه ای تر کار کنید، نسخه های Daily را استفاده کنید.

فلش کردن میکروپایتون در ESP32

گام 2: بعد از دانلود، مرحله بعدی این است که برد خود را با سیستم عامل فلش کنید. برای انجام این کار، باید برد خود را در حالت بوت لودر قرار دهید و سپس از ابزاری برای کپی کردن سیستم عامل از رایانه شخصی خود به برد استفاده کنید.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

روش دقیق قرار دادن برد خود در حالت بوت لودر به برد شما بستگی دارد و برای جزئیات باید به مستندات آن برد مراجعه کنید. خوشبختانه، اکثر بردها دارای یک کانکتور USB، یک مبدل سریال USB، و پین های DTR و RTS هستند که به روش خاصی سیم کشی شده اند. بنابراین فلش کردن سیستم عامل در آن ها راحت است.

برای DOIT DevKit، زمانی که می خواهید برد را فلش کنید، باید دکمه بوت را فشار دهید.

برای فلش کردن ESP32 با سیستم عامل MicroPython، از esptool.py به عنوان ابزار کپی سیستم عامل استفاده خواهیم کرد.

برای esptool.py باید پایتون 2.7، پایتون 3.4 یا پایتون جدیدتر روی رایانه شما نصب شود. توصیه می کنیم از Python 3.7.X استفاده کنید.

با نصب پایتون 3، می توانید به مخزن رسمی esp بروید و آخرین نسخه esptool.py را دانلود کنید یا یک پنجره ترمینال را باز کنید تا آن را از طریق pip نصب کنید.

برای نصب از طریق pip، یک پنجره ترمینال را باز کرده و اجرا کنید:

pip install esptool

اگر دستور بالا کار نکرد، آن را به یکی از دستورات زیر تغییر دهید و دوباره امتحان کنید.

pip3 install esptool
python -m pip install esptool

pip3 install esptool برای من کار کرد. پس از نصب، ترمینال شما باید مانند تصویر زیر باشد.

فلش کردن ESP32 با سیستم عامل MicroPython

اکنون باید بتوانید esptool را با وارد کردن دستور esptool.py در ترمینال راه اندازی کنید. اجرا کن:

esptool.py

اگر نصب شما به خوبی انجام شد، باید پیامی مانند تصویر زیر مشاهده کنید.

ESPtool for Programming

مرحله 3: برای بهترین نتیجه، توصیه می شود قبل از قرار دادن سیستم عامل جدید MicroPython، ابتدا فلش قبلی دستگاه خود را پاک کنید. برای انجام این کار، دکمه boot/flash را در ESP32 خود نگه دارید و دستور زیر را اجرا کنید.

esptool.py --chip esp32 erase_flash

به محض شروع فرآیند، می توانید دست خود را از روی دکمه بردارید. ESPtool به طور خودکار پورتی را که ESP32 شما در آن قرار دارد شناسایی می کند.

باید پس از پیام هایی مشابه این را مشاهده کنید.

راه اندازی ESP32 با ESPtool

اگر بعد از اتصال روی نقاطی گیر کرد، به این معنی است که برد شما در حالت بوت/فلش نبوده و باید دوباره امتحان کنید.

مرحله 4: با اتمام پاک کردن، اکنون می توانید با اجرای دستور زیر، برد را با سیستم عامل جدید فلش کنید.

esptool.py --chip esp32 --port <enter_the_serial_port_to_which_your_board_is_connected> write_flash -z 0x1000 <location_of_the_bin_file>

دستور بالا باید با توجه به سیستم شما شخصی سازی شود. یعنی شما باید پورت متصل به برد و مکان فایل bin را مشخص کنید. مثلا به شکل زیر:

esptool.py --chip esp8266 --port COM4 write_flash --flash_mode dio --flash_size detect 0x0 esp32-ppp-fix.bin

با انجام این کار، باید پیام هایی را مشاهده کنید که نشان می دهد برد شما با Firmware MicroPython با موفقیت فلش شده است و باید بتوانید برد را با استفاده از هر IDE پایتون برنامه ریزی کنید.

برنامه نویسی ESP32 با Thonny IDE

بعد از نصب سیستم عامل، باید Thonny IDE را نصب کنید.

IDE ها راه آسانی برای توسعه و مدیریت کد پروژه شما فراهم می کنند. تعداد زیادی IDE پایتون با پشتیبانی از MicroPython وجود دارد مثل Thonny، Mu، UPyCraft و …

ما در این آموزش از Thonny استفاده میکنیم زیرا در بین سازندگان بسیار محبوب است و یکی از محیط های توسعه پایتون به شمار میرود که در محیط رزبری پای هم ارائه شده است.

برنامه نویسی ESP32 با Thonny IDE

برای برنامه‌ریزی دستگاه‌های امبدد با Thorny، اینتراپتر باید روی MicroPython تنظیم شود. می توانید این کار را با رفتن به Tools > Options > interpreter انجام دهید. شما باید پنجره ای مشابه تصویر زیر ببینید. MicroPython را برای اجرای کد انتخاب کنید و پورتی را که برد را به آن متصل کردید انتخاب کنید.

راه اندازی Micropython برای برنامه نویسی ESP32

با انجام این کار، اکنون آماده برنامه ریزی برد خود با استفاده از Thonny هستید.

پروژه نمونه ESP32 با میکرو پایتون

میخواهیم یک پروژه ال ای دی چشمک زن را با ESP32 و زبان میکروپایتون اجرا کنیم.

مدار چشمک زن با ESP32

شماتیک استفاده از ESP32 با MicroPython برای ایجاد یک پروژه LED چشمک زن بسیار ساده است. شما آن را بارها در پروژه های چشمک دیده اید. همانطور که در شماتیک زیر نشان داده شده است، اجزا را به هم وصل کنید.

بخش بعدی شامل چند نصب و راه اندازی است که باید انجام دهیم تا بتوانیم به راحتی ESP32 را با استفاده از MicroPython برنامه ریزی کنیم.

مدار چشمک زن با ESP32

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

برای ساختن مثال چشمک زدن، به اجزای زیر نیاز داریم.

  • DOIT ESP32 DevKit
  • LED
  • مقاومت 100 اهم
  • سیم جامپر
  • برد بورد
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

پروژه ال ای دی چشمک زن یک پروژه ساده است اما برای اولین پروژه MicroPython به اندازه کافی خوب است. میکروپایتون تعداد زیادی از کتابخانه های پایتون را ندارد اما کتابخانه های اضافه ای دارد که تعامل با سخت افزار را آسان میدهد. یکی از این کتابخانه ها machine است. عملکردهای موجود در machine امکان دسترسی و کنترل مستقیم و نامحدود بلوک های سخت افزاری مانند CPU، تایمر، باس ها و … را در یک سیستم امبدد فراهم می کند. این یک ماژول است که مطمئناً در تمام پروژه های میکروپایتون خود از آن استفاده خواهید کرد.

یک فایل جدید ایجاد کنید و آن را به عنوان main.py ذخیره کنید. هر بار که برد روشن شود، main.py اجرا می شود. درست مانند تابع loo[ در آردوینو. ذخیره آن با هر نام دیگری هم ممکن است زیرا زمانی که به IDE دستور می دهید کد را در دستگاهی آپلود کند به طور خودکار نام آن را به main.py تغییر می دهد.

در ابتدای کد کتابخانه هایی که در کد استفاده میشوند را وارد میکنیم.

from machine import Pin
from time import sleep

pin به ما کمک می‌کند تا GPIO‌ های خاصی را آدرس‌دهی کنیم. sleep به ما کمک می‌کند تا مکث‌هایی مانند تابع delay() را در آردوینو ایجاد کنیم.

با خط زیر وضعیت پین را تنظیم میکنیم. در کد زیر ما پایه 2 را خروجی میکنیم و آن را در آبجکت led قرار میدهیم.

led = Pin(2, Pin.OUT)

بعد حلقه while را می نویسیم. پیکربندی حلقه while در MicroPython مشابه تابع void loop() در آردوینو است. در اینجا LED را برای 0.5 ثانیه “روشن” می کنیم و 0.5 ثانیه دیگر “خاموش” می کنیم.

while True:
  led.high()
  sleep(0.5)
  led.low()
  sleep(0.5)

کد کامل در زیر قرار داده شده است:

from machine import Pin
from time import sleep

led = Pin(2, Pin.OUT)

while True:
  led.high()
  sleep(0.5)
  led.low()
  sleep(0.5)

بعد از نوشتن کد کامل، به منوی “Device” بروید و گزینه “upload current script as main.py script” را در برد خود آپلود کنید.

آپلود کد در برد ESP32

سپس باید ببینید چراغ ال ای دی روی برد به طور مرتب چشمک میزند.

چشمک زدن ال ای دی برد ESP32

مسلماً کار با MicroPython در مقایسه با آردوینو C ساده‌تر است، اما ممکن است مدتی طول بکشد تا به پتانسیل کامل خود دست یابد زیرا هنوز به اندازه خوبی انعطاف پذیر نیست. اما با توجه به عملکرد پایتون، ممکن است میکروپایتون آینده سیستم های امبدد باشد.

4.3 (6 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

3 نظر

  1. باسلام خدمت شما .
    من میکروپایتون رو بر روی esp32 بوت کردم و الان موقع ریختن برنامه‌ی آردوینو ، کد آپلود نمیشه و ارور میده ؛ درحالی که تنظیمات بخش tools و اطلاعات برد برای آپلود ، مطابق تنظیمات در فیلم‌های آموزشی esp32 می‌باشد .

    چگونه می‌توانم این مشکل رو حل بکنم ؟

  2. برد esp32 را با میکرو پایتون فلش کردم و برنامه چشمک زن را هم زدم و خوب کار کرد تنها مشکلی که دارم بعد قطع منبع تغذیه برد و اتصال مجدد آن برنامه کار نمی‌کند و باید دوباره از نو بزنم مثل اینکه با قطع تغذیه حافظه برد پاک می‌شود چگونه میتوانم این مشکل را حل کنم

    1. با سلام خدمت شما. باید نرم افزار Thonny رو باز کنید. از منو گزینه ی Files رو انتخاب کنید تا کنار صفحه سمت راست برای شما قسمت files نمایش داده شود. این بخش شامل نمایش فایل های کامپیوتر و همچنین فایل های درون حافظه ی ESP32 می شود. برنامه ای را که درون Thonny نوشته ای را با گزینه ی save as در micropython device که همون ESP32 باشه با نام main.py ذخیره کنید. بعد از هر بار روشن و خاموش کردن، برنامه ی شما به صورت خودکار اجرا میشه. امیدوارم این مطلب مفید واقع شده باشه.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *