홍창민정보·인공지능 교사

기초 · 난이도 쉬움

라즈베리파이 피코 핀 지도 3V3·VBUS·GND·ADC·I²C·UART를 고르는 법

피코 40개 핀 가운데 센서에 쓸 수 있는 핀과 피해야 할 핀, 3.3V와 5V 전원 핀의 차이, 아날로그 입력이 세 개뿐인 이유, I²C·UART·SPI 핀 묶음, 피코와 피코 2의 5V 신호 차이를 정리했어요.

글 홍창민 · 갱신 2026-10-31 · 읽는 데 약 6분 · 공식 데이터시트 확인

핀 번호가 두 가지예요

피코 핀은 두 가지 이름으로 불러요. 하나는 보드 가장자리를 따라 1번부터 40번까지 매긴 물리 핀 번호이고, 다른 하나는 코드에서 쓰는 GP 번호예요. 예를 들어 물리 20번 핀이 GP15예요. 코드에서는 Pin(15)라고 쓰고, 브레드보드에 꽂을 때는 "20번 핀"을 찾아야 해요. 둘을 헷갈리면 엉뚱한 핀에 선을 꽂게 되니, 배선표에는 늘 둘을 함께 적어요.

전원 핀

물리 핀 이름 하는 일
40 VBUS USB에서 들어온 5V. 5V 센서·모듈 전원으로 써요
39 VSYS 보드 전체의 입력 전원(1.8~5.5V). 전지로 피코를 켤 때 써요
37 3V3_EN GND에 이으면 3.3V를 만드는 전원 회로가 꺼져 피코도 꺼져요. 평소에는 비워 둬요
36 3V3(OUT) 3.3V 출력. 3.3V 센서 전원. 데이터시트는 300mA 이하로 쓰라고 권해요
35 ADC_VREF 아날로그 기준 전압. 비워 둬요
33 AGND 아날로그 전용 GND
3·8·13·18·23·28·38 GND 접지
30 RUN GND에 잠깐 이으면 피코가 다시 시작해요

VBUS는 USB가 꽂혀 있을 때만 5V가 나와요. 전지로 VSYS에 전원을 넣었다면 VBUS는 0V예요. 5V 센서를 쓰는 작품을 전지로 돌리려면 5V를 따로 만들어야 해요.

쓸 수 있는 GP 핀

일반 입출력(GPIO)은 GP0~GP22, GP26~GP28이에요. 무선 칩이 붙은 Pico W와 Pico 2 W에서 GP23·24·25·29는 보드 안쪽 일(무선 칩 제어, 전원 전압 재기)에 쓰여서 핀으로 나와 있지 않거나 쓰면 안 돼요. 보드 위의 작은 LED도 GP25가 아니라 무선 칩에 붙어 있어서, 코드에서는 Pin("LED")로 켜요.

아날로그 입력은 세 개뿐이에요

전압을 숫자로 읽는 아날로그 입력(ADC)은 GP26(ADC0), GP27(ADC1), GP28(ADC2) 세 핀뿐이에요. 다른 핀에 아날로그 센서를 꽂으면 0 아니면 1만 읽혀요. MicroPython의 read_u16()은 0~3.3V를 0~65535로 돌려줘요. 칩 안의 ADC는 12비트(0~4095)인데, 값을 16비트 범위로 늘려서 주는 거예요.

아날로그 센서가 네 개 이상이면 핀이 모자라요. 이럴 때는 I²C로 연결하는 ADC 확장 모듈(예: ADS1115)을 쓰면 아날로그 입력을 늘릴 수 있어요. 시나브로 PICO 작업대에서 아날로그 센서를 네 개 꽂으면 네 번째는 막히고 이 방법을 알려 줘요.

I²C·UART·SPI는 정해진 핀 묶음만

통신 기능은 아무 핀에서나 되지 않아요. 칩 안의 장치마다 쓸 수 있는 핀이 정해져 있어요.

