마이크로피톤

MicroPython
마이크로피톤
MicroPython new logo.svg
개발자데미안 P.조지
초기 릴리즈2014년 5월 3일, 8년 전(2014-05-03)
안정된 릴리스
1.19[1] / 2022년 6월 16일; 49일 (2022년 6월 16일)
저장소
기입처C
플랫폼ARM Cortex-M, STM32, ESP8266, ESP32, 16비트 PIC, Unix, Microsoft Windows, Zephyr, JavaScript, RP2040
면허증.MIT 라이선스[2]
웹 사이트micropython.org

MicroPython은 C로 작성된 Python 3과 대부분 호환되는 프로그래밍 언어소프트웨어 구현으로, 마이크로 [3][4]컨트롤러에서 실행되도록 최적화되어 있습니다.

MicroPython은 Python 컴파일러에서 바이트 코드로, 그리고 그 바이트 코드의 런타임 인터프리터로 구성됩니다.지원되는 명령을 즉시 실행하는 대화형 프롬프트(REP)가 사용자에게 표시됩니다.여기에는 핵심 Python 라이브러리가 포함되어 있습니다.MicroPython에는 프로그래머가 낮은 수준의 [5]하드웨어에 접근할 수 있는 모듈이 포함되어 있습니다.

프로젝트의 소스 코드는 MIT 라이선스[6]따라 GitHub에서 사용할 수 있습니다.

역사

MicroPython은 호주의 프로그래머이자 이론 물리학자 Damien George가 2013년 [7]Kickstarter 지원 캠페인에 성공한 후 처음 만들었습니다.오리지널 Kickstarter 캠페인은 STM32F4를 탑재한 개발 보드 "pyboard"를 탑재한 MicroPython을 출시했지만 MicroPython은 다수의 ARM 기반 [8]아키텍처를 지원합니다.메인라인에서 지원되는 포트는 ARM Cortex-M(많은 STM32 보드, TI CC3200/WiPy, Teeny 보드, Nordic nRF 시리즈, SAMD21 및 SAMD51) ESP8266, ESP32, 16비트 PIC, Unix, Windows, Zephyr 및 [9]JavaScript입니다.또한 메인 라인에서 [10]지원되지 않는 다양한 시스템 및 하드웨어 플랫폼용 포크가 많이 있습니다.

2016년에는 파이썬 소프트웨어 재단이 [11]BBC와의 마이크로 비트 파트너십에 기여한 일환으로 BBC 마이크로 비트용 마이크로 피톤 버전이 만들어졌습니다.

2017년 7월, MicroPython은 Circuit를 만들기 위해 포크를 만들었다.Python은 교육과 사용 편의성에 중점을 둔 MicroPython 버전입니다.MicroPython 및 회로Python은 다소 다른 하드웨어 세트를 지원합니다(예: Circuit).Python은 Atmel SAM D21 및 D51 보드를 지원하지만 ESP8266)에 대한 지원은 중단되었습니다.버전 4.0에서는 회선Python은 MicroPython 버전 1.9.[12]4를 기반으로 합니다.

2017년 MicrosemiRISC-V([13]RV32 및 RV64) 아키텍처용 MicroPython 포트를 만들었습니다.

2019년 4월, 레고 마인드스톰 EV3용 마이크로피톤 버전이 [14]개발되었습니다.

2021년 1월, RP2040용의 MicroPython 포토(ARM Cortex-M0+, 라즈베리 파이 피코등의 포토)가 [15]작성되었습니다.

특징들

Python 실행 기능

MicroPython은 Python을 실행할 수 있는 기능을 가지고 있어 사용자가 간단하고 이해하기 쉬운 프로그램을 [16]만들 수 있습니다.MicroPython은 많은 표준 Python 라이브러리를 지원하며 Python에서 가장 많이 사용되는 [16]라이브러리의 80% 이상을 지원합니다.MicroPython은 마이크로컨트롤러와 [17]Python 사이의 일반적인 성능 격차를 지원하기 위해 특별히 설계되었습니다.Python 코드는 하드웨어에 직접 액세스하고 하드웨어와 상호 작용할 수 있으며 운영 [18]체제에서 실행되는 일반 Python 애플리케이션을 사용하면 사용할 수 없는 하드웨어 가능성이 높아집니다.

