MicroPython

MicroPython Introduction

기하 2022. 3. 19. 14:49

https://randomnerdtutorials.com/getting-started-micropython-esp32-esp8266/

 

Getting Started with MicroPython on ESP32 and ESP8266 | Random Nerd Tutorials

Learn how to get started with MicroPython firmware on the ESP32 and ESP8266. After completing this guide, you'll have your first LED blinking using MicroPython.

randomnerdtutorials.com

 

ESP32 및 ESP8266에서 MicroPython 시작하기

ESP32 및 ESP8266에서 MicroPython 펌웨어를 시작하는 방법을 알아보세요. MicroPython을 소개하고 MicroPython과 일반 Python의 차이점, uPyCraft IDE를 사용하여 MicroPython으로 ESP 기반 보드를 프로그래밍하는 방법을 보여줍니다. 이 가이드를 완료하면 MicroPython을 사용하여 첫 번째 LED가 깜박입니다

 

마이크로파이썬이란?

MicroPython은 마이크로컨트롤러 및 임베디드 시스템을 대상으로 하는 Python 3의 재구현입니다. MicroPython은 일반 Python과 매우 유사합니다. 따라서 Python으로 프로그래밍하는 방법을 이미 알고 있다면 MicroPython에서 프로그래밍하는 방법도 알고 있습니다.

 

파이썬 대 마이크로파이썬

몇 가지 예외를 제외하고 Python의 언어 기능은 MicroPython에서도 사용할 수 있습니다. Python과 MicroPython의 가장 큰 차이점은 MicroPython이 제한된 조건에서 작동하도록 설계되었다는 것입니다.

그 때문에 MicroPython은 전체 표준 라이브러리와 함께 제공되지 않습니다. 여기에는 Python 표준 라이브러리의 작은 하위 집합만 포함됩니다. 그러나 여기에는 저수준 하드웨어에 액세스하기 위한 모듈이 포함되어 있습니다. 즉, GPIO에 쉽게 액세스하고 상호 작용할 수 있는 라이브러리가 있습니다.

또한 ESP8266 및 ESP32와 같은 Wi-Fi 기능이 있는 장치에는 네트워크 연결을 지원하는 모듈이 포함되어 있습니다.

왜 마이크로파이썬인가?

Python은 가장 널리 사용되는 간단하고 배우기 쉬운 프로그래밍 언어 중 하나입니다. 따라서 MicroPython의 출현으로 디지털 전자 제품을 매우 쉽고 간단하게 프로그래밍할 수 있습니다. 이전에 디지털 전자 제품을 프로그래밍한 적이 없다면 MicroPython이 좋은 출발점입니다.

MicroPython의 목표는 프로그래밍 디지털 전자 제품을 가능한 한 간단하게 만들어 누구나 사용할 수 있도록 하는 것입니다. 현재 MicroPython은 취미 생활자, 연구원, 교사, 교육자, 심지어 상용 제품에도 사용됩니다. ESP32 또는 ESP8266에서 LED를 깜박이는 코드는 다음과 같이 간단합니다.

# Complete project details at https://RandomNerdTutorials.com

from machine import Pin
from time import sleep

led = Pin(2, Pin.OUT)

while True:
  led.value(not led.value())
  sleep(0.5)

MicroPython의 한 가지 훌륭한 기능은 대화형 REPL(Read-Evaluate-Print Loop)과 함께 제공된다는 것입니다. REPL을 사용하면 코드를 컴파일하거나 업로드할 필요 없이 보드에 연결하고 코드를 빠르게 실행할 수 있습니다.

MicroPython – 보드 지원

MicroPython은 다음과 같은 다양한 장치 및 보드에서 실행됩니다.

 

  • ESP32
  • ESP8266
  • 파이보드
  • 마이크로:비트
  • 십대 3.X
  • WiPy - 파이컴
  • Adafruit 서킷 플레이그라운드 익스프레스
  • 기타 ESP32/ESP8266 기반 보드

MicroPython을 지원하는 다른 보드에 대한 자세한 내용은 다음 링크를 참조하십시오.