기능 핀 묶음(앞쪽이 신호 이름 순서)
I2C0 (SDA, SCL) GP0·1, GP4·5, GP8·9, GP12·13, GP16·17, GP20·21
I2C1 (SDA, SCL) GP2·3, GP6·7, GP10·11, GP14·15, GP18·19, GP26·27
UART0 (TX, RX) GP0·1, GP12·13, GP16·17
UART1 (TX, RX) GP4·5, GP8·9, GP20·21
SPI0 (SCK, TX(MOSI), RX(MISO)) SCK GP2·6·18·22, TX GP3·7·19, RX GP0·4·16·20
SPI1 SCK GP10·14·26, TX GP11·15·27, RX GP8·12·28

I²C는 SDA·SCL 두 선에 장치 여러 개를 함께 이어 쓸 수 있어요. 대신 장치마다 주소가 달라야 해요(I²C 장치 여러 개 연결하기). UART는 한 묶음에 장치 하나예요. 피코에는 UART가 두 개(UART0, UART1)라서 GPS와 CO₂ 센서처럼 UART 장치 두 개까지 함께 쓸 수 있어요. 기본 I²C(GP4·5)와 UART1(GP4·5)이 같은 핀을 쓰니, 둘을 함께 쓸 때는 UART를 GP0·1이나 GP8·9로 옮겨요.

UART 배선은 엇갈려요. 센서의 TX(보내기)는 피코의 RX(받기)에, 센서의 RX는 피코의 TX에 이어요.

5V 신호를 바로 넣으면 안 되는 이유

피코의 핀은 3.3V로 동작해요. 첫 피코(RP2040)는 핀에 3.3V보다 높은 전압이 들어오면 망가질 수 있어요. 피코 2(RP2350)는 디지털 입력 핀이 3.3V 전원이 켜져 있는 동안 5.5V까지 견디도록 만들어졌지만, 두 가지 예외가 있어요. 아날로그 입력 핀(GP26~28)은 해당하지 않고, 피코 전원이 꺼져 있거나 막 켜지는 순간에는 데이터시트 기준 3.63V까지만 견뎌요. 센서를 다른 전원으로 켜면 피코보다 먼저 켜질 수 있어요.

그래서 이 자료실은 보드 종류와 상관없이 5V가 나오는 신호를 저항 두 개로 나눠서(분압) 피코에 넣어요. 방법은 5V 센서를 3.3V 피코에 안전하게 잇기에 정리했어요.

핀 고르기 순서

  1. 아날로그 센서부터 GP26·27·28에 배정해요. 가장 모자란 자원이에요.
  2. I²C 장치는 모두 한 묶음(보통 GP4·5)에 함께 이어요.
  3. UART 장치는 I²C와 겹치지 않는 묶음을 골라요.
  4. 남은 디지털 센서·LED·버튼은 GP15, GP14, GP13처럼 남은 핀에서 골라요.
  5. 고른 결과를 표로 적고, 코드의 Pin() 숫자와 하나씩 맞춰 봐요.

시나브로 PICO 작업대는 이 순서대로 핀을 자동으로 정하고, 이미 꽂은 부품의 핀은 옮기지 않아요. [내 코드와 맞춰 보기]를 누르면 코드가 읽는 핀과 실제 배선이 같은지도 비교해 줘요.

핀 상태를 코드로 확인하기

from machine import Pin, ADC
import time

btn = Pin(14, Pin.IN, Pin.PULL_UP)   # 버튼: 한쪽 GP14, 다른 쪽 GND
pot = ADC(Pin(26))                   # 가변저항 가운데 다리 → GP26

for i in range(5):
    raw = pot.read_u16()
    volt = raw * 3.3 / 65535
    print(f"DATA: btn={btn.value()}, raw={raw}, volt={volt:.2f}")
    time.sleep(1)

Pin.PULL_UP은 피코 안의 저항으로 핀을 3.3V 쪽에 걸어 두는 설정이에요. 버튼을 누르지 않으면 1, 누르면 GND와 이어져 0이 돼요. 이 설정 없이 아무것도 안 이은 입력 핀은 값이 0과 1 사이를 떠다녀요.

더 알아보기

글쓴이

홍창민 · 울산 학성고등학교 정보·인공지능 교사. 수업에 쓰는 도구(시나브로 PICO 웹 IDE, 학교 AI 서버 등)를 직접 만들어 운영해요. 소개 보기 · 고칠 곳 알려 주기