코드 휴대성

MicroPython의 하드웨어 추상화층(HAL) 기술 활용을 통해 개발된 코드를 동일한 제품군 또는 플랫폼 내의 다른 마이크로 컨트롤러와 MicroPython을 지원하고 다운로드할 수 있는 장치 간에 이식할 수 있습니다.프로그램은 고성능 마이크로컨트롤러에서 개발 및 테스트되며, 저성능 마이크로컨트롤러에서 [19]사용되는 최종 어플리케이션과 함께 배포됩니다.

모듈

MicroPython은 새로운 코드가 작성되면 프리즈 모듈을 생성하여 개발된 펌웨어의 일부가 될 수 있는 라이브러리로 사용할 수 있는 기능을 제공합니다.이 기능은 이미 오류가 없는 동일한 테스트된 코드를 MicroPython 환경에 반복적으로 다운로드하는 것을 방지하는 데 도움이 됩니다.이 유형의 모듈은 마이크로컨트롤러의 모듈 디렉토리에 저장되며 컴파일 및 마이크로컨트롤러에 업로드됩니다.여기서 Python의 [19]import 명령어를 사용하여 라이브러리를 사용할 수 있습니다.

읽기 평가 인쇄 루프

Read-Eval-Print Loop(REPL; 읽기 평가 인쇄 루프)을 사용하면 개발자는 개별 코드 행을 입력하여 [20]단말기에서 즉시 실행할 수 있습니다.Linux 기반 및 macOS 시스템에는 시리얼 USB 연결을 사용하여 MicroPython 디바이스의 REP에 직접 연결하는 데 사용할 수 있는 터미널 에뮬레이터가 있습니다.코드의 각 부분을 실행하고 결과를 시각적으로 확인할 수 있으므로, REP는 애플리케이션의 일부를 즉시 테스트할 수 있도록 지원합니다.코드의 다른 부분이 REP에 로드되면 추가 REP 기능을 사용하여 코드의 [16]기능을 실험할 수 있습니다.

편리한 REP 명령어(시리얼 [20]콘솔에 접속한 후):

  • CTRL + C: 키보드 인터럽트
  • CTRL + D: 새로고침
  • help(): 도움말메시지
  • help ( ) :내장 모듈 목록
  • import board [ENTER] dir(board): 마이크로컨트롤러 보드의 모든 핀을 프로그램 코드로 사용할 수 있습니다.

제한 사항

MicroPython의 주요 한계는 실행 [16]시스템에 의해 코드가 해석되기 때문에 Python에서 채택된 코드의 단순화된 스타일이다.MicroPython 프로그램은 데이터를 사용하고 연결에 액세스할 때 더 높은 정밀도를 요구하며 Python의 [16]단순성으로 인해 속도가 느려질 수 있습니다.

MicroPython은 언어를 지원하는 마이크로컨트롤러 [17]선택지가 적은 Arduino와 같은 다른 인기 플랫폼보다 마이크로컨트롤러 시장에서 하드웨어 지원이 제한적입니다.MicroPython에는 다른 [17]플랫폼과 달리 통합 개발 환경(IDE)이나 특정 편집기가 포함되어 있지 않습니다.

구문 및 의미론

MicroPython의 구문은 명확하고 이해하기 쉬운 스타일과 [21]파워로 인해 Python에서 채택되었습니다.대부분의 다른 프로그래밍 언어와는 달리 구두점은 [16]가독성을 우선시하기 위해 구문적인 조작을 적게 사용합니다.

코드 블록

MicroPython은 Python의 코드 블록 스타일을 채택하여 특정 함수, 조건 또는 루프에 고유한 코드를 들여씁니다. 즉, 조건식이 올바르게 [16]평가되어야만 특정 식이 평가됩니다.이는 일반적으로 기호나 키워드를 사용하여 [16]블록을 구분하는 대부분의 다른 언어와는 다릅니다.

