Ini adalah proyek MicroPython, yang bertujuan untuk menerapkan implementasi Python 3.x pada mikrokontroler dan sistem tertanam kecil. Anda dapat menemukan situs resminya di micropython.org.
PERINGATAN: proyek ini masih dalam tahap beta dan dapat mengalami perubahan basis kode, termasuk perubahan nama seluruh proyek dan perubahan API.
MicroPython mengimplementasikan seluruh sintaksis Python 3.4 (termasuk pengecualian, with
, yield from
, dll., dan tambahan kata kunci async
/ await
dari Python 3.5 dan beberapa fitur pilihan dari versi yang lebih baru). Tipe data inti berikut disediakan: str
(termasuk dukungan dasar Unicode), bytes
, bytearray
, tuple
, list
, dict
, set
, frozenset
, array.array
, collections.namedtuple
, kelas dan instance. Modul bawaan termasuk os
, sys
, time
, re
, dan struct
, dll. Beberapa port memiliki dukungan untuk modul _thread
(multithreading), socket
dan ssl
untuk jaringan, dan asyncio
. Perhatikan bahwa hanya sebagian dari fungsionalitas Python 3 yang diimplementasikan untuk tipe data dan modul.
MicroPython dapat mengeksekusi skrip dalam bentuk sumber tekstual (file .py) atau dari bytecode yang telah dikompilasi sebelumnya (file .mpy), baik dari sistem file pada perangkat atau "dibekukan" ke dalam executable MicroPython.
MicroPython juga menyediakan serangkaian modul khusus MicroPython untuk mengakses fungsionalitas dan periferal khusus perangkat keras seperti GPIO, Timer, ADC, DAC, PWM, SPI, I2C, CAN, Bluetooth, dan USB.
Lihat dokumentasi online untuk referensi API dan informasi tentang penggunaan MicroPython dan informasi tentang cara penerapannya.
Kami menggunakan Diskusi GitHub sebagai forum kami, dan Discord untuk mengobrol. Ini adalah tempat yang bagus untuk mengajukan pertanyaan dan saran dari komunitas atau mendiskusikan proyek berbasis MicroPython Anda.
Untuk bug dan permintaan fitur, silakan ajukan masalah dan ikuti template di sana.
Untuk informasi tentang papan luncur MicroPython, papan yang didukung secara resmi dari kampanye Kickstarter asli, lihat skema, pinout, dan dokumentasi.
MicroPython adalah proyek sumber terbuka dan menerima kontribusi. Agar produktif, pastikan untuk mengikuti Pedoman Kontributor dan Konvensi Kode. Perhatikan bahwa MicroPython dilisensikan di bawah lisensi MIT, dan semua kontribusi harus mengikuti lisensi ini.
Repositori ini berisi komponen-komponen berikut:
py/ -- implementasi inti Python, termasuk compiler, runtime, dan pustaka inti.
mpy-cross/ -- kompiler silang MicroPython yang digunakan untuk mengubah skrip menjadi bytecode yang telah dikompilasi sebelumnya.
port/ -- kode khusus platform untuk berbagai port dan arsitektur tempat MicroPython dijalankan.
lib/ -- submodul untuk dependensi eksternal.
tes/ -- kerangka pengujian dan skrip pengujian.
docs/ -- dokumentasi pengguna dalam format Sphinx reStructuredText. Ini digunakan untuk menghasilkan dokumentasi online.
extmod/ -- modul tambahan (non-inti) yang diimplementasikan di C.
tools/ -- berbagai alat, termasuk modul python.py.
contoh/ -- beberapa contoh skrip Python.
"make" digunakan untuk membangun komponen, atau "gmake" pada sistem berbasis BSD. Anda juga memerlukan bash, gcc, dan Python 3.3+ yang tersedia sebagai perintah python3
(jika sistem Anda hanya memiliki Python 2.7 maka aktifkan make dengan opsi tambahan PYTHON=python2
). Beberapa port (rp2 dan esp32) juga menggunakan CMake.
MicroPython berjalan pada berbagai mikrokontroler, serta pada sistem mirip Unix (termasuk Linux, BSD, macOS, WSL) dan Windows.
Target mikrokontroler bisa sekecil 256kiB flash + 16kiB RAM, meskipun perangkat dengan setidaknya 512kiB flash + 128kiB RAM memungkinkan pengalaman berfitur lebih lengkap.
Port Unix dan Windows memungkinkan pengembangan dan pengujian MicroPython itu sendiri, serta menyediakan alternatif ringan untuk CPython pada platform ini (khususnya pada sistem Linux tertanam).
Port "minimal" memberikan contoh port MicroPython yang sangat mendasar dan dapat dikompilasi baik sebagai biner Linux mandiri maupun untuk ARM Cortex M4. Mulailah dengan ini jika Anda ingin mem-porting MicroPython ke mikrokontroler lain. Selain itu, port "bare-arm" adalah contoh konfigurasi minimum absolut, dan digunakan untuk melacak ukuran kode runtime inti dan VM.
Selain itu, port berikut disediakan di repositori ini:
cc3200 -- Texas Instruments CC3200 (termasuk PyCom WiPy).
esp32 -- SoC Espressif ESP32 (termasuk ESP32S2, ESP32S3, ESP32C3, ESP32C6).
esp8266 -- Espresif ESP8266 SoC.
mimxrt -- NXP m.iMX RT (termasuk Teensy 4.x).
nrf -- Semikonduktor Nordik nRF51 dan nRF52.
pic16bit -- Mikrochip PIC 16-bit.
powerpc -- IBM PowerPC (termasuk Microwatt)
qemu -- target emulasi berbasis QEMU (untuk pengujian)
renesas-ra -- keluarga Renesas RA.
rp2 -- Raspberry Pi RP2040 (termasuk Pico dan Pico W).
samd -- Microchip (sebelumnya Atmel) SAMD21 dan SAMD51.
stm32 -- Keluarga STMicroelectronics STM32 (termasuk F0, F4, F7, G0, G4, H7, L0, L4, WB)
webassembly -- Port emscripten yang menargetkan browser dan NodeJS.
angin sepoi-sepoi -- Angin sepoi-sepoi RTOS.
Sebagian besar port memerlukan kompiler silang MicroPython untuk dibuat terlebih dahulu. Program ini, disebut mpy-cross, digunakan untuk melakukan pra-kompilasi skrip Python ke file .mpy yang kemudian dapat dimasukkan (dibekukan) ke dalam firmware/dapat dieksekusi untuk suatu port. Untuk membangun penggunaan mpy-cross:
$ cd mpy-cross $ make
VM dan runtime MicroPython inti tidak memiliki ketergantungan eksternal, tetapi port tertentu mungkin bergantung pada driver pihak ketiga atau HAL vendor. Repositori ini mencakup beberapa submodul yang terhubung ke dependensi eksternal ini. Sebelum mengkompilasi port tertentu, gunakan
$ cd ports/name $ make submodules
untuk memastikan bahwa semua submodul yang diperlukan telah diinisialisasi.