MicroPython은 ESP32에 최적화된 Python으로, Arduino IDE 없이도 Python 문법으로 GPIO, Wi-Fi, BLE, MQTT, I2C, SPI 등을 제어할 수 있습니다.

 

준비물

하드웨어

  • ESP32 DevKit V1
  • USB 케이블
  • Windows 11

또는

  • ESP32-S3
  • ESP32-C3
  • ESP32-WROOM
  • ESP32-WROVER

프로그램

  • Python 3.12 이상
  • VS Code
  • MicroPython
  • mpremote
  • esptool

1단계 Python 설치

다운로드

https://python.org

설치 후

python --version
 

결과

Python 3.12
 

pip 확인

pip --version
 

2단계 VS Code 설치

설치

https://code.visualstudio.com

필수 확장

Python

Pylance

MicroPico
 

또는

PyMakr
 

3단계 필요한 프로그램 설치

CMD

pip install esptool
 
pip install mpremote
 

확인

esptool.py version
 
mpremote
 

4단계 Firmware 다운로드

MicroPython 다운로드

https://micropython.org/download/esp32/

보드에 맞는

ESP32

ESP32-S3

ESP32-C3

ESP32-C6
 

Firmware 선택

ESP32_GENERIC
 

다운로드

firmware.bin
 

5단계 COM 포트 확인

장치관리자

COM5
 

예시

6단계 Flash 지우기

esptool.py --chip esp32 --port COM5 erase_flash

성공

Chip erase completed successfully
 

7단계 Firmware 올리기

esptool.py --chip esp32 --port COM5 --baud 460800 write_flash -z 0x1000 firmware.bin

esptool.py --chip esp32-s --port COM8 --baud 460800 write_flash -z 0x0 firmware.bin
 

완료

Hash verified.
Leaving...
 

8단계 REPL 접속

mpremote connect COM5
 

또는

mpremote

나오면

>>>
 

Python 사용 가능

첫 번째 프로그램

print("Hello ESP32")
 

출력

Hello ESP32
 
 

 

ESP32-S3 N16R8 개발보드는 대부분 GPIO 48에 WS2812 RGB LED가 연결되어 있습니다.

빨간색

 
from machine import Pin
import neopixel

np = neopixel.NeoPixel(Pin(48), 1)

np[0] = (255, 0, 0)
np.write()
 

초록색

 
np[0] = (0, 255, 0)
np.write()
 

파란색

 
np[0] = (0, 0, 255)
np.write()
 

흰색

 
np[0] = (255, 255, 255)
np.write()
 

LED 끄기

 
np[0] = (0, 0, 0)
np.write()
 

색상표

색상RGB 값
빨강 (255, 0, 0)
초록 (0, 255, 0)
파랑 (0, 0, 255)
노랑 (255, 255, 0)
보라 (255, 0, 255)
하늘 (0, 255, 255)
흰색 (255, 255, 255)
끄기 (0, 0, 0)

무지개 효과 예제

 
from machine import Pin
import neopixel
from time import sleep

np = neopixel.NeoPixel(Pin(48), 1)

colors = [
    (255, 0, 0),
    (255, 128, 0),
    (255, 255, 0),
    (0, 255, 0),
    (0, 255, 255),
    (0, 0, 255),
    (255, 0, 255),
]

while True:
    for c in colors:
        np[0] = c
        np.write()
        sleep(0.5)
 

먼저 확인할 사항

사용 중인 보드가 ESP32-S3-N16R8이라고 하셨는데, 제조사에 따라 RGB LED 핀이 다를 수 있습니다.

  • GPIO 48 (가장 흔함)
  • GPIO 38
  • GPIO 21
  • GPIO 2

다음 테스트를 먼저 해보세요.

 
from machine import Pin
import neopixel

np = neopixel.NeoPixel(Pin(48), 1)
np[0] = (255, 0, 0)
np.write()
 
 
 

 

+ Recent posts