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 설치
다운로드
설치 후
python --version
결과
Python 3.12
pip 확인
pip --version
2단계 VS Code 설치
설치
필수 확장
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()
'Hardware > ESP32' 카테고리의 다른 글
| ESP32 시작하기 - 릴레이 이용 220V 모터 제어 (0) | 2026.07.09 |
|---|---|
| ESP32 3차원 마우스 만들기#1(배선도) (0) | 2026.07.03 |
| ESP32 - I2C 기반 기능 및 디바이스 분석 (0) | 2026.02.06 |
| ESP32 서보모터 최대 갯수 (0) | 2026.02.06 |
| ESP32 지원 센서 종류 (0) | 2026.02.04 |