우리 프로젝트에서는 ESP32 및 ESP8266 보드와 함께 MicroPython을 사용할 것입니다.

ESP32는 ESP8266의 후속 제품입니다. 따라서 현재 ESP32를 최대한 활용하기 위해 MicroPython에서 모든 기능을 사용할 수 있는 것은 아닙니다. 이는 여전히 진행 중인 프로젝트입니다. 그러나 매우 유용하며 많은 프로젝트를 만들 수 있습니다.

ESP32 및 ESP8266 보드는 유사하며 MicroPython을 사용하여 프로그래밍하는 데 거의 차이를 느끼지 못할 것입니다. 이것은 ESP8266에 대해 작성하는 모든 것이 ESP32에서 변경 없이 실행되어야 함을 의미합니다(주로 핀 할당 변경).


uPyCraft IDE 설치

이 튜토리얼을 계속하기 전에 컴퓨터에 uPyCraft IDE를 설치해야 합니다. 다음 튜토리얼 중 하나에 따라 uPyCraft IDE를 설치하십시오:

참고: uPyCraft IDE를 설치하거나 사용하는 데 문제가 있는 경우 Thonny IDE를 사용하여 ESP32/ESP8266을 프로그래밍하는 방법에 대한 대체 가이드도 만들었습니다 .

 

ESP32/ESP8266으로 MicroPython 펌웨어 플래싱

다른 보드와 달리 MicroPython은 기본적으로 ESP32 또는 ESP8266에 플래시되지 않습니다. 

MicroPython으로 보드 프로그래밍을 시작하기 위해 가장 먼저 해야 할 일은

펌웨어 플래시/업로드입니다. 

다음 튜토리얼에 따라 보드에서 MicroPython 펌웨어를 플래시하십시오.

 

uPyCraft IDE 시작하기

이 섹션에서는 uPyCraft IDE 소프트웨어에 대한 개요를 제공하므로 MicroPython으로 ESP32/ESP8266 프로그래밍을 시작할 수 있습니다.

IDE는 개발, 디버깅 및 코드 업로드 프로세스를 더 쉽게 만드는 도구가 포함된 소프트웨어입니다. MicroPython으로 ESP 보드를 프로그래밍하는 방법에는 여러 가지가 있습니다. 우리는 uPyCraft IDE가 사용하기 쉽고 직관적이며 ESP 보드와 잘 작동하기 때문에 uPyCraft IDE를 선택했습니다.

이 시점에서 다음이 있다고 가정했습니다.

  • 컴퓨터에 설치된 uPyCraft IDE
  • MicroPython 펌웨어로 플래시된 ESP32/ESP8266

uPyCraft IDE 개요

uPyCraft IDE를 열면 다음과 같은 새 창이 열립니다.

 

uPyCraft IDE의 각 섹션을 자세히 살펴보겠습니다.

  1. 폴더 및 파일
  2. 편집자
  3. MicroPython 셸/터미널
  4. 도구
 

1. 폴더 및 파일

이 섹션에는 여러 폴더와 파일이 표시됩니다.

 

Device 폴더 는 현재 ESP 보드에 저장된 파일을 보여줍니다. 

          ESP32 또는 ESP8266이 직렬을 통해 uPyCraft IDE에 연결된 경우

          Device 폴더를 확장하면 저장된 모든 파일이 로드되어야 합니다. 

          기본적으로  boot.py 파일만 있어야 합니다.

          메인 코드를 실행하려면 main.py  파일을 생성하는 것이 좋습니다.

  • boot.py : 장치가 시작될 때 실행되고 여러 구성 옵션을 설정합니다.
  • main.py : 이것은 코드를 포함하는 메인 스크립트입니다. boot.py 직후에 실행 됩니다.

sd 폴더는 SD 카드에 저장된 파일에 액세스하기 위한 것입니다.

        이것은 SD 카드 슬롯과 함께 제공되는 PyBoard와 같은 보드에서만 작동합니다.

 

uPy_lib 는 내장 IDE 라이브러리 파일을 보여줍니다 .

 

