هذا هو مشروع MicroPython، الذي يهدف إلى تطبيق Python 3.x على وحدات التحكم الدقيقة والأنظمة الصغيرة المدمجة. يمكنك العثور على الموقع الرسمي على micropython.org.
تحذير: هذا المشروع في مرحلة تجريبية ويخضع لتغييرات في قاعدة التعليمات البرمجية، بما في ذلك تغييرات الاسم على مستوى المشروع وتغييرات واجهة برمجة التطبيقات.
ينفذ MicroPython بناء جملة Python 3.4 بالكامل (بما في ذلك الاستثناءات، with
، yield from
، وما إلى ذلك، بالإضافة إلى الكلمات الرئيسية async
/ await
من Python 3.5 وبعض الميزات المحددة من الإصدارات الأحدث). يتم توفير أنواع البيانات الأساسية التالية: str
(بما في ذلك دعم Unicode الأساسي) و bytes
و bytearray
و tuple
و list
و dict
و set
و frozenset
و array.array
و collections.namedtuple
والفئات والمثيلات. تتضمن الوحدات المضمنة os
و sys
و time
و re
و struct
وما إلى ذلك. تدعم بعض المنافذ وحدة _thread
(تعدد مؤشرات الترابط)، و socket
و ssl
للتواصل، و asyncio
. لاحظ أنه يتم تنفيذ مجموعة فرعية فقط من وظائف Python 3 لأنواع البيانات والوحدات النمطية.
يمكن لـ MicroPython تنفيذ البرامج النصية في شكل مصدر نصي (ملفات .py) أو من كود بايت مجمع مسبقًا (ملفات .mpy)، في كلتا الحالتين إما من نظام ملفات على الجهاز أو "مجمد" في ملف MicroPython القابل للتنفيذ.
يوفر MicroPython أيضًا مجموعة من الوحدات الخاصة بـ MicroPython للوصول إلى الوظائف والأجهزة الطرفية الخاصة بالأجهزة مثل GPIO، وTimers، وADC، وDAC، وPWM، وSPI، وI2C، وCAN، وBluetooth، وUSB.
راجع الوثائق عبر الإنترنت للحصول على مرجع واجهة برمجة التطبيقات (API) ومعلومات حول استخدام MicroPython ومعلومات حول كيفية تنفيذها.
نحن نستخدم مناقشات GitHub كمنتدى لنا، وDiscord للدردشة. هذه أماكن رائعة لطرح الأسئلة والنصائح من المجتمع أو لمناقشة مشاريعك المستندة إلى MicroPython.
بالنسبة للأخطاء وطلبات الميزات، يرجى إثارة مشكلة واتباع النماذج الموجودة هناك.
للحصول على معلومات حول MicroPython pyboard، اللوحة المدعومة رسميًا من حملة Kickstarter الأصلية، راجع المخططات والمثبتات والوثائق.
MicroPython هو مشروع مفتوح المصدر ويرحب بالمساهمات. لكي تكون منتجًا، يرجى التأكد من اتباع إرشادات المساهمين واتفاقيات المدونة. لاحظ أن MicroPython مرخص بموجب ترخيص MIT، ويجب أن تتبع جميع المساهمات هذا الترخيص.
يحتوي هذا المستودع على المكونات التالية:
py/ - تطبيق Python الأساسي، بما في ذلك المترجم ووقت التشغيل والمكتبة الأساسية.
mpy-cross/ - مترجم MicroPython المتقاطع الذي يُستخدم لتحويل البرامج النصية إلى رمز ثانوي مُجمَّع مسبقًا.
ports/ - رمز خاص بالمنصة لمختلف المنافذ والبنيات التي يعمل عليها MicroPython.
lib/ - وحدات فرعية للتبعيات الخارجية.
الاختبارات/ - إطار الاختبار والبرامج النصية للاختبار.
docs/ - وثائق المستخدم بتنسيق Sphinx reStructuredText. يتم استخدام هذا لإنشاء الوثائق عبر الإنترنت.
extmod/ - وحدات إضافية (غير أساسية) تم تنفيذها في لغة C.
Tools/ -- أدوات متنوعة، بما في ذلك الوحدة pyboard.py.
أمثلة/ - بعض الأمثلة على نصوص بايثون.
يتم استخدام "make" لبناء المكونات، أو "gmake" على الأنظمة المستندة إلى BSD. ستحتاج أيضًا إلى bash وgcc وPython 3.3+ المتوفر كأمر python3
(إذا كان نظامك يحتوي على Python 2.7 فقط، فقم باستدعاء make باستخدام الخيار الإضافي PYTHON=python2
). تستخدم بعض المنافذ (rp2 وesp32) أيضًا CMake.
يعمل MicroPython على مجموعة واسعة من وحدات التحكم الدقيقة، وكذلك على أنظمة Unix (بما في ذلك Linux وBSD وmacOS وWSL) وأنظمة Windows.
يمكن أن تكون أهداف وحدة التحكم الدقيقة صغيرة مثل 256 كيلو بايت فلاش + 16 كيلو بايت من ذاكرة الوصول العشوائي، على الرغم من أن الأجهزة التي تحتوي على 512 كيلو بايت على الأقل من الفلاش + 128 كيلو بايت من ذاكرة الوصول العشوائي تسمح بتجربة أكثر اكتمالاً بكثير.
تسمح منافذ Unix وWindows بتطوير واختبار MicroPython نفسه، بالإضافة إلى توفير بديل خفيف الوزن لـ CPython على هذه الأنظمة الأساسية (خاصة على أنظمة Linux المدمجة).
يوفر المنفذ "الحد الأدنى" مثالاً لمنفذ MicroPython الأساسي جدًا ويمكن تجميعه كمنفذ Linux ثنائي مستقل وكذلك لـ ARM Cortex M4. ابدأ بهذا إذا كنت تريد نقل MicroPython إلى وحدة تحكم دقيقة أخرى. بالإضافة إلى ذلك، يعد المنفذ "الذراع العاري" مثالًا على الحد الأدنى المطلق من التكوين، ويستخدم لتتبع حجم التعليمات البرمجية لوقت التشغيل الأساسي والجهاز الافتراضي.
بالإضافة إلى ذلك، يتم توفير المنافذ التالية في هذا المستودع:
cc3200 - تكساس إنسترومنتس CC3200 (بما في ذلك PyCom WiPy).
esp32 - Espressif ESP32 SoC (بما في ذلك ESP32S2، ESP32S3، ESP32C3، ESP32C6).
esp8266--Espressif ESP8266 SoC.
mimxrt - NXP m.iMX RT (بما في ذلك Teensy 4.x).
nrf - أشباه الموصلات الشمالية nRF51 وnRF52.
pic16bit - رقاقة الموافقة المسبقة عن علم 16 بت.
powerpc - IBM PowerPC (بما في ذلك Microwatt)
qemu - الهدف الذي تمت محاكاته على أساس QEMU (للاختبار)
رينيساس را - عائلة رينيساس RA.
rp2 - Raspberry Pi RP2040 (بما في ذلك Pico وPico W).
samd - الرقاقة الدقيقة (أتميل سابقًا) SAMD21 وSAMD51.
stm32 - عائلة STMicroelectronics STM32 (بما في ذلك F0 وF4 وF7 وG0 وG4 وH7 وL0 وL4 وWB)
webassembly - منفذ Emscripten الذي يستهدف المتصفحات وNodeJS.
زفير - زفير RTOS.
تتطلب معظم المنافذ إنشاء مترجم MicroPython أولاً. يتم استخدام هذا البرنامج، المسمى mpy-cross، لتجميع نصوص Python مسبقًا إلى ملفات .mpy والتي يمكن بعد ذلك تضمينها (تجميدها) في البرنامج الثابت/القابل للتنفيذ لمنفذ. لبناء استخدام mpy-cross:
$ cd mpy-cross $ make
لا يحتوي MicroPython VM الأساسي ووقت التشغيل على تبعيات خارجية، ولكن قد يعتمد منفذ معين على برامج تشغيل تابعة لجهات خارجية أو تراخيص وصول الأجهزة (HALs) الخاصة بالموردين. يتضمن هذا المستودع عدة وحدات فرعية مرتبطة بهذه التبعيات الخارجية. قبل تجميع منفذ معين، استخدم
$ cd ports/name $ make submodules
لضمان تهيئة كافة الوحدات الفرعية المطلوبة.