میکروپایتون چیست؟ what is micropython
میکروپایتون چیست؟ زبان برنامهنویسی مرسوم برای برنامهنویسی میکروکنترلرها زبان C و یا با کلاس شده آن ++C است. هرچند به صورت جسته و گریخته زبانهای دیگری استفاده میشود مانند:
- BASCOM : بر اساس زبان بیسیک است و برای میکروکنترلرهای AVR استفاده میشد و امروزه کم کاربرد است
- ASSEMBLY : یک زبان سطح پایین (نزدیک به سختافزار) است که Performance بالایی دارد اما کار با آن بسیار سخت است و کاربرد آن کم است
- ARDUINO : بر اساس ++C توسعه داده شده و برای برنامهنویسی میکروکنترلرهای ARDUINO استفاده میشود.
در چند سال اخیر گزینه جدیدی مطرح شده که از زبان غنی و سطح بالای پایتون استفاده میکند و آن میکروپایتون است. برای آنکه بدانید میکروپایتون چیست و کاربرد آن در کجاست در ادامه این مقاله با ما همراه باشید.
میکروپایتون چیست؟
زبانهای برنامه نویسی از نظر نحوه اجرا به دو نوع کامپایلری و مفسری تقسیمبندی میشوند. زبانهای کامپایلری (مانند زبان C) قبل از آن که روی سختافزار اجرا شوند ابتدا توسط کامپایلر به زبان سطح پایین کامپایل میشوند و پس از آن توسط اسمبلر به زبان ماشین ترجمه میشوند. این فرآیند فقط یکبار و قبل از اجرای کد صورت میگیرد. زبانهای مفسری (مانند پایتون) در حین اجرا توسط مفسر به زبان سطح پایین و زبان ماشین ترجمه میشوند و به همین علت اجرای آنها کندتر از زبانهای کامپایلری است.
حالا میتوانیم در مورد این که میکروپایتون چیست صحبت کنیم. میکروپایتون در واقع مفسر پایتونی است که برای استفاده روی میکروکنترلرها طراحی شده است. این مفسر روی میکروکنترلر در حال اجرا است و میتواند کدهایی که شما با زبان پایتون نوشتهاید را برای میکروکنترلر تفسیر کند. جالب است، یعنی به شما اجازه میدهد با زبان سطح بالایی مانند پایتون که کتابخانه های فوقالعاده غنی دارد برای میکروکنترلر برنامهنویسی کنید.
توجه به یک نکته ضروری است. از نظر فنی میکروپایتون یک مفسر پایتون است (مانند Cpython که مفسر پایتون روی کامپیترها است) و کد نوشته شده توسط شما به زبان پایتون را تفسیر میکند اما در باور عموم اینطور جا افتاده است که میکروپایتون یک زبان برنامهنویسی منطبق بر پایتون است که در میکروکنترلرها استفاده میشود. به عبارت دیگر به جای استفاده از عبارت “کد پایتونی که برای میکروپایتون نوشته شده” عبارت ساده شده “کد میکروپایتون” استفاده میشود. برای آنکه شما دچار سردرگمی نشوید ما نیز در ادامه این مقاله میکروپایتون را یک زبان برنامه نویسی منطبق بر پایتون که برای استفاده در میکروکنترلرها بهینه شده تصور میکنیم.
مزایا و معایب میکروپایتون چیست؟
همانطور که پیش از این اشاره شد یکی از معایب زبانهای مفسری کند بودن آنها است. در میکروکنترلرها که منابع سختافزاری قدرتمندی ندارند (از جمله میزان RAM, Flash, Clock) سرعت اجرا بسیار مهم است. بنابراین معایب میکروپایتون را به صورت زیر لیست کرد:
- سرعت اجرای پایین
- استفاده بالا از RAM و FLASH
- عدم پشتیبانی از همه میکروکنترلرها (میکروکنترلرهای میتوانند میکروپایتون را اجرا کنند که حداقل 256 کیلوبایت FLASH و 16 کیلوبایت RAM داشته باشند)
- کامل نبودن امکانات پشتیبانی از تمام ویژگیهای میکروکنترلر (میکروپایتون در ابتدای راه است)
حالا که دانستید معایب میکروپایتون چیست نوبت آن رسیده که از مزایای بیشمار آن بگوییم. پیادهسازی کتابخانهها و توابع پیچیده (مثلا کتابخانههای مربوط به شبکه یا بلوتوث) با زبانهای سطح میانی و سطح پایین بسیار مشکل و زمانبر است. در میکروپایتون به علت ماهیت سطح بالای زبان پایتون و همچنین وجود کتابخانههای زیاد و کاربردی از پیش نوشته شده برای پایتون پیادهسازی این توابع و کتابخانههای بزرگ بسیار ساده است.
میکروپایتون به شدت قابل انتقال است. یعنی کدی را که برای استفاده از میکروکنترلر شرکت رزبری پای نوشتهاید با تغییرات بسیار اندک و حتی گاهی بدون نیاز به تغییر میتوانید روی میکروکنترلرهای شرکت STM، شرکت Nordic، شرکت Espressif و هر شرکت دیگری که میکروپایتون از آن پشتیبانی میکند اجرا کنید.
زبان پایتون بسیار پرکاربرد است و احتمالا قبل از اینکه سراغ برنامه نویسی میکروکنترلر بروید با آن برخورد کردهاید. یکی دیگر از مزایای میکروپایتون این است که نیاز به یادگیری زبان جدیدی ندارید. حتی اگر با این زبان برخورد نکرده اید به زودی خواهید کرد چون در حوزه هایی مانند هوش مصنوعی، پردازش تصویر، پردازش سیگنال، شبکه و وب بسیار پرکاربرد است. این که در حوزههای مختلف فعالیت خود از یک زبان برنامه نویسی استفاده کنید مزیت بزرگی برای شما خواهد داشت.
جامعه کاربری پایتون بالا است و هنگام برخورد به مشکلی در حوزه کدنویسی می توانید با استفاده از منابع بیشمار موجود در اینترنت مشکل خود را به سرعت حل کنید.
به علت ماهیت سطح بالای پایتون کدنوشته شده توسط شما کد خیلی بزرگ و پیچیدهای نیست و ویژگیهای قابلیت توسعه، خوانایی، عیبیابی و تعمیر و نگهداری در آن نهفته است.
میکروپایتون متن باز است و به سرعت در حال توسعه از سمت جامعه عمومی است. ممکن است میکروکنترلری که تا دیروز در میکروپایتون پشتیبانی نمیشد امروز پشتیبانی شود (یعنی یک شخص یا یک گروه مفسر میکروپایتون مخصوص آن میکروکنترلر را نوشته باشند) و یا ويژگیهایی از یک میکروکنترلر که دیروز در دسترس نبود امروز باشد.
به صورت خلاصه مزایای استفاده از میکروپایتون عبارتند از:
- پیادهسازی آسان الگوریتمهای پیچیده
- توسعه کد با سرعت بالا
- قابلیت انتقال بالا
- عدم نیاز به یادگیری زبان جدید
- جامعه کاربری (community) بالا
- خوانایی بالا
- قابلیت توسعه بالا
- عیبیابی آسان
- قابلیت تعمیر و نگهداری بالا
- متن باز
تفاوت پایتون و میکروپایتون چیست
میکروپایتون بر اساس Python3 و برای استفاده در میکروکنترلرها توسعه داده شده است. یکی از تفاوتهای بین میکروپایتون و پایتون این است که میکروپایتون کمی کندتر از پایتون اجرا میشود اما مصرف RAM کمتری دارد. همچنین هنگام رخداد خطا، راهنماییهایی که پایتون برای رفع خطا به کدنویس می دهد دقیقتر است. اما تفتوتی که برای برنامه نویس محسوس است ماژولها و کتابخانهها هستند. ماژولهایی از پایتون که در میکروکنترلر استفاده نداشته حذف شدهاند و ماژولهایی مخصوص کار با میکروکنترلرها افزوده شده اند (مانند ماژول machine)
مقایسه میکروپایتون و C
در ابتدای مقاله گفتیم زبان رایج برای برنامهنویسی میکروکنترلرها زبان C است. در این بخش به صورت خلاصه مقایسهای بین این دو آوردهایم
میکروپایتون | C |
مفسری | کامپایلری |
سرعت اجرای پایین | سرعت اجرای بالا |
سرعت توسعه بالا | سرعت توسعه پایین |
کتابخانههای زیاد | کتابخانههای محدود |
سرعت یادگیری بالا | سرعت یادگیری پایین |
زبان سطح بالا | زبان سطح میانی |
جامعه کاربری بسیار زیاد | جامعه کاربری متوسط |
آبجکتیو | فانکشنال (فاقد مفهوم آبجکت) |
مصرف بالای منابع سختافزاری | مصرف بهینه از منابع سختافزاری |
فریم ور میکروپایتون چیست؟
فریمور میکروپایتون برنامهای است که برای یک میکروکنترلر خاص نوشته شده است و با پروگرام کردن آن روی میکروکنترلر، مفسر میکروپایتون، کتابخانههای میکروپایتون و همچنین محیط REPL روی میکروکنترلر نصب میشوند. در این مقاله وارد بحث محیط REPL نمیشویم اما به صورت خلاصه بدانید محیط REPL امکانی شبیه به ترمینال پایتون روی کامپیوتر است یعنی با تایپ هر دستور در کامپوتر آن دستور از طریق پورت سریال به میکروکنترلر ارسال شده، توسط مفسر میکروپایتون تفسیر شده و جواب آن از طریق پورت سریال روی کامپیتر برمیگردد و نمایش داده میشود. فریمور میکروپایتون هر نوع میکروکنترلر مختص همان میکروکنترلر است.
فریمور میکروپایتون معمولا به دو فرمت hex. و dfu. در دسترس است. اگر به فرمت hex. باشد باید با پروگرامر مخصوص آن میکروکنترلر روی آن پروگرام شود اما اگر به فرمت dfu. باشد نیاز به پروگرامر نیست و با استفاده از پورت سریال این فایل روی میکروکنترلر ریخته میشود.
میکروپایتون از کدام میکروکنترلرها پشتیبانی میکند؟
از نظر فنی هر میکروکنترلری که حداقل 256 کیلوبایت FLASH و 16 کیلوبایت RAM داشته باشد قادر به اجرای میکروپایتون است. اما هر میکروکنترلر فریمور میکروپایتون مخصوص به خود را دارد و باید این فریم ور برای میکروکنترلر مورد نظر شما ساخته شده باشد. از سه منبع میتوان به فریمورهای میکروپایتون دسترسی پیدا کرد:
- وبسایت رسمی میکروپایتون
- فریمرهای ساخته شده توسط افراد یا شرکتها که در وبسایت یا گیتهاب خود قرار دادهاند
- کامپایل فریمور توسط خود شما
انواع میکروکنترلرهایی که توسط میکروپایتون پشتیبانی میشوند بسیار زیاد است اما سریهای معروف آنها عبارتند از:
- STM32 (کمپانی ST)
- RP2040 (کمپانی Raspberry Pi)
- RP2350 (کمپانی Raspberry Pi)
- ESP8266 (کمپانی Espressif)
- ESP32 (کمپانی Espressif)
- NRF (کمپانی Nordic)
لیست میکروکنترلرهای پشتیبانی شده توسط میکروپایتون که در وبسایت رسمی میکروپایتون قرار داده شدهاند این آدرس قابل مشاهده است. دقت داشته باشید این لیست تنها مربوط به وبسایت رسمی میکروپایتون است و اگر گزینه مورد نظر شما در این لیست وجود ندارد ممکن است توسط اشخاص یا شرکتهای دیگر در اینترنت قرار داده شده باشد.
IDEهای میکروپایتون
IDE محیطی برای کدنویسی و عیبیابی است. در سادهترین حالت اگر شما برنامه پایتونی را در یک فایل متنی ساده بنویسید و با پسوند py. ذخیره کنید و سپس این فایل را از طریق پورت سریال روی میکروکنترلر بریزید برنامه شما اجرا خواهد شد. یعنی وجود IDE ضروری نیست اما وجود آن کمک بسیاری برای توسعه آسانتر و سریعتر کدها خواهد کرد. IDEهای میکروپایتون امکانات زیادی از جمله تکمیل خودکار کد، سیستم دیباگینگ، ترمینال محیط REPL، آپلود و دانلود فایل و … را در اختیار شما قرار میدهند. معروفترین IDEهای میکرپپایتون عبارتند از:
- uPyCraft
- Thonny
- VScode
uPyCraft محیط ساده و سبکی دارد و نسبت به دو IDE دیگر از امکانات کمتری برخوردار است. این IDE بیشتر برای مبتدیان توصیه میشود. تصویری از محیط uPyCraft در ادامه آورده شده است.
Thonny هم مانند uPyCraft محیط سادهای دارد و نرمافزار سبکی است اما امکانات بیشتری دارد و برای کار با میکروپایتون به شدت توصیه میشود. Thonny برای کدنویسی میکروپایتون نسبت به دو IDE دیگر محبوبتر بوده و جامعه کاربری بالایی دارد. اکثر آموزشهایی که رد سطح وب برای میکروپایتون وجود دارد از Thonny استفاده کرده اند. این نرمافزار محبوب را میتوانید از وبسایت رسمی آن در این آدرس دانلود کند. جالب است بدانید خود نرمافزار Thoony با پایتون نوشته شده و شما حتی می توانید با اجرای سورس کد آن توسط پایتون به این محیط دسترسی داشته باشید. محیط Thonny به این صورت است :
VScode که احتمالا نام آن را قبلا شنیدهاید یک IDE مختص میکروپایتون و یا پایتون نیست بلکه محیطی همه منظوره است که قدرت خود را از نصب افزونههایش بدست میآورد. این IDE محیط پیچیدهای دارد و برای افراد مبتدی توصیه نمیشود اما اگر تجربه کار با این IDE را دارید و دوست دارید میکروپایتون را درون آن تست کنید میتوانید با نصب افزونههای مورد نیاز این کار را انجام دهید.
با توضیحات این بخش اگر بخواهیم به این سوال پاسخ دهیم که بهترین IDE برای میکروپایتون چیست باید بگوییم در حال حاضر Thonney مناسبترین IDE برای میکروپایتون است.
مثالی از میکروپایتون
در این مقاله قصد آموزش میکروپایتون را نداریم اما برای آنکه چشم شما با کدهای میکروپایتون آشنا شود یک مثال ساده چشمکزن روی برد Raspberry Pi pico را برای شما قرار دادهایم.
from machine import Pin from utime import sleep_ms led = Pin(25, Pin.OUT) while True: led.toggle() sleep_ms(1000)
اگر دوست دارید توضیحات کد فوق را مطالعه کنید ودقیقا بدانید معنی این کدهای میکروپایتون چیست یا کدهای میکروپایتون بیشتری را ببینید میتوانید به مقاله راه اندازی پایه های رزبری پای پیکو مراجعه کنید.
در انتها
در این مقاله مواردی مانند اینکه میکروپایتون چیست، مزایا و معایب میکروپایتون چیست، فریمور میکروپایتون چیست، مقایسه C با میکروپایتون، معرفی IDEهای میکروپایتون و در نهایت ارایه مثالی از میکروپایتون مورد بحث قرار گرفت. بسیار خشنود خواهیم شد چنانچه تجربهای راجع به این موارد و یا نظری راجع به مقاله دارید را در بخش نظرات این مقاله با ما و دیگر دوستانتان به اشتراک بگذارید.
دیدگاهتان را بنویسید