workSpace 은 파일을 저장할 디렉토리입니다. 

        이 파일은 사용자가 정의한 디렉토리의 컴퓨터에 저장됩니다. 

        이것은 모든 파일을 쉽게 정리할 수 있도록 하는 데 특히 유용합니다.

 

uPycraft를 처음 사용할 때 작업 디렉토리를 선택하려면 workSpace  폴더를 클릭하십시오. 

작업 공간 경로 를 선택할 수 있는 새 창이 나타납니다 . 

새 폴더를 만들거나 기존 폴더를 작업 디렉터리로 선택합니다.

 

그런 다음 파일 > 디렉터리 새로 고침으로 이동하여 디렉터리 를 업데이트합니다.

 

참고: 사용자 디렉토리를 변경하려면 

Tools > InitConfig 로 이동하고 작업 공간 디렉토리 폴더를 클릭하여 다른 경로를 선택하기만 하면 됩니다.

2. 편집기

편집기 섹션은 코드를 작성하고 .py 파일을 편집하는 곳입니다. 

둘 이상의 파일을 열 수 있으며 편집기는 각 파일에 대한 새 탭을 엽니다.

3. MicroPython 셸/터미널

MicroPython Shell에서 새 파일을 업로드할 필요 없이

ESP 보드에서 즉시 실행할 명령을 입력할 수 있습니다. 

터미널은 또한 실행 중인 프로그램의 상태에 대한 정보를 제공하고

업로드 관련 오류, 구문 오류, 메시지 인쇄 등을 보여줍니다.

4. 도구

가장 오른쪽에 배치된 아이콘을 사용하면 작업을 빠르게 수행할 수 있습니다. 

각 버튼은 아래 그림에 레이블이 지정되어 있습니다.

 
  • New file: : 편집기에 새 파일을 만듭니다.
  • Open file 파일 열기 : 컴퓨터에서 파일을 엽니다.
  • Save file 파일 저장 : 파일을 저장합니다.
  • Download and run 다운로드 및 실행 : 보드에 코드를 업로드하고 코드를 실행합니다.
  • Stop 중 : 코드 실행 중지 – 셸에서 CRTL+C를 입력하여 모든 스크립트 실행을 중지하는 것과 같습니다.
  • Connect/Disconnect 연결/연결 끊기 : 직렬을 통해 보드에 연결하거나 연결을 끊습니다.    
    Tools Serial 에서 먼저 직렬 포트를 선택해야 합니다 .
  • Undo 실행 취소 : 코드 편집기에서 마지막 변경 사항을 실행 취소합니다.
  • Redo 다시 실행 : 코드 편집기에서 마지막 변경 사항을 다시 실행합니다.
  • Syntax check 구문 검사 : 코드 구문을 검사합니다.
  • Clear 지우기 : 셸/터미널 창 메시지를 지웁니다.

첫 번째 스크립트 실행

ESP32/ESP8266 보드에서 파일을 작성하고 코드를 실행하는 프로세스에 익숙해질 수 있도록

ESP32 또는 ESP8266의 온보드 LED를 단순히 깜박이는 새 스크립트를 업로드합니다.

ESP32 보드와의 커뮤니케이션 구축

보드에 MicroPython 펌웨어를 설치하고 USB 케이블을 통해 보드를 컴퓨터에 연결한 후 다음 단계를 따르세요.

 

1. Tools > Board 로 이동 하여 사용 중인 보드를 선택합니다.

2. Tools > Port  로 이동 하여 ESP가 연결된 COM 포트를 선택합니다.

3. Connect 버튼을 눌러  보드와 직렬 통신을 설정합니다.

4. 보드에 성공적으로 연결되면 >>> 가 Shell 창 에 나타나야 합니다. 

인쇄 명령을 입력하여 작동하는지 테스트할 수 있습니다.

>>> print('안녕하세요')
안녕하세요
>>>

"Hello" 메시지를 인쇄해야 합니다. 해당 메시지가 표시되는 경우에만 이 자습서를 계속할 수 있습니다. 그렇지 않으면 보드와 직렬 통신을 설정했거나 보드에서 MicroPython 펌웨어를 성공적으로 플래시했는지 확인하십시오.