이는 시각적 구조가 의미 구조를 반영하기 때문에 MicroPython 코드의 가독성을 보조합니다.이 주요 기능은 간단하지만 잘못된 들여쓰기를 사용하면 코드가 잘못된 조건에서 실행되거나 [16]인터프리터로부터 전체적인 오류가 발생할 수 있기 때문에 중요합니다.

콜론(:)은 조건문의 끝을 나타내는데 사용되는 키 기호이며, 해당 문장이 평가되어야 함을 인터프리터에 전달하고 그 뒤에 이어지는 움푹 들어간 본문을 [16]실행하도록 지시합니다.들여쓰기 크기는 탭 하나 또는 공백 4개에 해당합니다.

운용

MicroPython은 원시적이고 논리적인 [18]연산을 사용하여 다양한 수학적 연산을 수행할 수 있습니다.

지원되는[18] 조작
유형 교환입니다. 이름.
산술 + 추가 변수 + 1
- 뺄셈 변수 - 1
* 곱셈 변수 * 4
/ 나누기 변수 / 4
% 모듈로 구 변수 % 4
비교 == 동등. expression1 == expression2
!= 동일하지 않다 expression1 != expression2
< > 보다 적은 expression1 < expression 2
> 보다 크다 expression1 > expression2
<=> 이하 expression1 <= expression2
>= 크거나 같음 expression1 > = expression2
논리 & 비트 variable1 & variable2
비트 또는 variable1 variable2
^ 비트 배타적 또는 variable1 ^ variable2
~ 비트 보체 ~4101
그리고. 논리적이고 variable1 및 variable2
또는 논리적인 또는 variable1 또는 variable2

라이브러리

MicroPython은 [22]Python과 유사한 라이브러리를 사용한 Python의 린하고 효율적인 구현입니다.일부 표준 Python 라이브러리는 MicroPython에 동일한 라이브러리의 이름을 지정하여 둘을 구분합니다.MicroPython 라이브러리는 메모리 [18]절약을 위해 널리 사용되는 기능을 제거하거나 수정하여 더 작아졌습니다.

MicroPython [18]라이브러리에는 다음 세 가지 유형이 있습니다.

  • 표준 Python 라이브러리(빌트인 라이브러리)에서 파생됨
  • 특정 MicroPython 라이브러리
  • 하드웨어 기능을 지원하는 특정 라이브러리

MicroPython은 고도의 커스터마이즈와 설정이 가능하며, 각 보드(마이크로 컨트롤러)에 따라 언어가 다르며 라이브러리의 가용성이 다를 수 있습니다.모듈 또는 모듈 전체의 일부 기능 및 클래스는 사용할 수 없거나 [18]변경될 수 있습니다.

MicroPython[5] 표준 Python 라이브러리
라이브러리명 묘사
배열 어레이에서의 조작
cmath 복소수에 대한 산술 함수를 제공합니다.
gc 가비지 콜렉터
수학 부동소수점 숫자에 대한 기본적인 연산 기능을 제공합니다.
시스템 시스템 수준 함수. 인터프리터가 사용하는 변수에 대한 액세스를 제공합니다.
ubinascii 바이너리와 ASCII를 변환하는 함수
u컬렉션 다양한 개체를 저장하는 컬렉션 및 컨테이너 유형에 대한 작업
uerno 에러 코드에 액세스 할 수 있습니다.
uhashlib 이진 해시 알고리즘에 대한 연산
우히프 히프 큐알고리즘을 구현하기 위한 조작
우이오 입력/출력 스트림 처리 작업
ujson JSON 문서와 Python 개체 간의 변환을 처리합니다.
uos 파일 시스템 액세스 및 기본 운영 체제 기능을 위한 기능
우레 정규 표현식 매칭 조작을 실장하다
사용하다 여러 스트림에서 이벤트를 처리하는 함수
usocket 소켓에 연결(케이블), 소켓인터페이스에 액세스 제공
구조 기본 데이터 유형을 패킹 및 언팩하여 Python 개체로 변환합니다.
시간 는 시간 간격 측정 및 지연 구현 등 시간과 날짜 기능을 제공합니다.
uzlib 이진 데이터를 압축 해제하는 작업
MicroPython 고유의[5] 라이브러리
라이브러리명 묘사
프레임부 는 디스플레이에 송신하는 비트맵이미지 작성에 사용할 수 있는 프레임버퍼를 제공합니다.
기계. 하드웨어 블록 접근 및 상호작용을 지원하는 기능
마이크로폰 MicroPython 내부 접근 및 제어
네트워크 네트워크 드라이버의 인스톨을 서포트하고, 네트워크를 개입시켜 대화할 수 있도록 합니다.
유형 액세스 바이너리 데이터 구조

