MicroPython شروع


پایتون Python نوعی زبان برنامه نویسی سطح بالا است. در سال های اخیر توجه بسیاری از توسعه دهندگان را به خود جلب کرده است. زمانی که قصد برنامه ریزی میکروکنترلرها را با زبان پایتون داریم به دلیل قدرت پردازش و سرعت پردازش دیگر زبان‌های برنامه نویسی، پایتون پیشنهاد نمی‌شود. اما با معرفی میکروپایتون که یک پلتفرم open source از python 3 است؛ همچنین شامل کتابخانه‌های استاندارد برای اجرا بر روی میکروکنترلرهایی با ROM و RAM محدود، بهینه شده‌اند.اموزش مایکروپایتون

زبان میکروپایتون نسخه‌ای از زبان پایتون با سرعت پردازش بسیار بالا است که می‌توان از آن برای ارتباط با میکروکنترلرهایی مانند ESP8266 , ESP32 , Wipy , pyboard , MicroBit استفاده کرد.


میکرو پایتون MicroPython


تا به امروز زبان برنامه نویسی پایتون Python، زبانی همه منظوره و قدرتمند معرفی شده که البته همینطور است. اما در مواردی این زبان برنامه نویسی می‌تواند انتخاب اول برای پروژه نباشد. برای مثال در بحث نرم افزارهای Embedded ، زبان C همواره در صدر جدول می‌باشد. این موضوع دلیلی شد برای متولد شدن زبان برنامه نویسی MicroPython تا جای خالی پایتون را در این موارد پر کند.


تفاوت‌های CPython و MicroPython


در ابتدا برای دوستانی که اطلاع ندارند، Cpython3 در واقع پیاده سازی پایتون نسخه 3 محسوب می‌شود. از تفاوت‌های مهم این دو می‌توان به مدیریت حافظه اشاره کرد که به جای Reference Counting از روش Garbage Counting استفاده می‌شود. Garbage Counting : نوعی مدیریت حافظه است. در این روش قطعات کوچک حافظه که به کار گرفته شده‌اند و دیگر مورد نیاز نیستند را حذف و سپس مرتب سازی می‌کند.


شروع کار با MicroPython


برای شروع ابتدا برد Pyboard را بررسی خواهیم کرد. برد Pyboard یکی از برجسته‌ترین بردهای توسعه برای برنامه نویسی MicroPython تا به امروز است. همچنین برای این منظور از بردهای node MCU هم استفاده می‌شود. من در این سری از آموزش‌های مایکروپایتون از pyboard v1.1 استفاده خواهم کرد. در ادامه توضیحاتی درباره قابلیت‌ها و امکانات این برد خواهم داد. به شماتیک برد توجه کنید.

اموزش مایکروپایتون

همینطور که در تصویر بالا ملاحظه می کنید، در این برد از STM32 F4 استفاده شده و دارای CPU Cortex-F4F است. همچنین حافظه فلش در نظر گرفته شده در این برد 1024kB است. دارای ورودی MicroUSB و همچنین ورودی micro SD است. یکی از امکانات برد PyBoard که باید بگویم ویژگی مورد علاقه من هم هست وجود یک شتاب سنج داخلی از نوع MMA7660 هست. یادتان می‌آید وقتی با آردوینو کار می کردید حتما باید از یک سری ماژول مانند MPU6050 یا همین MMA7660 استفاده می‌کردید؟ حالا به لطف pyboard یکی همیشه همراهتان خواهد بود. دو عدد سوییچ با نام‌های USR و RST روی برد موجود است. که برای فلش کردن و ریست کردن برد و همینطور Boot کردن برد کارایی دارند.  چهار LED به رنگ‌های قرمز، سبز، زرد و آبی برای تعیین وضعیت برد قرار داده شده است به عنوان مثال در هنگام پروگرام شدن برد ال ای دی قرمز روشن می‌شود. همچنین این ال ای دی ها در دسته internal LEDها هستند و در کد نویسی می‌توانیم آن‌ها را فعال یا غیرفعال کنیم.

رنج ولتاژ ورودی برد از 3.6 تا 16 ولت می باشد و همچنین جریان خروجی برد 250mA می باشد. در مجموع 30 عدد پین IO دارد که شامل PWM , A/D , D/A می‌باشد. همچنین از UART , I2C , SPI پشتیبانی می‌کند.


اولین پروژه میکروپایتون


برای اولین پروژه مثل همیشه قصد داریم با استفاده از Pyboard یک LED را کنترل کنیم. تا به صورت کلی با نحوه کار برد آشنا بشویم. در آموزش‌های آینده به راه اندازی ماژول‌های مختلف می‌پردازیم. ابتدا پس از متصل کردن برد به لپ تاپ یا … حافظه فلش pyBoard برای ما نمایش داده می‌شود. که دارای چند فایل مربوط به frameware مربوطه هست.

برای پروگرام کردن برد باید از فایل main استفاده کنیم. کدنویسی‌ها در این فایل صورت خواهد گرفت. در این پروژه کوچک از پایه X1 در pyboard برای اعمال PWM به LED و در نتیحه راه اندازی آن استفاده خواهیم کرد. به این صورت که پایه X1 از طریق یک مقاوت به پایه آنود یا همان مثبت LED و همچنین کاتود یا همان منفی LED به GND برد متصل می‌شود. مانند تصویر زیر میتوانید اتصالات را برقرار کنید.


وسایل مورد نیاز


مقاومت 100 اهم

سیم بردبرد

یک عدد LED

Pyboard v1.1


تحلیل کد میکروپایتون PyBoard


در دو خط اول کتابخانه های مورد نظر را فراخوانی می کنیم. با توجه به نقشه پایه ها که پیش تر مشاهده کردید پایه X1 به کانال 1 از تایمر 5 متصل شده که در کد به همین روال یک آبجکت Timer برای تایمر 5 و یک آبجکت TimerChannel1 برای کانال1 می سازیم.

برای کنترل روشنایی LED از PWM استفاده می کنیم. در این کد با تایمر 100Hz هر حلقه پالس 0.01 ثانیه یا 10ms طول خواهد کشید. در ادامه اگر بخواهیم روشنایی LED از ایتدای شروع کد به حالت خاموش و به تدریج روشن و روشنایی آن افزایش پیدا کند از کد زیر استفاده می کنیم.

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

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