본문 바로가기
Development/MicroPython

[MicroPython] 알아보고 시작해보자 - pyboard

by 루카오리 2021. 10. 20.

MicroPython 사양

MicroPython 은 다양한 마이크로 컨트롤러에서 실행되요.

인터프리터방식이기때문에 충분한 RAM, Flash 및 처리 성능을 갖춘 추가적인 마이크로 컨트롤러에 MicroPython 을 이식 할수 있어요

사용하고자 하는 마이크로컨트롤러는  다음의 사양을 참고하시면됩니다.

플래시 용량: 256kB 이상
RAM 용량: 16kB 이상
CPU 클록 80MHz 이상

 

현재 MicroPython에서 지원하고 있는 마이크로컨트롤러는

그림 1: 현재 MicroPython이 지원하는 사용 가능한 마이크로 컨트롤러 플랫폼이 표시된 예시적인 폴더 디렉터리 구조. ARM, CC3200, esp8266, Microchip PIC 및 STM32 등 포함. 

상위로 올라가게 되면 example, drivers, lib등이 있습니다.

제 생각에는

- C라이브러리를 추가 하고 싶다면 drivers 폴더 

- Python 예제 코드를 보고 싶다면 examples 폴더

- MicroPython 을 올리고 싶다면 ports 폴더 내에 MCU 를 골라서 컴파일 하면 된다.

 


개발

개발환경은 Linux를 추천해요. Windows10에서 컴파일 돌려봤는데, 크로스컴파일 하다가 죽는 현상이 있어요.

예상컨대, cmdline에서 한줄에 들어갈수 있는 길이가 정해져있는데, 그이상의 길이라서 그런건지 돌다가 죽는것 같아요

Micropython 에서 판매하고 있는 Pyboard v1.1(STM32F405)의 경우에는 발주될때 MicroPython 이 설치되어있는 상태로 제공되요. 그러나 직접 하드웨어를 구성하거나 다른 개발키트를 사용할때는

  • 직접 Micropython 소스 코드 를 받아야함
  • 소스코드를 빌드해야함
  • 플래시에 소프트웨어를 다운로드 해야함

개발환경 구축

1. ARM 컴파일 도구 체인 설치 해요.

sudo apt-get install gcc-arm-none-eabi

2. MicroPython의 소스코드는 Github에 공개하고 있어서 git 또한 설치 해요.

sudo apt-get install git

3. git을 설치한 이후 MicroPython를 받아옵니다.

아래와 같이 정상적으로 다운로드를 받았는지 확인하세요.

4.  크로스 컴파일합니다.

make -C mpy-cross

실행을 하게 되면 아래와 같이 mpy-cross가 생성되어있어요.

5.  Pyboard(STM32F405를 동작하기 위해 아래의 커맨드를 입력해서  ports/stm32 폴더로 이동해요.

cd ports/stm32

6. .dfu 파일을 만들기 위해서는 makefile를 사용해합니다.

submodules 도 존재할수 있으므로.

make submodules

makefile에 옵션에 BOARD 를 넣는 부분이 있어요. 이부분은 boards의 폴더에 들어가보면, 폴더들이 있는데, 그중에 사용하고 있는 보드를 넣으면됩니다.

 cd  boards

전 Pyborad v1.1을 사용하기 때문에, BOARD=PYBV11 로 입력합니다.

아래의 코드는 ports/stm32 폴더에서 실행해야합니다!

make BOARD=PYBV11

정상적으로 동작했다면, 아래와 같이  build-BOARDname  의 폴더 밑에 .bin / .dfu / .hex 파일이 생성됩니다.

즉, 컴파일을 할때 BOARD=PYBV11를 사용했기 때문에 build-PYBV11 의 폴더가 만들어집니다.

 

 

7. 보드에 다운로드를 하기 위해서는 dfu-util 이 필요합니다. 아래의 커맨드로 설치해줍니다.

sudo apt-get install dfu-util

설치 한 후 Pyboard에 핀 DFU 과 3.3v를 연결해줍니다. 전원을 꽂아줍니다.

부트모드일경우 빨간색 /파랑색 LED 가 켜져있어요.

 

전 가상머신으로 돌리고 있기때문에  USB setting에 가면 STM32 BOOTLOADER 가 있어 체크해줍니다.

dfu-util --alt 0-D <path to .dfu> 의 command를 이용하여 Micropython 을 업로드합니다.

dfu-util --alt 0 -D ./build-PYBV11/firmware.dfu

 

위와 같이 완료가 되며

  • 전원케이블을 뽑아요
  • Pin DFU에 연결된 점퍼를 뺍니다.
  • 전원을 다시 꽂아요

USB setting을 누르면 MicroPython Pyboard Virutal Comm Port in FS Mode 로 표시되는데, 클릭해줍니다.

8. MicroPython 코드를 쉽게 짜고 넣을 수 있도록 Thonny를 설치해줍니다.

sudo apt-get install thonny

micropython 보드를 USB에 꼽고 상단 메뉴 > Run > Select Interpreter 를 선택합니다
사용하고자하는 micropython 코드를 선택하고 Pyboard의 Port를 선택합니다.

led를 토글해봅니다!

 

import pyb
led = pyb.LED(2)
while True:
    led.toggle()
    pyb.delay(100)

새로운 파일로 개발을 할경우에 저장버튼을 누르면 컴퓨터에 저장할지 device에 저장할지 물어봅니다.

저 computer에 저장에서 사용하려고 This computer를 눌러 진행합니다.

아래를 보면 Micropython version과 board의 정보가 나옵니다. 

shell에서 직접 코딩하셔도 됩니다.

아래는 동작영상입니다.

pyboard_led.mp4
0.78MB

 

다음 포스팅은 Ethernet(Wiznet5K, W5500) 관련입니다.