이것은 마이크로컨트롤러와 소형 임베디드 시스템에 Python 3.x를 구현하는 것을 목표로 하는 MicroPython 프로젝트입니다. 공식 웹사이트는 micropython.org에서 찾을 수 있습니다.
경고: 이 프로젝트는 베타 단계에 있으며 프로젝트 전체의 이름 변경 및 API 변경을 포함하여 코드 기반이 변경될 수 있습니다.
MicroPython은 전체 Python 3.4 구문(예외 포함, with
, yield from
등, Python 3.5의 추가 async
/ await
키워드 및 이후 버전의 일부 선택 기능 포함)을 구현합니다. 제공되는 핵심 데이터 유형은 str
(기본 유니코드 지원 포함), 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은 또한 GPIO, 타이머, ADC, DAC, PWM, SPI, I2C, CAN, Bluetooth 및 USB와 같은 하드웨어 특정 기능 및 주변 장치에 액세스할 수 있는 MicroPython 특정 모듈 세트를 제공합니다.
API 참조, MicroPython 사용에 대한 정보, 구현 방법에 대한 정보는 온라인 설명서를 참조하세요.
우리는 GitHub 토론을 포럼으로 사용하고 Discord를 채팅으로 사용합니다. 이곳은 커뮤니티에 질문과 조언을 하거나 MicroPython 기반 프로젝트에 대해 논의할 수 있는 좋은 장소입니다.
버그 및 기능 요청의 경우 문제를 제기하고 해당 템플릿을 따르세요.
원래 Kickstarter 캠페인에서 공식적으로 지원되는 보드인 MicroPython pyboard에 대한 자세한 내용은 회로도, 핀아웃 및 설명서를 참조하세요.
MicroPython은 오픈 소스 프로젝트이며 기여를 환영합니다. 생산성을 높이려면 기여자 지침과 코드 규칙을 따르십시오. MicroPython은 MIT 라이선스에 따라 라이선스가 부여되며 모든 기여는 이 라이선스를 따라야 합니다.
이 저장소에는 다음 구성 요소가 포함되어 있습니다.
py/ - 컴파일러, 런타임, 핵심 라이브러리를 포함한 핵심 Python 구현입니다.
mpy-cross/ -- 스크립트를 미리 컴파일된 바이트코드로 변환하는 데 사용되는 MicroPython 크로스 컴파일러입니다.
ports/ -- MicroPython이 실행되는 다양한 포트 및 아키텍처에 대한 플랫폼별 코드입니다.
lib/ -- 외부 종속성을 위한 하위 모듈입니다.
테스트/ -- 테스트 프레임워크 및 테스트 스크립트.
docs/ -- Sphinx reStructuredText 형식의 사용자 문서입니다. 이는 온라인 문서를 생성하는 데 사용됩니다.
extmod/ -- C로 구현된 추가(비핵심) 모듈입니다.
tools/ -- pyboard.py 모듈을 포함한 다양한 도구.
예제/ -- 몇 가지 Python 스크립트 예제입니다.
"make"는 구성 요소를 빌드하는 데 사용되거나 BSD 기반 시스템에서는 "gmake"입니다. 또한 python3
명령으로 사용할 수 있는 bash, gcc 및 Python 3.3+가 필요합니다(시스템에 Python 2.7만 있는 경우 추가 옵션 PYTHON=python2
사용하여 make를 호출합니다). 일부 포트(rp2 및 esp32)에서는 추가로 CMake를 사용합니다.
MicroPython은 Unix 계열(Linux, BSD, macOS, WSL 포함) 및 Windows 시스템뿐만 아니라 광범위한 마이크로 컨트롤러에서 실행됩니다.
마이크로컨트롤러 타겟은 256kiB 플래시 + 16kiB RAM만큼 작을 수 있지만, 최소 512kiB 플래시 + 128kiB RAM을 갖춘 장치는 훨씬 더 모든 기능을 갖춘 경험을 허용합니다.
Unix 및 Windows 포트를 사용하면 MicroPython 자체를 개발 및 테스트할 수 있을 뿐만 아니라 이러한 플랫폼(특히 임베디드 Linux 시스템)에서 CPython에 대한 경량 대안을 제공할 수 있습니다.
"최소" 포트는 매우 기본적인 MicroPython 포트의 예를 제공하며 독립형 Linux 바이너리 및 ARM Cortex M4용으로 컴파일될 수 있습니다. MicroPython을 다른 마이크로컨트롤러로 포팅하려면 이것부터 시작하세요. 또한 "bare-arm" 포트는 절대 최소 구성의 예이며 코어 런타임 및 VM의 코드 크기를 추적하는 데 사용됩니다.
또한 이 저장소에는 다음 포트가 제공됩니다.
cc3200 - Texas Instruments CC3200(PyCom WiPy 포함).
esp32 - Espressif ESP32 SoC(ESP32S2, ESP32S3, ESP32C3, ESP32C6 포함).
esp8266 -- Espressif ESP8266 SoC.
mimxrt -- NXP m.iMX RT(Teensy 4.x 포함).
nrf - Nordic Semiconductor nRF51 및 nRF52.
pic16bit -- 마이크로칩 PIC 16비트.
powerpc -- IBM PowerPC(마이크로와트 포함)
qemu -- QEMU 기반 에뮬레이트 대상(테스트용)
renesas-ra -- 르네사스 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 포함)
웹 어셈블리 -- 브라우저 및 NodeJS를 대상으로 하는 Emscripten 포트입니다.
제퍼 - 제퍼 RTOS.
대부분의 포트에서는 MicroPython 크로스 컴파일러를 먼저 빌드해야 합니다. mpy-cross라고 하는 이 프로그램은 Python 스크립트를 .mpy 파일로 사전 컴파일하는 데 사용됩니다. 이 파일은 포트의 펌웨어/실행 파일에 포함(동결)될 수 있습니다. Mpy-cross를 빌드하려면 다음을 사용하세요.
$ cd mpy-cross $ make
핵심 MicroPython VM 및 런타임에는 외부 종속성이 없지만 지정된 포트는 타사 드라이버 또는 공급업체 HAL에 따라 달라질 수 있습니다. 이 저장소에는 이러한 외부 종속성에 연결되는 여러 하위 모듈이 포함되어 있습니다. 특정 포트를 컴파일하기 전에 다음을 사용하십시오.
$ cd ports/name $ make submodules
필요한 모든 하위 모듈이 초기화되었는지 확인합니다.