اجرای پایتون روی ساعت هوشمند؛ احیای پروژه wasp-os روی سختافزار محدود PineTime — Python on My Wrist
خلاصه
این مقاله داستان احیای سیستمعامل مبتنی بر میکروپایتون wasp-os را روی ساعت هوشمند ارزانقیمت و متنباز PineTime روایت میکند. نویسنده توانسته این پروژه را به نسخه اصلی میکروپایتون منتقل کند، ابزارهای توسعه را مدرن سازد و برنامههای گرافیکی سبکی مانند تصاویر پیکسلی را روی حافظه بسیار محدود این ساعت اجرا کند.
ساعت هوشمند PineTime چیست؟
ساعت هوشمند PineTime محصولی ارزانقیمت، متنباز و قابل هک از شرکت Pine64 است. برخلاف Apple Watch که یک گجت همهفنحریف و گرانقیمت محسوب میشود، PineTime را باید بیشتر شبیه به یک ساعت کاسیو قابل برنامه نویسی با نمایشگر رنگی، بلوتوث، گامشمار و سنسور ضربان قلب دانست.
از نظر سختافزاری، این ساعت منابع بسیار محدودی در اختیار توسعهدهنده میگذارد:
- پردازنده ۶۴ مگاهرتزی ARM Cortex-M4
- حافظه رم ۶۴ کیلوبایتی (که پس از بارگذاری پشته بلوتوث و MicroPython، تنها حدود ۱۲ کیلوبایت برای اپلیکیشنها باقی میگذارد)
- ۵۱۲ کیلوبایت حافظه فلش برای فریمور و ۴ مگابایت فلش خارجی برای فایلها
- نمایشگر ۱.۳ اینچی با رزولوشن ۲۴۰ در ۲۴۰ پیکسل
چالشهای احیای سیستمعامل wasp-os
این ساعت به طور پیشفرض با سیستمعامل InfiniTime (نوشته شده با C++) عرضه میشود. اما برای علاقهمندان به زبان پایتون، سیستمعامل wasp-os که مبتنی بر MicroPython است گزینه جذابتری به شمار میرود. با این حال، این پروژه مدتی بود که غیرفعال مانده و از نسخه قدیمی MicroPython سال ۲۰۱۹ استفاده میکرد.
توسعهدهنده با بازگشت به این پروژه، تغییرات کلیدی زیر را برای مدرنسازی آن انجام داد:
- مدیریت وابستگیها با uv: ابزارهای پایتون حالا با ابزار مدرن uv مدیریت میشوند و فرآیند بیلد بسیار سادهتر شده است.
- فلش کردن سریعتر: بهروزرسانی فریمور از طریق بلوتوث حالا به جای ابزار منسوخ شده
gatttoolازbleakاستفاده میکند و زمان آن از ۸ دقیقه به حدود ۳.۵ دقیقه کاهش یافته است. - بهینهسازی رم: اصلاح مدیریت بلاکهای حافظه در فلش خارجی، رم آزاد دستگاه در زمان بوت را از ۷.۱ کیلوبایت به ۱۲.۴ کیلوبایت رساند.
- پایداری بیشتر: اضافه شدن Watchdog برای ریست کردن خودکار ساعت در زمان هنگ کردن و رفع باگهای مربوط به موتور ویبره و تاچ.
انتقال به نسخه اصلی MicroPython
بزرگترین دستاورد این پروژه، انتقال wasp-os از فورک قدیمی به نسخه اصلی (Mainline) MicroPython است. برای این کار، سه پولرکوئست (Pull Request) شامل کد بومی فریز شده، رفع باگ تخصیص PWM و گزینه زمان نمونهبرداری ADC به مخزن اصلی MicroPython ارسال و ادغام شدند. این تغییرات راه را برای انتشار نسخه MicroPython 1.30 هموار کرده است.
واچفیسها و اپلیکیشن اختصاصی Guido
به دلیل محدودیت شدید حافظه، نوشتن رابطهای کاربری نیازمند خلاقیت بالایی است:
- واچفیس هلندی: یک ساعت ساده برای نمایش روزهای هفته به زبان هلندی.
- واچفیس سبک رترو (8-bit): استفاده از فونت بسیار کوچک ۶ در ۷ پیکسل بدون نیاز به ذخیره فایلهای فونت حجیم، همراه با نمایشگر شمارشگر Unix epoch.
- اپلیکیشن Guido: برنامهای برای ادای احترام به Guido van Rossum (خالق پایتون) که تصویر پیکسلی او و لوگوهای پایتون، میکروپایتون و گروه لیدن را با استفاده از فرمت تصویری سفارشی (۱۶ رنگ با فشردهسازی RLE) به نمایش میگذارد. تمام این تصاویر در مجموع کمتر از ۱۲ کیلوبایت فضا اشغال میکنند.
چرا این پروژه برای مهندسان اهمیت دارد؟
این پروژه نشان میدهد که چگونه میتوان با تکنیکهای بهینهسازی دقیق، نرمافزارهای مدرن را روی سختافزارهای بسیار محدود (Micro-controllers با چند کیلوبایت رم) اجرا کرد. در بحثهای هکرنیوز نیز کاربران ضمن تمجید از تلاش برای انتقال کدها به نسخه اصلی میکروپایتون، به محدودیتهای شدید رم در این نسل از سختافزارها اشاره کرده و ابراز امیدواری کردند که نسل بعدی این ساعتها یعنی PineTime Pro با پردازنده قویتر و نمایشگر AMOLED، فضای بیشتری برای خلق ایدههای جالب فراهم کند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل