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

آموزش برنامه نویسی ESP32 با میکروپایتون

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

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

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

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

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

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

مدار اجرای کد میکروپایتون برای ESP32

شماتیک استفاده از ESP32 با MicroPython برای LED چشمک زن ساده است. قطعات را همانطور که در شماتیک زیر نشان داده شده است وصل کنید.

مدار اجرای کد میکروپایتون برای ESP32

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

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

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

شما می توانید از هر یک از بردهای دیگر مبتنی بر ESP32 به جای DOIT ESP32 DevKit V1 استفاده کنید و می توانید انتخاب کنید که با LED روی برد کار کنید یا با یک ال ای دی خارجی کار کنید.

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

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

اولین کاری که باید انجام دهیم این است که ESP32 خود را با سیستم عامل MicroPython فلش کنیم. این فرآیند شبیه نحوه فلش کردن بردهای مبتنی بر ESP-12e با سیستم عامل NodeMCU است.

مرحله 1: ما با دانلود فایل bin جدیدترین سیستم عامل MicroPython از صفحه دانلود MicroPython شروع می کنیم. در لینک داده شده ESP32 را جستجو کنید موارد مختلفی مشاهده میکنید که میتوانید با توجه به بردی که دارید یک مورد را انتخاب کنید. سپس آخرین نسخه که با [latest] مشخص شده است را دانلود کنید.

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

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

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

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

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

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

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

pip install esptool

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

pip3 install esptool
python -m pip install esptool

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

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

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

esptool.py

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

کار با ESPtool esp32

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

esptool.py --chip esp32 erase_flash

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

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

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

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

esptool.py --chip esp32 --port <پورت برد> write_flash -z 0x1000 <مکان فایل bin>

نقاط موجود در سیستم عامل را با پورت سریال خود و محل فایل bin که قبلا دانلود کردیم پر کنید. برای آسان‌تر کردن کارها، می‌توانید دایرکتوری را به همان پوشه فایل bin تغییر دهید، بنابراین فقط باید نام فایل را به عنوان مکان وارد کنید. به عنوان مثال:

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

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

نصب Thonny IDE برای ESP32

بعد از نصب سیستم عامل باید یک IDE پایتون را نصب کنید. IDE ها راه آسانی برای توسعه و مدیریت کد پروژه شما فراهم می کنند. تعداد زیادی IDE پایتون با پشتیبانی از MicroPython وجود دارد و شما می توانید هر یک از آنها را برای پروژه خود انتخاب کنید. برای آموزش امروز، ما از Thonny استفاده خواهیم کرد. Thonny در بین برنامه نویسان بسیار محبوب است و به دلیل اینکه یکی از محیط‌های توسعه پایتون است که در سیستم‌عامل Raspbian Raspberry Pi به کار می‌رود، محبوبیت بیشتری کسب کرده است. بعد از دانلود Thonny آن را نصب کنید.

نصب Thonny IDE برای ESP32

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

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

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

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

Blink در دنیای سخت افزار مانند Hello World در دنیای نرم افزار است. این پروژه آنقدر پیچیده نیست که من به شما نشان دهم MicroPython چقدر قدرتمند است، اما من معتقدم به عنوان اولین پروژه MicroPython به اندازه کافی خوب است.

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

ابتدا یک فایل جدید ایجاد کنید و آن را به عنوان main.py ذخیره کنید. هر بار که بردی که MicroPython را اجرا می کند روشن شود، main.py بارگذاری می شود. درست مانند تابع حلقه در آردوینو است.

ما با وارد کردن ماژول هایی که برای کدمان مورد استفاده قرار می گیرند، شروع می کنیم. در پروژه ما ماژول ماشین و زمان هستند.

from machine import Pin
from time import sleep

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

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

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)

سپس با رفتن به “Devices” در و انتخاب گزینه “upload current script as main.py script” آن را در برد خود آپلود کنید.

برنامه را با استفاده از Micropython در ESP32 آپلود کنید

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

تصویر برد ESP32

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

5 (2 نفر)

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

محمد رحیمی

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

2 نظر

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

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