커스텀 MicroPython 라이브러리

개발자가 새로운 애플리케이션을 만들기 시작하면 표준 MicroPython 라이브러리와 드라이버는 조작이나 계산이 불충분하여 요건을 충족하지 못할 수 있습니다.Python과 마찬가지로, MicroPython의 기능을 기존 라이브러리와 [19]펌웨어의 기능을 확장하는 커스텀 라이브러리로 확장할 수 있습니다.

MicroPython에서 .py로 끝나는 파일은 사용자가 기존 [18]라이브러리의 사용 및 구현을 확장할 수 있는 다른 라이브러리 별칭보다 우선합니다.

지원 하드웨어

MicroPython의 구현과 인기가 계속 증가함에 따라 MicroPython을 실행할 수 있는 보드가 많아졌습니다.많은 개발자들이 서로 다른 마이크로 컨트롤러에 다운로드할 [18]수 있는 프로세서별 버전을 구축하고 있습니다.마이크로 컨트롤러에 MicroPython을 설치하는 것은 문서화되어 있어 사용자에게 편리합니다.[19]MicroPython은 마이크로컨트롤러 하드웨어와 애플리케이션 간의 상호작용을 단순하게 함으로써 리소스가 제한된 환경에서 높은 수준의 [16]응답성으로 작업하는 동안 다양한 기능에 액세스할 수 있도록 합니다.

MicroPython을 [18]실행하는 데 사용된 두 가지 유형의 보드:

  • MicroPython은 제조 시 로드됩니다. 즉, MicroPython만 실행할 수 있습니다.
  • 보드에 MicroPython을 설치할 수 있는 펌웨어가 있는 보드.

코드 실행

프로그램을 MicroPython 보드로 이동하려면 파일을 생성하여 마이크로컨트롤러에 복사하여 실행합니다.컴퓨터와 같은 장치에 연결된 하드웨어를 사용하면 보드의 플래시 드라이브가 장치에 나타나 파일을 플래시 드라이브로 이동할 수 있습니다.기존 python 파일인 boot.py과 main.py은 일반적으로 수정되지 않습니다.마이크로컨트롤러가 부팅될 때마다 프로그램을 실행하고 싶다면 main.py을 변경할 수 있습니다.그렇지 않으면 프로그램은 REP [18]콘솔을 사용하여 실행됩니다.

칠판

파이보드는 MicroPython의 소프트웨어 기능을 완전히 지원하는 공식 MicroPython 마이크로 컨트롤러 보드입니다.파이보드의 하드웨어 기능은 다음과 같습니다.[5]

기동 프로세스

파이보드에는 /flash라는 이름의 내장 드라이브(파일 시스템)가 포함되어 있으며, 보드의 플래시 메모리에 저장되어 있으며, 마이크로SD 카드를 슬롯에 삽입하여 /sd를 통해 액세스할 수 있습니다.부팅 시 파이보드는 /flash 또는 /sd에서 부팅할 파일 시스템을 선택해야 하며 현재 디렉토리는 /flash 또는 /sd로 설정됩니다.기본적으로는 SD 카드가 삽입되어 있는 경우 /sd가 사용되며 삽입되어 있지 않은 경우 /flash가 사용됩니다.필요한 경우 /flash/SKIPSD라는 이름의 빈 파일을 생성하여 SD 카드를 사용하지 않도록 할 수 있습니다.이 파일은 보드에 남아 있으며, Pyboard가 부팅될 때 존재하며, 부팅 [5]프로세스에서 SD 카드를 건너뜁니다.