보드에 main.py 파일 만들기 

1. " 새 파일 " 버튼을 눌러 새 파일을 만듭니다.

2. " 파일 저장 " 버튼을 눌러 컴퓨터에 파일을 저장합니다.

3. 새 창이 열리고 파일 이름을 main.py 로 지정하고 컴퓨터에 저장합니다.

4. 그 후 uPyCraft IDE에 다음이 표시되어야 합니다(장치의 boot.py 파일 및 main.py 파일 이 있는 새 탭 ).

 

5. "다운로드 및 실행 " 버튼을 클릭하여 ESP 보드에 파일을 업로드합니다.

6. 이제 장치 디렉토리가 main.py 파일을 로드해야 합니다. ESP에는 main.py 파일이 저장되어 있습니다.

깜박이는 LED 스크립트 업로드

1. 다음 코드를 편집기의 main.py 파일에 복사합니다.

# Complete project details at https://RandomNerdTutorials.com

from machine import Pin
from time import sleep

led = Pin(2, Pin.OUT)

while True:
  led.value(not led.value())
  sleep(0.5)

원시 코드 보기

2.  " 중지 " 버튼을 눌러 보드에서 실행되는 스크립트를 중지합니다.

3.  " 다운로드 및 실행 버튼 "을 클릭하여 ESP32 또는 ESP8266에 스크립트를 업로드합니다.

4. Shell 창에 "download ok"라는 메시지가 표시되어야 합니다.

스크립트 테스트

방금 보드에 업로드된 스크립트를 실행하려면 다음 단계를 따라야 합니다.

1. " 중지 " 버튼을 누릅니다 .

2. 온보드 ESP32/ESP8266 EN (ENABLE) 또는 RST (RESET) 버튼을 눌러 보드를 다시 시작하고 처음부터 스크립트를 실행합니다.

ESP32를 사용하는 경우 EN/RST 버튼을 누른 후 터미널 메시지가 다음 그림과 같이 표시되어야 합니다.

ESP32 또는 ESP8266 온보드 LED가 500밀리초마다 깜박여야 합니다. ESP32의 온보드 LED는 다음과 같습니다.

ESP8266 온보드 LED는 다음과 같습니다.

문제 해결 팁

uPyCraft IDE에서 발생하는 몇 가지 일반적인 문제와 오류 메시지를 발견했습니다. 일반적으로 온보드 EN/RST 버튼으로 ESP를 다시 시작하면 문제가 해결됩니다. 또는 uPyCraft IDE " 중지 " 버튼을 누르고 원하는 작업을 반복합니다. 작동하지 않는 경우 다음 일반적인 오류를 읽고 해결 방법을 찾으십시오.

오류 #1: 다음 메시지가 표시됩니다.

>>>
직렬 포트 선택 'COM4' 포트를 열 수 없습니다: FileNotFoundError(2, '시스템이 지정된 파일을 찾을 수 없습니다.', 없음, 2)

또는 이에 상응하는 메시지:

>>>
'COM4' 포트를 열 수 없습니다: PermissionError(13, '시스템에 연결된 장치가 작동하지 않습니다.', 없음, 31)

ESP 보드의 플러그를 뽑았다가 다시 꽂습니다. 그런 다음 도구 > 직렬 메뉴 에서 올바른 직렬 포트를 선택했는지 다시 확인하십시오 . 그런 다음 " 연결/연결 해제 " 버튼을 클릭하여 직렬 통신을 설정합니다. 이제 새 스크립트를 업로드하거나 새 코드를 다시 실행할 수 있습니다.

이 오류는 직렬 포트가 다른 프로그램(예: 직렬 터미널 또는 Arduino IDE)에서 사용되고 있음을 의미할 수도 있습니다. ESP 보드와 직렬 통신을 설정할 수 있는 모든 프로그램을 닫았는지 다시 확인하십시오. 그런 다음 ESP 보드의 플러그를 뽑았다가 다시 꽂습니다. 마지막으로 uPyCraft IDE를 다시 시작하십시오  . 도구 > 직렬  메뉴에서 직렬 포트를 선택하십시오.

