นี่คือโครงการ MicroPython ซึ่งมีจุดมุ่งหมายเพื่อนำ Python 3.x ไปใช้งานบนไมโครคอนโทรลเลอร์และระบบฝังตัวขนาดเล็ก คุณสามารถค้นหาเว็บไซต์อย่างเป็นทางการได้ที่ micropython.org
คำเตือน: โครงการนี้อยู่ในช่วงเบต้าและอาจมีการเปลี่ยนแปลงของรหัสฐาน รวมถึงการเปลี่ยนชื่อทั้งโครงการและการเปลี่ยนแปลง API
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 Discussions เป็นฟอรัมของเรา และใช้ Discord สำหรับการแชท สถานที่เหล่านี้เป็นสถานที่ที่ดีเยี่ยมในการถามคำถามและคำแนะนำจากชุมชน หรือเพื่อหารือเกี่ยวกับโปรเจ็กต์ที่ใช้ MicroPython ของคุณ
สำหรับข้อบกพร่องและการร้องขอคุณสมบัติ โปรดแจ้งปัญหาและปฏิบัติตามเทมเพลตที่นั่น
สำหรับข้อมูลเกี่ยวกับ MicroPython pyboard ซึ่งเป็นบอร์ดที่ได้รับการสนับสนุนอย่างเป็นทางการจากแคมเปญ Kickstarter ดั้งเดิม โปรดดูแผนผังและ pinouts และเอกสารประกอบ
MicroPython เป็นโครงการโอเพ่นซอร์สและยินดีรับการมีส่วนร่วม เพื่อให้ได้ประสิทธิผล โปรดแน่ใจว่าได้ปฏิบัติตามหลักเกณฑ์ของผู้ร่วมให้ข้อมูลและอนุสัญญาหลักปฏิบัติ โปรดทราบว่า MicroPython ได้รับอนุญาตภายใต้ใบอนุญาต MIT และการสนับสนุนทั้งหมดควรเป็นไปตามใบอนุญาตนี้
พื้นที่เก็บข้อมูลนี้มีส่วนประกอบต่อไปนี้:
py/ -- การใช้งาน Python หลัก รวมถึงคอมไพลเลอร์ รันไทม์ และไลบรารีหลัก
mpy-cross/ -- คอมไพเลอร์ข้าม MicroPython ซึ่งใช้ในการเปลี่ยนสคริปต์ให้เป็นไบต์โค้ดที่คอมไพล์แล้ว
ports/ -- โค้ดเฉพาะแพลตฟอร์มสำหรับพอร์ตและสถาปัตยกรรมต่างๆ ที่ MicroPython ทำงาน
lib/ -- โมดูลย่อยสำหรับการพึ่งพาภายนอก
ทดสอบ/ -- กรอบการทดสอบและสคริปต์ทดสอบ
docs/ -- เอกสารสำหรับผู้ใช้ในรูปแบบ Sphinx reStructuredText ใช้เพื่อสร้างเอกสารออนไลน์
extmod/ -- โมดูลเพิ่มเติม (ไม่ใช่คอร์) ที่ใช้งานใน C.
tools/ -- เครื่องมือต่างๆ รวมถึงโมดูล pyboard.py
examples/ -- ตัวอย่างสคริปต์ Python บางส่วน
"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
เป้าหมายของไมโครคอนโทรลเลอร์อาจมีขนาดเล็กถึง 256kiB flash + 16kiB RAM แม้ว่าอุปกรณ์ที่มีแฟลชอย่างน้อย 512kiB + RAM 128kiB จะให้ประสบการณ์การใช้งานที่มีคุณสมบัติครบถ้วนมากขึ้นก็ตาม
พอร์ต Unix และ Windows ช่วยให้ทั้งการพัฒนาและการทดสอบ MicroPython เอง รวมทั้งเป็นทางเลือกที่มีน้ำหนักเบาสำหรับ CPython บนแพลตฟอร์มเหล่านี้ (โดยเฉพาะบนระบบ Linux แบบฝัง)
พอร์ต "ขั้นต่ำ" เป็นตัวอย่างหนึ่งของพอร์ต MicroPython พื้นฐานมาก และสามารถคอมไพล์เป็นทั้งไบนารี Linux แบบสแตนด์อโลนและสำหรับ ARM Cortex M4 เริ่มต้นด้วยสิ่งนี้หากคุณต้องการพอร์ต MicroPython ไปยังไมโครคอนโทรลเลอร์ตัวอื่น นอกจากนี้ พอร์ต "bare-arm" ยังเป็นตัวอย่างของการกำหนดค่าขั้นต่ำที่แน่นอน และใช้เพื่อติดตามขนาดโค้ดของรันไทม์หลักและ VM
นอกจากนี้ ยังมีพอร์ตต่อไปนี้ไว้ในที่เก็บนี้:
cc3200 -- Texas Instruments CC3200 (รวมถึง PyCom WiPy)
esp32 -- Espressif ESP32 SoC (รวมถึง ESP32S2, ESP32S3, ESP32C3, ESP32C6)
esp8266 -- เอสเพรสซิฟ ESP8266 SoC
mimxrt -- NXP m.iMX RT (รวมถึง Teensy 4.x)
nrf - นอร์ดิกเซมิคอนดักเตอร์ nRF51 และ nRF52
pic16bit -- ไมโครชิป PIC 16 บิต
powerpc -- IBM PowerPC (รวมถึงไมโครวัตต์)
qemu -- เป้าหมายจำลองที่ใช้ QEMU (สำหรับการทดสอบ)
renesas-ra - ครอบครัว Renesas RA
rp2 -- Raspberry Pi RP2040 (รวมถึง Pico และ Pico W)
samd -- Microchip (เดิมชื่อ Atmel) SAMD21 และ SAMD51
stm32 -- ตระกูล STMicroelectronics STM32 (รวมถึง F0, F4, F7, G0, G4, H7, L0, L4, WB)
webassembly - พอร์ต Emscripten ที่กำหนดเป้าหมายเบราว์เซอร์และ NodeJS
เซเฟอร์ -- Zephyr RTOS
พอร์ตส่วนใหญ่ต้องการให้สร้าง cross-compiler MicroPython ก่อน โปรแกรมนี้เรียกว่า mpy-cross ใช้เพื่อคอมไพล์สคริปต์ Python ล่วงหน้าเป็นไฟล์ .mpy ซึ่งสามารถรวม (แช่แข็ง) ลงในเฟิร์มแวร์/ปฏิบัติการสำหรับพอร์ตได้ หากต้องการสร้างการใช้งาน mpy-cross:
$ cd mpy-cross $ make
MicroPython VM หลักและรันไทม์ไม่มีการพึ่งพาภายนอก แต่พอร์ตที่กำหนดอาจขึ้นอยู่กับไดรเวอร์ของบริษัทอื่นหรือ HAL ของผู้จำหน่าย พื้นที่เก็บข้อมูลนี้มีโมดูลย่อยหลายโมดูลที่เชื่อมโยงกับการขึ้นต่อกันภายนอกเหล่านี้ ก่อนที่จะรวบรวมพอร์ตที่กำหนด ให้ใช้
$ cd ports/name $ make submodules
เพื่อให้แน่ใจว่าโมดูลย่อยที่จำเป็นทั้งหมดได้รับการเตรียมใช้งานแล้ว