이 블로그는 임베디드 컴퓨터를 이용한 장치(시스템) 개발과 원격제어에 필요한 지식을 공유 하기 위한 블로그 입니다.
실제 개발과 프로그램 예를 위하여 Microchip 사의 ATmega128를 사용한 보드와 Arduino Mega 보드(ATmega2560), Raspberry Pi Pico, Raspberry Pi, WiFi 모듈을 사용 합니다.

pico-microPython-basic

MicroPython Basic
MicroPython의 이해와 개발 환경 - ESPlorer-MT-Build


  • MicroPython 은?
    • MicroPython은 마이크로 컨트롤러에서 효율적으로 실행되도록 Python 3의 기능을 일부 제한한 간결한 프로그래밍 언어이다.

      자주 사용하지 않는 표준 라이브러리의 일부 기능을 제거하여 마이크로 컨트롤러에 최적화하였다.

      MicroPython은 인터프리터 언어이기 때문에 컴파일러 언어(c, c++ 등)에 비교하여 실행 속도는 느리지만 대화형 REPL(read-eval-print loop)을 사용하여 번거로운 컴파일 및 업로드 단계 없이 코드를 즉시 실행하고 결과를 볼 수 있기 때문에 프로그램 개발과 유지가 용이하고 프로그램 언어를 배우기 쉽다.

      참고자료: "mPython help documentation" , "MicroPython documentation"

  • MicroPython 시작하기
    • MicroPython을 사용하기 위하여는 MicroPython firmware 가 설치되어 있어야 한다. MicroPython firmware 은 MicroPython script를 실행하고 대화형 REPL(read-eval-print loop)을 사용 가능하게 한다.

    • MicroPython 설치하기
      • MicroPython firmware를 "Getting started with MicroPython"에서 다운로드 한다.
      • 주: MicroPython Source를 본인이 Building 하고자 하는 경우에는 "Raspberry Pi Pico Python SDK"를 참고 바람.

      • BOOTSEL button을 누른 상태에서 USB Plug를 연결하여 Pi Pico 보드를 USB 저장 장치 모드로 설정한다.
      • Windows 파일 탐색기(Explorer)에서 Pi Pico 가 USB 저장 장치로 인식되었는지 확인한다. 정상적으로 USB 저장 장치로 설정된 경우 Pi Pico 개발 보드는 USB 저장 장치(RPI-RP2)로 표시 된다.
      • Firmware를 USB 저장 장치(RPI-RP2)로 복사한다.
      • Firmware의 복사가 완료되면 Pi Pico의 USB 저장 장치 모드가 종료되고 자동으로 Firmware가 시작된다.
      • 처음 Firmware를 설치한 다음에는 Pi Pico 보드를 Reset(USB Plug를 분리하였다가 다시 연결)하여야 PC의 장치관리자가 Pi Pico의 USB를 Serial Port로 인식한다.

    • MicroPython 시작 프로그램
      • MicroPython(Firmware)이 설치된 보드의 전원을 켜거나 재시작(Reset) 시 MicroPython은 파일 시스템의 루트에서 boot.py 와 main.py를 순차적으로 찾아 만약 이 파일이 있으면 이 파일을 먼저 실행 한다.

      • boot.py
        • 이 파일은 전원을 켜거나 재시작(Reset) 시 가장 먼저 실행된다.
        • 일반적으로 부딩 시 보드를 초기화 할 필요가 있는 경우 사용 할 수 있다. 보드 초기화는 main.py 에서도 가능하기 때문에 일반적인 사용자는 이 파일을 수정할 필요가 없다.
        • ampy get 명령("참고: ampy(Adafruit MicroPython tool)를 이용한 File 관리와 프로그램 실행")을 사용하여 이 파일을 PC로 읽어 내용을 확인하고 필요한 경우 수정할 수 있다.
        • ESPlorer-MT-Build(아래 ESPlorer-MT-Build를 개발 도구로 이용하기 참고)를 사용하는 경우, 메세지 창에 Prompt( >>> )가 출력된 상태에서 우측의 "Reload"를 실행하면 ESP에 있는 파일 이름이 출력된다. 여기에 boot.py 파일이 있는 경우 "boot.py" 버튼을 클릭하면 boot.py의 내용이 Console 창에 출력된다. Console 창에서 boot.py의 내용을 Script 창으로 복사하여 편집한 다음 "Save to ESP" 버튼을 사용하여 ESP에 저장한다.
      • main.py
        • 이 파일이 있으면 boot.py 실행 이후에 자동으로 실행된다.
        • 일반적으로 전원을 켜거나 재시작(Reset) 할 때 실행하여야 하는 기본 스크립트를 포함 한다.
        • 전원을 켜거나 재시작(Reset) 할 때 자동으로 실행하여야 파일이 없는 경우 이 파일은 없어도 된다.
        • 개발이 완료된 프로그램을 전원을 켜거나 재시작(Reset) 시 자동으로 실행하고자 하는 경우, 개발 완료된 프로그램의 이름을 main.py로 변경하여 파일 시스템의 루트에 저장한다.
    • 터미널 프로그램을 사용하여 REPL 모드에서 Script 실행하기
      • 이 예에서는PuTTY를 사용한다. PuTTY는 Windows를 위한 다목적 터미널 프로그램으로 Telnet, SSH, raw socket 연결과 직렬 포트 연결을 지원 한다.

        참고자료: PuTTY 설치와 PuTTY을 사용한 Serial 통신

      • 터미널 프로그램 연결하기
        • PuTTY를 실행 한다. PuTTY를 실행하면 "PuTTY Configuration" 창이 열리고 "Session" 이 선택된 상태가 된다.
        • "PuTTY Configuration" 창 "Connection type"에서 "Serial"을 선택 하고, "Serial Line"에 연결하고자 하는 장치의 COM Port 번호(예: COM11)를 입력하고, "Speed"에 Serial Port의 Baud rate(115200)를 입력 한 다음 "Open" 버튼을 Click 한다.
        • PuTTY 창에서 "Enter" Key를 입력하면 PuTTY 창에 MicroPython Prompt( >>> )가 출력된다.
        • PuTTY를 Serial 통신 터미널로 사용하기 위한 설정 창 예

      • REPL 모드에서 Script 실행하기
        • PuTTY 창에 Prompt( >>> )가 출력된 상태에서 아래와 같이 Script를 입력하고 "Enter" Key를 누르면 Script가 실행되어 "Hello" 메세지가 출력된다.
        • print("Hello")


  • ESPlorer-MT-Build를 개발 도구로 이용하기
    • ESPlore IDE 개발 환경은 Lua 프로그램 언어와 MicroPython를 위한 개발 환경이다. 그러나 Lua에 중점을 두고 개발되었기 때문에 MicroPython 개발 Tool로 사용하기에는 부족(기능이 부족하고 일부 명령이 정상 동작하지 않음)하다. 때문에 여기서는 Jos Verlinde이 MicroPython에 적합하도록 개선한 ESPlorer - MT Fork(ESPlorer-MT-Build)을 사용 한다.

    • PC에 Python 설치하기
    • MicroPython 개발 환경에 필요한 "ampy(Adafruit MicroPython tool)" 등을 이용하기 위하여는 PC에 Python 3.x 버전이 설치되어 있어야 한다. 이미 PC에 Python이 설치되어 있는 경우에는 다시 설치하지 않아도 된다.

      • "Python Downloads"에서 Python를 다운로드하여 설치한다.
      • 설치하는 동안 환경 변수에 Python 경로의 등록을 선택하는 상자가 출력되는 경우 "등록"을 선택한다.
    • ESPlorer-MT-Build 설치하기
      • ESPlorer-MT-Build Download
        • "https://github.com/Josverl/ESPlorer/tree/MT-Build"에서 최신 버전을 Download 한다.
        • ESPlorer-MT-Build.zip의 압축을 풀면 ESPlorer-MT-Build 폴더가 만들어 진다.
        • ESPlorer-MT-Build 폴더에는 전체 Code가 포함(ESPlorer-MT-Build 실행에 필요한 파일과 기타 Source code 등)되어 있기 때문에 여기서 필요한 실행 폴더와 파일을 압축한 ESPlorer 25.05.2018.zip 파일을 외부로 복사하고 압축을 해제한다. 압축을 해제한 폴더(ESPlorer 25.05.2018) 내에 있는 "dist" 폴더에 실행에 필요한 폴더와 파일이 모두 포함되어 있기 때문에 이 폴더를 외부로 복사하고 "ESPlorer-MT"로 이름을 변경한다.
        • ESPlorer-MT 폴더 내에 있는 "ESPlorer.bat" 파일이 ESPlorer-MT-Build의 실행 파일(이 파일을 더블 클릭하면 프로그램이 실행됨) 이다.
        • 주: 전체 Code가 필요 없는 경우에는 본인이 실행에 필요한 폴더와 파일만 압축한 "ESPlorer-MT.zip을 다운로드하여 압축을 풀면 바로 실행할 수 있다."

      • ESPlorer.bat을 더블 클릭하여 프로그램을 실행(Java 가 설치되어 있어야 함) 한다.

    • ESPlorer-MT 실행 하기
    • ESPlorer-MT 실행 예

      • ESPlorer-MT폴더 있는 ESPlorer.bat을 더블 클릭하여 프로그램을 실행 한다.
      • ESPlorer 창의 좌측 상단에 있는 "Settings" tab을 클릭하여 Settings 창을 열고 "Select firmware"에 MicroPython 이 선택되어 있는지 확인한다.
      • 주의: nodeMCU는 Lua firmware가 설치된 경우이기 때문에 선택하면 안된다.

      • 개발 보드가 사용하는 COM포트를 선택(Window를 사용하는 경우 장치괸리자에서 확인) 한다.
      • Baudrate를 선택(115200) 한다.
      • Serial Port "Open" 버튼을 클릭 한다.
      • 메세지 창(Console 창: Output window)에 메세지가 출력되고, MicroPython prompt( >>> )가 출력 된다.
      • MicroPython prompt( >>> )가 출력되지 않은 경우에는 ESPlorer 창의 우측 상단에 있는 "Ctl-C" 버튼을 클릭 한다. "Ctl-C" 버튼을 클릭한 다름에도 Prompt( >>> )가 출력되지 않는 경우에는 개발보드의 리셋버튼을 누르면 메세지 창에 메세지가 출력되고, Prompt( >>> )가 출력 된다.

    • MicroPython 프로그래밍 예
      • 다음과 같은 프로그램을 ESPlorer의 왼쪽 창(Script 편집 창)에 입력 한다.
      • 
        from machine import Pin
        from time import sleep_ms
        
        # Raspberry Pi Pico 보드는 GPIO25를 LED Pin으로 사용한다.
        led = Pin(25, Pin.OUT)
        
        # LED를 점멸하는 무한 Loop
        while True:
          # Pi Pico 보드는 LED Pin이 High일 때 On 되고 Low일 때 Off 됨.
          led.value(1)   # LED(pin2)-> High(On)
          sleep_ms(500)  # Sleep for 500 milliseconds
          led.value(0)   # LED(pin2)-> Low(Off)
          sleep_ms(500)  # Sleep for 500 milliseconds
              
      • File name "blinking-led.py"로 저장 한다.
      • 메세지 창에 Prompt( >>> )가 출력된 상태에서 "Send to ESP" 버튼을 클릭하면 스크립트가 개발보드에 전송되고,
      • 스크립트가 실행되어 개발 보드의 LED가 1Sec 간격으로 점멸 한다.
      • ESPlorer 창의 좌측 상단에 있는 "Ctrl-C" 버튼을 클릭하면 프로그램 실행이 중지되고 메세지 창에 Prompt( >>> )가 출력된다.

    • 자주 사용하는 ESPlorer-MT 버튼
      • ESPlorer-MT 우측 위에 있는 버튼 "Ctrl-C" 버튼
        • 현재 실행중인 프로그램을 정지 시키고 메세지 창에 Prompt( >>> )를 출력한다.
        • 주: 프로그램만 정지 시키고 프로그램이 사용하던 메모리 등의 상태는 그대로 유지하기 때문에 REPL(read-eval-print-loop) 모드에서 큰 프로그램을 실행 시키는 경우, 반복하여 REPL 모드로 큰 프로그램을 실행하면 메모리(RAM) 부족 등 문제가 발생할 수 있다.

      • 개발보드 초기화(Restart) 하기
        • 개발 Board의 "Reset" 버튼을 누르면 Hard reset(Restart) 이 실행되어 MicroPython firmware가 다시 실행되고 메세지 창에 Prompt( >>> )가 출력 된다. 이 경우 메모리 등의 상태도 초기화 된다.
        • 메세지 창에 Prompt( >>> )가 출력된 상태에서 아래와 같은 프로그램을 실행하면 Hard reset과 같은 결과를 얻을 수 있다.
        • import machine

          machine.reset()

          주: REPL(read-eval-print-loop) 모드에서 큰 프로그램을 실행 시키는 경우 "Ctrl-C" 버튼으로 프로그램을 정지 시키고 위 명령을 실행하면 개발보드가 초기화되기 때문에 REPL 모드에서 큰 프로그램을 반복하여 실행하면 발생하는 메모리(RAM) 부족 등의 문제를 피할 수 있다. 아레 "Snippet 버튼(단축 버튼) 사용하기"의 Restart 버튼 만들기를 참고 요.

      • ESPlorer-MT 좌측에 있는 버튼
        • "Save to ESP" 버튼: 현재 Opened file을 ESP에 전송하여 Flash memory에 저장한다. ESP의 Flash memory에 현재 Opened file 이름의 파일이 생성된다.
        • 주: 이 버튼은 개발 보드에 따라 Flash memory에 Write 하는 방법이 다르기 때문에 프로그램이 큰 경우 "Save to ESP" 버튼을 사용한 file 전송 시 Error 가 발생할 수 있다. 이 경우 "ampy Tool"을 사용하여 개발 보드로 file을 전송한다.

          주: ampy Tool을 설치하고 사용하기 위하여는 PC에 Python 3.x 버전이 설치되어 있어야 한다.

        • "Send to ESP" 버튼: Scripts 창에 있는 스크립트를 한 줄씩 ESP에 전송(MicroPython은 Interpreter 언어 이기 때문에 전송된 스크립트는 개발보드의 Flash memory에 저장되지 않고 한 줄씩 바로 실행됨)하여 실행한다. 개발 단계에서 이 버튼을 사용하면 간편하개 Scripts 창에 있는 스크립트를 실행하며 프로그램을 개선할 수 있다. 스크립트를 개발보드에 저장(Flash Memory)하여 실행하기 위하여는 "Save to ESP" 버튼을 사용하여 개발 보드로 file을 전송 하여야 한다.
        • 주: "Send to ESP" 버튼은 현재 Opened file을 REPL 모드로 개발보드에 전송하여 실행한다. REPL(read-eval-print-loop) 모드에서 큰 프로그램을 실행 시키는 경우 "Ctrl-C" 버튼으로 프로그램을 정지 시키고 아래 "Snippet 버튼(단축 버튼) 사용하기"의 "Restart 단축 버튼 만들기 예"에서 만든 Restart 버튼 명령을 실행하면 REPL 모드에서 큰 프로그램을 반복적으로 실행하는 경우 발생하는 메모리(RAM) 부족 등 문제를 피할 수 있다. 아레 "Snippet 버튼(단축 버튼) 사용하기"의 Restart 버튼 만들기를 참고요.

        • "Run" 버튼: "Save to ESP" 버튼으로 ESP에 전송한 파일을 실행한다.
        • 주: ESPlorer-MT 우측에 있는 "Reload" 버튼을 사용하여 개발보드의 파일을 확인하고, 실행하고자 하는 파일에서 마우스 우측 버튼을 사용하여 "Run" 명령을 선택하여 파일(ESP의 Flash memory에 저장된 프로그램)을 실행할 수도 있다.

        • "Upload..." 버튼: PC의 Disk에 있는 파일을 ESP에 직접 Upload 한다. ESPlorer 창의 우측 옆에 있는 폴더 모양의 버튼을 클릭하면 버튼 아래에 현재 ESP 폴더에 저장된 파일명이 출력되어 파일의 Upload 상태를 확인할 수 있다.
        • 주: 개발 보드에 따라 Flash memory에 Write 하는 방법이 다르기 때문에 프로그램이 큰 경우 "Save to ESP" 버튼을 사용하는 경우와 동일한 Error 가 발생할 수 있다. 이런 경우 "ampy Tool"을 사용하여 개발 보드로 file을 전송한다.


    • 스크립트 보내기(Send) 창(ESPlorer 창의 우측 아래에 있음) 사용하기
      • MicroPython 스크립트를 개발보드로 전송하여 실행하기 위한 목적으로 사용된다.

      • 이 창과 "Send" 버튼은 MicroPython prompt( >>> ) 상태에서만 사용 가능한 상태(Active state)로 된다.
      • 이 창에 유효한 MicroPython 스크립트를 입력하고 "Send" 버튼을 누르면 스크립트가 개발보드로 전송되어 실행된다.
      • 사용 예
        • 스크립트 보내기(Send) 창에 "print('Hello, MicroPython!')"을 입력하고 "Send" 버튼을 누르면 스크립트가 전송되어 실행되고 메세지(Consol) 창에 "Hello, MicroPython!" 이 출력된다.

    • Snippet 버튼(단축 버튼) 사용하기
      • 자주 사용하는 스크립트를 단축 버튼으로 설정하여 두면 단축 버튼을 누르는 것 만으로 스크립트를 실행할 수 있다.

      • 단축 버튼 설정과 실행 예
      • Snippts 버튼 설정 창 예

        • 좌측 Script 편집 창 위에 있는 "Snippts" 버튼을 누르면 Snippts 버튼 설정 창이 열린다.
        • Snippts 버튼 설정 창에서 설정을 윈하는 버튼을 누르면 해당 버튼 설정을 위한 창이 활성화 된다.
        • Snippts 버튼 이름을 입력하는 창에 버튼 이름을 입력하고,
        • Snippts 버튼 편집 창에 스크립트을 입력한 다음 "Save" 버튼을 누른다.
        • "Save" 버튼 우측에 있는 "Run" 버튼을 클릭하면 편집 창에 스크립트가 바로 실행된다.
        • "Cancel" 버튼을 클릭하면 현재 편집 중인 버튼의 편집이 중지된다.
        • Snippts 버튼 설정 예
          • 첫번째 Snippts 버튼을 클릭하고 이름을 입력하는 창에 "GPIO2 On"을 입력한다.
          • Snippts 버튼 설정 창에 아래와 같은 스크립트을 입력한 다음 "Save" 버튼을 누른다.
          • import machine

            led = machine.Pin(2, machine.Pin.OUT)

            led.value(1)

          • 이제 메세지(Console) 창 아래에 있는 첫번째 Snippts 버튼 이름이 "GPIO2 On"으로 변경되어 표시된다. 이 Snippts 버튼을 누르면 위에서 설정한 스크립트가 개발보드에 전송되어 실행된다.
          • 실행 결과, 개발보드 GPIO2에 연결된 LED 가 On 상태로 되고 또한 스크립트 실행 과정이 Console 창에 출력된다.
      • Restart 단축 버튼 만들기 예
        • 좌측 Script 편집 창 위에 있는 "Snippts" 버튼을 누르면 Snippts 버튼 설정 창이 열린다.
        • Snippts 버튼 설정 창에서 설정을 윈하는 버튼(예 15번)을 누르면 해당 버튼 설정을 위한 창이 활성화 된다.
        • Snippts 버튼 이름을 입력하는 창에 버튼 이름(Restart))을 입력하고, 아래와 같은 스크립트을 입력한 다음 "Save" 버튼을 누른다.,
        • import machine

          machine.reset()

        • 이제 메세지(Console) 창 아래에 있는 Snippts 버튼(예 15번) 이름이 "Restart"으로 변경되어 표시된다. 메세지 창에 Prompt( >>> )가 출력된 상태에서 이 "Restart" 버튼을 누르면 위에서 설정한 스크립트가 개발보드에 전송되어 실행된다.
        • 실행 결과: 메세지 창에 Prompt( >>> )가 출력된 상태에서 "Restart" 단축 버튼을 누르면 Hard reset과 같은 결과를 얻을 수 있다.
        • 주: ESPlorer-MT에서 Hard reset를 실행하면 Raspberry Pi Pico가 Reset 과정에서 COM Port를 다시 설정하기 때문에 ESPlorer-MT와 Raspberry Pi Pico 보드의 기존 연결이 손실(ESP32는 COM port를 다시 재 연결)되어 Raspberry Pi Pico 보드의 Reset 메세지를 받을 수 없게된다. 이 문제를 해결하기 위하여는 ESPlorer-MT COM Port를 Close한 다음 다시 Open 하여야 한다.

      • Soft reset 단축 버튼 만들기 예
      • Soft reset은 Python interpreter를 Reset 하지만 MicroPython 보드(USB 직렬 또는 Wi-Fi)에 연결하는 방법을 재설정하지 않한다.

        그러므로, MicroPython 보드(USB 직렬 또는 Wi-Fi)에 연결 상태를 유지하며 현재 실행중인 프로그램을 초기화 할 수 있기 때문에 프로그램의 초기화와 시작을 반복하여야 하는 경우(예: 프로그램 개발 시) 유용하게 사용할 수 있다.

        • 좌측 Script 편집 창 위에 있는 "Snippts" 버튼을 누르면 Snippts 버튼 설정 창이 열린다.
        • Snippts 버튼 설정 창에서 설정을 윈하는 버튼(예 14번)을 누르면 해당 버튼 설정을 위한 창이 활성화 된다.
        • Snippts 버튼 이름을 입력하는 창에 버튼 이름(Soft reset))을 입력하고, 아래와 같은 스크립트을 입력한 다음 "Save" 버튼을 누른다.,
        • import machine

          machine.soft_reset()

        • 이제 메세지(Console) 창 아래에 있는 Snippts 버튼(예 14번) 이름이 "Soft reset"으로 변경되어 표시된다. 메세지 창에 Prompt( >>> )가 출력된 상태에서 이 "Soft reset" 버튼을 누르면 위에서 설정한 스크립트가 개발보드에 전송되어 실행된다.
        • 실행 결과: 메세지 창에 Prompt( >>> )가 출력된 상태에서 "Soft reset" 단축 버튼을 누르면 MicroPython 보드에 연결 상태를 유지하며 현재 실행중인 프로그램이 초기화 된다.
      • 개발보드의 Disk와 메모리(RAM) 상태(사용할 수 있는 용량)를 출력하는 단축 버튼 만들기 예
        • 좌측 Script 편집 창 위에 있는 "Snippts" 버튼을 누르면 Snippts 버튼 설정 창이 열린다.
        • Snippts 버튼 설정 창에서 설정을 윈하는 버튼(예 13번)을 누르면 해당 버튼 설정을 위한 창이 활성화 된다.
        • Snippts 버튼 이름을 입력하는 창에 버튼 이름(Free disk,memory)을 입력하고, 아래와 같은 스크립트을 입력한 다음 "Save" 버튼을 누른다.,
        • 
          # df() (disk-free) shows free file space.
          import gc
          import os
          
          def df():
            s = os.statvfs('//')
            return ('{0} MB'.format((s[0]*s[3])/1048576))
          
          # free() shows available ram.
          def free(full=False):
            F = gc.mem_free()
            A = gc.mem_alloc()
            T = F+A
            P = '{0:.2f}%'.format(F/T*100)
            if not full: return P
            else : return ('Total:{0} Free:{1} ({2})'.format(T,F,P))
          
          print("Disk free space: ", df())
          print("Memory free space: ", free())
                  
        • 이제 메세지(Console) 창 아래에 있는 Snippts 버튼(예 13번) 이름이 "Free disk,memory"으로 변경되어 표시된다. 이 Snippts 버튼을 누르면 위에서 설정한 스크립트가 개발보드에 전송되어 실행된다.
        • 실행 결과: 메세지 창에 Prompt( >>> )가 출력된 상태에서 "Free disk,memory" 단축 버튼을 누르면 Disk(Flash memory)와 메모리(RAM)의 상태가 출력된다.
        • 주: 큰 프로그램을 "Send to ESP" 버튼으로 반복하여 실행하여야 하는 경우, 이 버튼을 사용하여 Memory(RAM)의 사용 상태를 확인하고 위에서 설명한 "Restart" 버튼을 사용하여 개발보드를 초기화하면 Memory(RAM) 용량 부족으로 인한 Error를 예방할 수 있다.


    • ESP 보드의 폴더와 파일 관리하기
      • 아래 버튼은 Console 창에 MicroPython prompt( >>> ) 가 표시된 상태에서 사용 가능하다.

      • "FS Info" 버튼
        • File system 정보와 ESP 메모리의 상태(사용 중과 사용할 수 있는 메모리)를 보여 주는 버튼으로 설명되어 있으나 누르면 Error 가 발생한다.
        • 주: "FS Info" 버튼은 누르면 Error 가 발생(사용하는 Firmware 버전 또는 종류 문제인 것 같음)하기 때문에 본인은 사용하지 않는다.

      • "Reload" 버튼
        • 이 버튼을 클릭하면 개발보드의 현재 선택된 디렉토리 내의 파일과 디렉토리 리스트가 버튼으로 출력된다.
      • "폴더 모양.." 버튼(폴더 그림 옆에 점이 2개 있는 버튼)
        • 이 버튼에서 마우스 좌측을 클릭하면 상위 폴더로 이동한다. 현재 root(최상위) 폴더에 위치한 경우에는 현재 폴더의 파일과 디렉토리 리스트가 버튼으로 출력된다.
        • 이 버튼에서 마우스 우측을 클릭하면 "chdir dir" 버튼이 팝업되고 "chdir dir" 버튼을 클릭하면 이 폴더의 상위 이동한다. 현재 root(최상위) 폴더에 위치한 경우에는 현재 폴더의 파일과 디렉토리 리스트가 버튼으로 출력된다.
      • "폴더 모양" 버튼(폴더 그림이 있는 버튼)
        • 이 버튼에서 마우스 좌측을 클릭하면 이 폴더 내로 이동한다. 이 폴더의 파일과 디렉토리 리스트가 버튼으로 출력된다.
        • 이 버튼에서 마우스 우측을 클릭하면 "chdir dir" 버튼이 팝업되고 "chdir dir" 버튼을 클릭하면 이 폴더의 상위 이동한다.
      • "File name" 버튼
        • 파일 이름이 표시되는 버튼으로 이 버튼에서 마우스 좌측을 클릭하면 이 파일을 읽어 메세지 창에 출력한다.
        • 이 버튼에서 마우스 우측을 클릭하면 팝업 창에 아래와 같은 명령 메뉴가 출력된다.
          • Run file name: 이 명령을 클릭하면 ESP에 저장된 해당 프로그램이 실행된다.
          • View file name: 이 파일을 읽어 메세지 창에 출력한다.
          • Hexdump file name: 이 파일을 읽어 Hex format으로 Dump하는 명령이다. 본인의 시스템에서는 Error 가 발생(사용하는 Firmware 버전 또는 종류 문제인 것 같음)하여 사용하지 못함.
          • Rename file name: 이 파일의 이름을 변경하는 창이 열려 이름을 변경할 수 있다.
          • Remove file fame: 이 파일을 삭제한다.
      • "mkdir" 버튼 만들기
        • ESPlorer-MT 개발 Tool에는 mkdir(디렉토리 만들기)와 rmdir(디렉토리 삭제) 기능이 없기 때문에 Snippet 버튼(단축 버튼) 을 이용하여 "mkdir" 버튼과 "rmdir" 버튼을 만드는 예을 소개한다.

        • Script 편집 창 위에 있는 "Snippts" 버튼을 누르면 Snippts 버튼 설정 창이 열린다.
        • Snippts 버튼 설정 창에서 설정을 윈하는 버튼(이 예에서는 12번)을 누르면 해당 버튼 설정을 위한 창이 활성화 된다.
        • Snippts 버튼 이름을 입력하는 창에 버튼 이름(mkdir)을 입력하고,
        • Snippts 버튼 설정 창에 아래와 같은 스크립트을 입력한 다음 "Save" 버튼("Run" 버튼을 사용하여 스크립트을 저장하지 않고 바로 실행할 수도 있음)을 누른다.
          • import os

            os.mkdir('dir')

        • 이제 메세지창 아래 12번 Snippet 버튼(mkdir)을 클릭하고, 메세지창 우측의 "Reload" 버튼을 클릭하면 "dir" 폴더가 생성된 것을 확인할 수 있다.
        • 주: 이 방법은 폴더 이름을 Snippts 버튼 설정 창에서 설정하여야 한다. 예: Test 폴더를 만들고자 하는 경우 Snippts 버튼 설정 창에서 'dir'을 'Test'로 변경하고 "Run" 버튼을 사용하여 바로 실행할 수 있다.

      • "rmdir" 버튼 만들기
        • 위 mkdir(디렉토리 만들기)와 동일한 방법으로 Snippt 버튼(이 예에서는 13번))을 설정하고 사용한다.

        • Snippts 버튼 이름을 입력하는 창에 버튼 이름(rmdir)을 입력하고,
        • Snippts 버튼 설정 창에 아래와 같은 스크립트을 입력한 다음 "Save" 버튼을 누른다.
          • import os

            os.rmdir('dir')


    • 시리얼 통신 관련 버튼과 창
      • 시리얼 포트 Scan 버튼: 통신 가능한 시리얼 포트를 Scan 한다.
      • Baud rate 설정 창: Baud rate를 설정한다.
      • RTS 버튼과 상태 표시등
        • RTS 신호는 원래 RS232 컨트롤 신호로(전송 요청을 의미) 사용한다. 상대 장비에게 송신을 하여도 좋다는 의미와 자신이 송신을 한다는 의미로 사용한다.
        • ESPlorer에서는 ESP 보드의 리셋 신호로 사용할 수 있다. "DTR" 버튼이 Off인 상태에서 "RTS" 버튼를 On -> Off 상태로 변경(클릭)하면 ESP 보드가 Reset 된다. 상대 장비에게 송수신 상태가 되도록 하기 위하여는 다시 "RTS" 버튼를 Off -> On 상태로 변경(클릭)하여야 한다.
        • ESP 보드에 무한 Loop를 포함하고 있는 main.py(or boot,py) 프로그램이 있는 경우 리셋 신호에 의하여 자동으로 무한 Loop 가 실행되기 때문에 메세지 창에 Prompt( >>> ) 가 출력되지 않는다. ESPlorer-MT를 사용하는 경우에는 "Ctrl-C" 버튼을 사용하여 Reset과 동시에 Prompt( >>> ) 가 출력되게 할 수 있다. "Ctrl-C" 버튼이 없는 Tool을 사용하는 경우에는 위 "프로그램 개발 시 main.py에 무한 loop 가 포함된 경우"를 참고하기 바람.
      • DTR 버튼과 상태 표시등
        • 자신이 동작 가능한 상태이면 이 신호를 On 상태로 한다.
        • ESPlorer에서 RTS 버튼을 이용하여 Reset 신호를 발생하는 경우에는 이 버튼을 Off 상태로 한다.
        • ESP 보드에 "Run" 신호를 전송 등 상대 장치와 통신을 하는 경우 이 버튼 On 상태로 한다.

        주: ESPlorer-MT를 사용하는 경우에는 "Ctrl-C" 버튼을 사용하여 ESP 보드를 Reset 할 수 있기 때문에 RTS와 DTR을 On 상태로 하고 사용하는 것이 쉬운 사용 방법이다.

      • Open 상태 표시등: 시리얼 포트 Open 상태를 표시
      • CTS 상태 표시등: RS232 컨트롤 신호(Clear to Send) 이다.

  • MicroPython의 이해와 개발 환경 관련 페이지 보기