오류 #2:  새 스크립트를 업로드하는 데 문제가 있습니다.

>>>
이미 다운로드 모델에 있습니다. 잠시만 기다려 주십시오.

uPyCraft IDE에서 " 중지 " 버튼을 눌러(1 또는 2회) 실행 중이던 코드가 중지되었는지 확인합니다. 그런 다음 " 다운로드 및 실행 " 버튼을 눌러 ESP 보드에 새 스크립트를 업로드합니다.

오류 #3: 새 스크립트를 업로드한 후 다음 메시지가 표시되는 경우:

>>>
이 파일을 다운로드할 준비가 되었습니다. 잠시만 기다려 주십시오!
...
다운로드 확인
os.listdir('.')
역추적(가장 최근 호출 마지막):
파일 "<stdin>", 줄 1, <module>
NameError: 'os' 이름이 정의되지 않았습니다.

또는 이 메시지:

>>>
이 파일을 다운로드할 준비가 되었습니다. 잠시만 기다려 주십시오!
...
다운로드 확인
os.listdir('.')
OS오류: [Errno 98]

새 파일이 보드에 성공적으로 업로드되었음을 의미합니다. " 다운로드 확인" 메시지 가 출력된 것을 알 수 있습니다 . ESP 온보드 " EN/RST " 버튼을 눌러 보드를 다시 시작하고 새로 업로드된 스크립트를 처음부터 다시 실행합니다.

오류 #4: ESP 보드 다시 시작, 새 스크립트 실행 또는 직렬 포트 열기 문제:

>>>
브라운아웃 감지기가 트리거되었습니다.

"Brownout detector was triggered" 오류 메시지는 일종의 하드웨어 문제가 있음을 의미합니다. 다음 문제 중 하나와 관련이 있는 경우가 많습니다.

  • 저품질 USB 케이블;
  • USB 케이블이 너무 깁니다.
  • 일부 결함이 있는 보드(잘못된 땜납 접합);
  • 컴퓨터 USB 포트 불량;
  • 또는 컴퓨터 USB 포트에서 제공하는 전원이 충분하지 않습니다.

해결책: 다른 짧은 USB 케이블(데이터 와이어 포함)을 시도하거나, 다른 컴퓨터 USB 포트를 시도하거나, 외부 전원 공급 장치가 있는 USB 허브를 사용하십시오.

중요:  계속해서 문제가 발생하거나 이상한 오류 메시지가 표시되면 최신 버전의 MicroPython 펌웨어로 ESP 보드를 다시 플래시하는 것이 좋습니다. MicroPython 펌웨어를 ESP32 및 ESP8266으로 플래시/업로드 .

오류 #5:  uPyCraft IDE에서 ESP32/ESP8266과 직렬 통신을 열려고 하면 때때로 MicroPython 펌웨어를 다시 플래시하도록 요청하는 "펌웨어 굽기" 창이 표시됩니다.

기본적으로 우리는 이것이 일어나고 있다고 생각합니다. 보드에서 스크립트를 실행할 때 때때로 해당 스크립트를 실행하고 작업을 수행하느라 바쁩니다. 따라서 COM 포트를 여러 번 열거나 ESP를 다시 시작하여 uPyCraft IDE와의 직렬 통신을 설정하는 데 사용할 수 있도록 잡아야 합니다.

Wi-Fi나 딥슬립을 사용하는 스크립트를 실행하거나 여러 작업을 수행하는 경우 통신을 설정하기 위해 3~4번 시도하는 것이 좋습니다. 할 수 없다면 MicroPython 펌웨어로 ESP를 다시 플래시하는 것이 좋습니다.

마무리

MicroPython 펌웨어를 사용하여 ESP32 및 ESP8266 보드를 프로그래밍하는 방법을 즐겁게 배웠기를 바랍니다. MicroPython에 대해 자세히 알아보려면 eBook: ESP32 및 ESP8266을 사용한 MicroPython 프로그래밍 을 참조하십시오 .