부트 모드

파이보드의 전원이 정상적으로 켜지거나 재설정 버튼을 누르면 파이보드가 표준 모드로 부팅됩니다. 즉, boot.py 파일이 실행되며 USB가 구성되고 마지막으로 파이썬 프로그램이 [5]실행됩니다.

보드가 부트 처리 중일 때 사용자 스위치를 누른 후 사용자 스위치를 계속 누른 상태에서 reset을 누르면 표준 부트 시퀀스를 덮어쓸 수 있습니다.Pyboard의 LED는 모드 간에 점멸하며 LED가 사용자가 원하는 모드에 도달하면 사용자 스위치를 놓으면 보드가 특정 [5]모드로 부팅됩니다.

부트 모드는 다음과 같습니다.[5]

  • 표준 부트: 녹색 LED만 (boot.py 다음 python 프로그램 참조)
  • 세이프 부트: 오렌지 LED만 (부팅 중에는 스크립트를 실행하지 않음)
  • 파일 시스템 리셋: 녹색 LED와 주황색 LED를 함께 사용(플래시 드라이브를 공장 출하 시 상태로 리셋하고 세이프 모드로 부팅)
  • 파일 시스템이 손상되었을 때 수정으로 사용됨

에러

  • 빨간색 LED와 녹색 LED가 번갈아 깜박이는 경우 python 스크립트에 오류가 있으므로 REP를 사용하여 디버깅해야 합니다.
  • 4개의 LED가 모두 켜졌다 꺼졌다 하면 하드 장애가 발생하여 복구할 수 없으며 하드 [5]리셋이 필요합니다.

프로그래밍[18] 예시

1: Hello world 프로그램:

시리얼 콘솔로의 인쇄 수  인쇄물(안녕, 세상아!) 

예 2:Import + LED 켜기

수입품 pyb  # LED 점등  pyb.이끌었다(1).() 

예 3: 파일 읽기 + 루프

수입품 os  # 파일 열기 및 읽기  와 함께 열다.(/재기동작.txt) ~하듯이 f:  인쇄물(f.읽어주세요()) 

바이트 코드

MicroPython은 MicroPython 바이트 코드(파일 확장자 .mpy)를 생성하는 크로스 컴파일러를 포함합니다.Python 코드는 마이크로 컨트롤러에서 직접 바이트 코드로 컴파일하거나 다른 곳에서 미리 컴파일할 수 있습니다.

MicroPython 펌웨어는 컴파일러 없이 빌드할 수 있으며, 미리 컴파일된 mpy 프로그램을 실행할 수 있는 가상 머신만 남습니다.

구현 및 사용방법

MicroPython은 표준 소프트웨어에 의해 특정 마이크로컨트롤러에 로드된 펌웨어를 통해 플래시 메모리에 사용되며 시리얼 인터페이스를 [19]에뮬레이트하는 컴퓨터에 로드된 터미널 애플리케이션을 사용하여 통신합니다.

MicroPython의 주요 용도는 세 가지 [19]범주로 일반화할 수 있습니다.

  • 교육 목적: MicroPython의 Read – Eval – Print Loop(REPL)을 사용하여 마이크로컨트롤러와 상호 작용함으로써 데이터 처리 및 보드와의 통신 개념을 보다 복잡한 프로그래밍 언어보다 간단한 방법으로 시각적으로 설명할 수 있습니다.
  • 디바이스센서 설계 개발테스트: MicroPython은 주변기기 통신 셋업 및 제어 구현이라는 공통 개발자의 태스크를 해결하는 마이크로컨트롤러에서 사용되는 인터페이스의 검증되고 버그가 없으며 철저하게 테스트된 참조 구현을 제공합니다.MicroPython은 디바이스 레지스터에 대한 직접적이고 인터랙티브한 접근성을 제공하며, 이를 통해 기능을 쉽게 검증하고 디바이스 제어 및 데이터 수집을 위한 하드웨어 부품과 디바이스 및 알고리즘을 개발하고 테스트할 수 있습니다.
  • 복잡한 애플리케이션 설계를 위한 감시구성 도구: 특정 애플리케이션에는 고성능 마이크로 컨트롤러에 특정 애플리케이션이 필요합니다.MicroPython은 상태 모니터링 및 시스템 파라미터 설정을 지원합니다.

MicroPython의 실장은 표준 라이브러리 및 지원 라이브러리의 가용성, 마이크로컨트롤러의 플래시 메모리 및 [19]RAM 크기에 따라 다를 수 있습니다.

레퍼런스

  1. ^ https://github.com/micropython/micropython/releases/tag/v1.19 를 참조해 주세요.
  2. ^ George, Damien P. (4 May 2014). "micropython/LICENSE at master · micropython/micropython". GitHub. Retrieved 11 February 2017.
  3. ^ Venkataramanan, Madhumita (6 December 2013). "Micro Python: more powerful than Arduino, simpler than the Raspberry Pi". Wired. Retrieved 15 December 2016.
  4. ^ Yegulalp, Serdar (5 July 2014). "Micro Python's tiny circuits: Python variant targets microcontrollers". InfoWorld. Retrieved 15 December 2016.
  5. ^ a b c d e f g h i "MicroPython - Python for microcontrollers". micropython.org. Retrieved 12 August 2017.
  6. ^ "MicroPython on GitHub". GitHub. 7 February 2022.
  7. ^ "Micro Python: Python for microcontrollers". Kickstarter. Kickstarter. Retrieved 15 December 2016.
  8. ^ Beningo, Jacob (11 July 2016). "Prototype to production: MicroPython under the hood". EDN Network. Retrieved 15 December 2016.
  9. ^ George, Damien P. "micropython/ports at master · micropython/micropython". GitHub. Retrieved 22 October 2019.
  10. ^ Sokolovsky, Paul. "Awesome MicroPython". GitHub. Retrieved 22 October 2019.
  11. ^ Williams, Alun (7 July 2015). "Hands on with the BBC Micro-Bit user interface". ElectronicsWeekly.com. Retrieved 8 July 2015.
  12. ^ Shawcroft, Scott (22 May 2019). "CircuitPython 4.0.1 released!". Adafruit Blog. Adafruit Industries. Retrieved 11 June 2019.
  13. ^ "RISC-V Poster Preview — 7th RISC-V Workshop" (PDF). 28 November 2017. Retrieved 17 December 2018.
  14. ^ "LEGO releases MicroPython for EV3 based on ev3dev and Pybricks". www.ev3dev.org. Retrieved 21 April 2020.
  15. ^ "Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4". www.raspberrypi.org. 21 January 2021. Retrieved 21 January 2021.
  16. ^ a b c d e f g h i j k Alsabbagh, Marwan (2019). MicroPython Cookbook. Birmingham, UK: Packt Publishing.
  17. ^ a b c Bruno, P. "An Introduction to MicroPython". All3DP. All3DP. Retrieved 9 May 2022.
  18. ^ a b c d e f g h i j k Bell, Charles (2017). MicroPython for the Internet of Things. Berkeley, USA: Apress.
  19. ^ a b c d e f g Gaspar, G.; Kuba, P.; Flochova, J.; Dudak, J.; Florkova, Z. (2020). Development of IoT applications based on the MicroPython platform for Industry 4.0 implementation. 2020 19th International Conference on Mechatronics – Mechatronika (ME). pp. 1–7.
  20. ^ a b Rembor, K. "The REPL Welcome to CircuitPython!". Adafruit Learning System. Adafruit Learning System. Retrieved 9 May 2022.
  21. ^ Wang, L.; Li, Y.; Zhang, H.; Han, Q.; Chen, L. (2021). An Efficient Control-flow based Obfuscator for Micropython Bytecode. 2021 7th International Symposium on System and Software Reliability (ISSSR). pp. 54–63.
  22. ^ Khamphroo, M.; Kwankeo, N.; Kaemarungsi, K.; Fukawa, K. (2017). MicroPython-based educational mobile robot for computer coding learning. 2017 8th International Conference of Information and Communication Technology for Embedded Systems (IC-ICTES). pp. 1–6.

외부 링크