라즈베리파이 4 첫날, 보드 구경부터 파이썬 첫 줄까지
목차
라즈베리파이 4 보드의 주요 포트와 부품 14곳, 40핀 GPIO가 각각 무슨 일을 하는지, 전원을 꽂기 전에 꼭 지켜야 할 안전 수칙은 무엇인지 정리합니다. 이어서 데스크톱 버전 Raspberry Pi OS에 기본으로 들어 있는 Thonny로 print()와 input()을 실행하며 파이썬 첫 코드를 직접 돌려 봅니다.
이 글은 라즈베리파이 입문 시리즈의 첫 글입니다. 보드와 코드를 처음 만나는 날에 필요한 내용만 골라 담았습니다. 기준 환경은 Raspberry Pi 4 Model B, Raspberry Pi OS (64-bit) 2026년 9월 15일 이미지(Debian 13 trixie 기반), Python 3.13.5, Thonny 4.1.7이며, 모든 수치는 2026년 9월 29일에 공식 문서로 확인했습니다. 버전이 달라도 이 글의 내용은 대부분 그대로 적용됩니다.
1. 라즈베리파이는 손바닥만 한 컴퓨터

1-1. SBC: 기판 한 장짜리 컴퓨터
라즈베리파이는 CPU, 메모리, 네트워크, USB, 영상 출력처럼 컴퓨터에 필요한 부품을 기판 한 장에 모두 올린 컴퓨터입니다. 이런 형태를 SBC(Single Board Computer)라고 부릅니다. Raspberry Pi 4 Model B의 기판 크기는 85 × 56 mm로 신용카드와 비슷하고, 64비트 쿼드코어 프로세서(BCM2711, 1.8GHz)를 씁니다. 공식 제품 설명서에서도 입문용 PC와 비슷한 데스크톱 성능이라고 소개합니다.
작다고 해서 장난감은 아닙니다. microSD 카드에 운영체제를 넣고 전원을 연결하면 부팅되고, 모니터·키보드·마우스를 꽂으면 인터넷 검색도 하고 코드도 짤 수 있는 진짜 컴퓨터가 됩니다. 여기에 일반 PC에는 없는 GPIO 핀이 달려 있어서 LED, 버튼, 센서 같은 전자 부품을 코드로 직접 다룰 수 있다는 점이 가장 큰 특징입니다.
1-2. 일반 PC, 아두이노와 무엇이 다를까
- 일반 PC: Windows나 macOS 같은 운영체제에서 무거운 프로그램을 돌리는 데 강합니다. 대신 크기가 크고 전기를 많이 쓰며, 전자 부품을 바로 연결할 핀이 없습니다.
- 라즈베리파이: Linux 기반의 Raspberry Pi OS가 돌아가는 작은 PC이면서, GPIO로 전자 부품까지 제어할 수 있습니다. 파이썬뿐 아니라 C/C++, JavaScript 등 대부분의 언어를 쓸 수 있고, 공식 문서는 파이썬 편집기로 Thonny를, GPIO 제어용으로 GPIO Zero 라이브러리를 소개합니다.
- 아두이노: 운영체제 없이 C/C++로 쓴 프로그램 하나만 반복해서 실행하는 마이크로컨트롤러 보드입니다. 센서를 읽고 모터를 돌리는 단순한 제어를 빠르게 해내는 데 알맞습니다.
정리하면, 화면·네트워크·파일 저장 같은 컴퓨터다운 일과 LED·센서 같은 하드웨어 제어를 한 보드에서 같이 하고 싶을 때 라즈베리파이가 잘 맞습니다.
1-3. 무엇을 만들 수 있나
집 안 조명과 온도를 관리하는 스마트홈, 여러 센서 값을 모아 보여 주는 IoT 관제 화면, 카메라를 단 보안 장치, 파일·웹 서버 같은 미니 서버, 바퀴 달린 로봇, 카메라 영상으로 사물을 알아보는 AI 엣지 장치까지 활용 범위가 넓습니다. 이 시리즈에서도 LED 켜기부터 시작해 이런 작품으로 한 걸음씩 넓혀 갈 예정입니다.
2. Raspberry Pi 4 보드 한 바퀴 둘러보기

보드를 GPIO 핀 줄이 위쪽에 오도록 놓고 위에서 내려다보면 아래 그림과 같습니다. 그림의 번호 순서대로, 왼쪽 아래 전원 포트에서 출발해 시계 반대 방향으로 가장자리를 한 바퀴 돌고, 마지막 14번은 보드 가운데에 있습니다.

2-1. 주요 포트와 부품 14곳의 역할
- USB-C 전원: 전원을 넣는 포트입니다. 권장 규격은 5V 3A(15W)이고, 이 포트로는 화면이 나오지 않습니다.
- micro HDMI 0: 모니터 출력 포트입니다. 모니터를 1대만 쓴다면 전원 포트에 가까운 이 HDMI0에 꽂는 것을 권장합니다.
- micro HDMI 1: 두 번째 모니터용 포트입니다. 두 포트를 함께 쓰면 모니터 2대를 연결할 수 있습니다(4K 모니터 2대는 기본 30Hz이고, 4K 60Hz는 설정을 바꾸면 HDMI0 한 포트에서만 됩니다).
- CSI 카메라 커넥터: 라즈베리파이 카메라 모듈의 얇은 리본 케이블을 꽂는 곳입니다. 보드에 "CAMERA"라고 적혀 있습니다.
- 3.5mm AV 잭: 이어폰 단자처럼 생긴 4극 잭으로, 스테레오 소리와 아날로그(컴포지트) 영상이 함께 나옵니다. 출력이 약해서 스피커를 바로 꽂으면 소리가 작을 수 있습니다. 소리는 HDMI로도 나옵니다.
- USB 2.0 ×2: 검은색 USB 포트 2개입니다. 키보드·마우스처럼 속도가 중요하지 않은 장치를 꽂습니다.
- USB 3.0 ×2: 안쪽이 파란색인 USB 포트 2개입니다. USB 메모리나 외장 SSD처럼 빠른 저장장치를 꽂습니다.
- 기가비트 이더넷: 랜선을 꽂는 유선 네트워크 포트(최대 1Gb/s)입니다.
- PoE 헤더: 랜선으로 전원까지 받는 PoE 기능용 4핀 단자입니다. 별도 부품(PoE HAT)이 있어야 쓸 수 있어서 입문 단계에서는 쓸 일이 없습니다.
- 40핀 GPIO 헤더: LED, 버튼, 센서를 연결하는 핀 40개입니다. 4장에서 자세히 봅니다.
- 무선 모듈: Wi-Fi(2.4/5GHz)와 블루투스 5.0을 담당하는 금속 덮개 부분입니다. 커넥터가 아니라 부품입니다.
- DSI 디스플레이 커넥터: 라즈베리파이용 터치 디스플레이 같은 전용 화면을 리본 케이블로 연결하는 곳입니다. 보드에 "DISPLAY"라고 적혀 있습니다.
- microSD 슬롯(뒷면): 운영체제가 들어 있는 microSD 카드를 꽂는 곳입니다. 보드 뒷면에 있어서 위에서는 보이지 않기 때문에 그림에 점선으로 표시했습니다.
- SoC(BCM2711): CPU와 GPU가 들어 있는 보드의 두뇌입니다. 옆의 RAM 칩과 함께 실제 계산을 맡습니다.
헷갈리기 쉬운 점
- USB-C는 전원 전용입니다. 노트북처럼 USB-C로 화면이 나올 거라 생각하기 쉽지만, 라즈베리파이 4의 USB-C 포트는 전원만 받습니다. 화면은 반드시 micro HDMI로 연결합니다.
- micro HDMI와 mini HDMI는 다른 규격입니다. 라즈베리파이 4는 가장 작은 micro HDMI를 씁니다. 일반 모니터에 연결하려면 한쪽이 micro HDMI, 다른 쪽이 일반 HDMI인 케이블(또는 변환 젠더)이 필요합니다.
- microSD 카드는 뒷면에 넣습니다. 카드 라벨이 바깥(보드 반대쪽)을 향하게 밀어 넣으면 되고, "딸깍" 소리 없이 끝까지 들어가면 멈춥니다. 뺄 때는 살짝 잡아당기면 됩니다.
2-2. 라즈베리파이 5를 가지고 있다면
이 글은 라즈베리파이 4 기준이지만, 최신 모델인 라즈베리파이 5도 기본 사용법은 같습니다. 다만 몇 가지가 다르니 기억해 두세요.
- 전원: 5V 5A(25W)급 USB-C 어댑터를 권장합니다(공식 27W 어댑터). 5V 3A 어댑터로도 켜지지만 USB 장치에 줄 수 있는 전류가 600mA로 제한됩니다.
- 포트: 3.5mm AV 잭이 없고, 카메라·디스플레이 겸용 커넥터 2개가 들어갑니다. 전원 버튼, RTC 배터리 단자, 팬 단자가 새로 생겼고 오른쪽 가장자리의 USB·이더넷 순서도 4와 다릅니다.
- GPIO: 40핀 배치와 3.3V 전압은 4와 같습니다. 4장의 핀 표는 5에서도 그대로 쓸 수 있습니다.
3. 준비물과 전원: 어댑터가 제일 중요해요

3-1. 첫 실습 준비물
- 라즈베리파이 4 본체
- USB-C 전원 어댑터 5V 3A(15W): 공식 "15W USB-C Power Supply"를 권장합니다.
- microSD 카드: 데스크톱 버전 OS는 32GB 이상을 권장합니다(화면 없는 Lite 버전은 8GB 이상). 2TB가 넘는 카드는 지원하지 않습니다.
- micro HDMI to HDMI 케이블과 모니터
- USB 키보드·마우스: 처음 설정할 때는 무선보다 유선이 편합니다. 익숙해지면 원격 접속으로 바꿀 수 있습니다.
- OS 설치용 PC: microSD에 OS를 쓰는 Raspberry Pi Imager를 실행할 컴퓨터입니다.
이후 GPIO 실습에서는 LED, 저항, 브레드보드, 점퍼선을 추가로 씁니다. 첫날에는 없어도 됩니다.
3-2. microSD에 OS 설치하기
PC에서 공식 도구인 Raspberry Pi Imager를 내려받아 실행하고, 장치로 Raspberry Pi 4, 운영체제로 Raspberry Pi OS (64-bit), 저장소로 microSD 카드를 차례로 고르면 사용자 설정(Customisation) 화면이 나옵니다. 여기서 사용자 이름·비밀번호·Wi-Fi 등을 미리 정하거나 건너뛸 수 있는데, 공식 문서는 미리 정해 두기를 권장합니다. 설정을 마치고 쓰기를 진행합니다. 쓰기가 끝난 카드를 보드 뒷면 슬롯에 꽂고, 모니터·키보드·마우스를 먼저 연결한 다음 전원을 맨 마지막에 꽂습니다. 라즈베리파이 4에는 전원 버튼이 없어서 전원을 꽂는 순간 바로 켜집니다.
Imager에서 사용자 설정을 건너뛰었다면 처음 켤 때 국가·언어, 사용자 이름과 비밀번호, Wi-Fi를 정하는 설정 화면이 나옵니다. 화면 안내를 따라 끝까지 진행하면 바탕화면이 나타납니다. Imager에서 미리 설정했다면 이 과정 없이 바로 바탕화면이 나옵니다. 이때 정한 비밀번호는 뒤에서 sudo 명령을 쓸 때 다시 물어보니 꼭 기억해 두세요. 2026년 4월 이후 이미지부터는 sudo를 쓸 때 비밀번호를 묻는 것이 기본값이 되었습니다.
3-3. 전원이 부족하면 생기는 일
라즈베리파이 문제의 상당수는 전원에서 시작됩니다. 전압이 보드 쪽에서 약 4.63V 아래로 떨어지면 저전압 상태가 되고, 이런 일이 반복되면 동작이 불안정해지거나 microSD 카드의 데이터가 손상될 수 있습니다. 그래서 공식 문서는 공식 전원 어댑터를 권장합니다. 5V 3A를 안정적으로 내지 못하는 약한 어댑터나 얇은 케이블은 저전압의 흔한 원인입니다. 또 USB 장치 전체에 줄 수 있는 전류는 최대 1.2A이므로, 외장 HDD처럼 전기를 많이 쓰는 장치는 전원이 따로 있는 USB 허브를 거쳐 연결합니다.
전원 상태는 터미널(바탕화면 위쪽의 검은 창 아이콘)에서 명령 한 줄로 확인할 수 있습니다.
vcgencmd get_throttled
throttled=0x0
결과가 0x0이면 저전압이나 성능 제한(스로틀) 기록이 없는 정상 상태입니다. 0이 아닌 값이 나오면 켜진 뒤 저전압이나 과열로 성능 제한이 있었다는 뜻이고, 어느 비트가 켜졌는지에 따라 원인이 다릅니다. 특히 0x1(지금 저전압)이나 0x10000(저전압 발생 기록) 비트가 켜져 있으면 어댑터와 케이블을 점검합니다. 예를 들어 0x50000은 저전압과 스로틀이 모두 있었다는 뜻입니다. 반면 0x80000(온도 제한 발생)처럼 온도 때문에 0이 아닌 값이 나오기도 하는데, 이때는 통풍이나 방열판을 점검합니다.
3-4. 내 환경 확인하기
같은 터미널에서 아래 명령으로 보드 모델, OS, CPU 종류, 파이썬 버전을 한 번에 볼 수 있습니다.
cat /proc/device-tree/model; echo
grep PRETTY_NAME /etc/os-release
uname -m
python3 --version
Raspberry Pi 4 Model B Rev 1.5
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
aarch64
Python 3.13.5
첫 줄 끝의 Rev 1.5는 보드 생산 버전이라 가진 보드마다 다를 수 있습니다. aarch64는 64비트 ARM이라는 뜻입니다. OS를 나중에 업데이트하면 버전 숫자도 조금씩 달라집니다.
4. 40핀 GPIO와 안전 수칙

4-1. GPIO는 코드로 다루는 전기 핀
GPIO(General Purpose Input/Output)는 이름 그대로 용도를 정해 두지 않은 입출력 핀입니다. 코드로 출력을 켜면 핀에 3.3V가 나오고 끄면 0V가 되어 LED를 켜고 끌 수 있고, 입력으로 쓰면 버튼이 눌렸는지 읽을 수 있습니다. 보드 위쪽 가장자리에 2줄 × 20개, 모두 40개의 핀이 2.54mm 간격으로 서 있습니다.
40개가 모두 GPIO는 아닙니다. 전원 핀(5V 2개, 3.3V 2개)과 GND(접지) 8개를 빼면 실제로 코드로 다루는 GPIO는 28개입니다. 핀 배치를 두 줄 그대로 그리면 다음과 같습니다.

아래 표는 같은 내용을 위치 번호 순서로 정리한 것입니다. 실습할 때 옆에 띄워 두고 참고하세요.
| 위치 번호 |
이름 | BCM 번호 |
비고 |
|---|---|---|---|
| 1 | 3.3V 전원 | — | 3.3V 출력 |
| 2 | 5V 전원 | — | 5V 전원 레일, GPIO에 연결 금지 |
| 3 | GPIO 2 | 2 | I2C1 SDA (고정 풀업 저항) |
| 4 | 5V 전원 | — | GPIO에 연결 금지 |
| 5 | GPIO 3 | 3 | I2C1 SCL (고정 풀업 저항) |
| 6 | GND | — | 접지 |
| 7 | GPIO 4 | 4 | GPCLK0 |
| 8 | GPIO 14 | 14 | UART TXD |
| 9 | GND | — | 접지 |
| 10 | GPIO 15 | 15 | UART RXD |
| 11 | GPIO 17 | 17 | 일반 입출력 (SPI1 CE1) |
| 12 | GPIO 18 | 18 | PCM_CLK · 하드웨어 PWM0 (SPI1 CE0) |
| 13 | GPIO 27 | 27 | 일반 입출력 |
| 14 | GND | — | 접지 |
| 15 | GPIO 22 | 22 | 일반 입출력 |
| 16 | GPIO 23 | 23 | 일반 입출력 |
| 17 | 3.3V 전원 | — | 3.3V 출력 |
| 18 | GPIO 24 | 24 | 일반 입출력 |
| 19 | GPIO 10 | 10 | SPI0 MOSI |
| 20 | GND | — | 접지 |
| 21 | GPIO 9 | 9 | SPI0 MISO |
| 22 | GPIO 25 | 25 | 일반 입출력 |
| 23 | GPIO 11 | 11 | SPI0 SCLK |
| 24 | GPIO 8 | 8 | SPI0 CE0 |
| 25 | GND | — | 접지 |
| 26 | GPIO 7 | 7 | SPI0 CE1 |
| 27 | GPIO 0 | 0 | ID_SD · HAT EEPROM용 I2C (고급 용도로 예약) |
| 28 | GPIO 1 | 1 | ID_SC · HAT EEPROM용 I2C (고급 용도로 예약) |
| 29 | GPIO 5 | 5 | 일반 입출력 |
| 30 | GND | — | 접지 |
| 31 | GPIO 6 | 6 | 일반 입출력 |
| 32 | GPIO 12 | 12 | 하드웨어 PWM0 |
| 33 | GPIO 13 | 13 | 하드웨어 PWM1 |
| 34 | GND | — | 접지 |
| 35 | GPIO 19 | 19 | PCM_FS · 하드웨어 PWM1 · SPI1 MISO |
| 36 | GPIO 16 | 16 | 일반 입출력 (SPI1 CE2) |
| 37 | GPIO 26 | 26 | 일반 입출력 |
| 38 | GPIO 20 | 20 | PCM_DIN · SPI1 MOSI |
| 39 | GND | — | 접지 |
| 40 | GPIO 21 | 21 | PCM_DOUT · SPI1 SCLK |
- 홀수 번호 핀은 보드 안쪽 줄, 짝수 번호 핀은 가장자리 줄에 있습니다. 1번 핀은 microSD 카드 쪽 끝의 안쪽 줄에 있습니다. 보드를 뒤집어 보면 1번 핀의 납땜 패드만 네모 모양인 경우가 많아 구별하는 데 도움이 됩니다.
- 비고의 I2C, SPI, UART, PWM은 센서나 모듈과 통신할 때 쓰는 특별한 기능입니다. 지금은 몰라도 괜찮고, 해당 부품을 다룰 때 다시 설명합니다.
- 27·28번(GPIO 0·1)은 확장 보드(HAT)가 자기 정보를 알려 주는 용도로 예약된 핀이라 일반 실습에는 쓰지 않습니다.
- 전원이 들어오면 모든 GPIO는 입력 상태로 시작합니다.
4-2. 위치 번호와 BCM 번호
핀을 부르는 번호가 두 가지라는 점이 입문자가 가장 많이 헷갈리는 부분입니다.
- 위치 번호(물리 번호, BOARD): 헤더에서 핀이 놓인 자리를 1부터 40까지 센 번호입니다.
- BCM 번호(GPIO 번호): 칩(SoC)이 붙인 GPIO 이름의 번호입니다. 공식 문서와 GPIO Zero 라이브러리는 이 번호를 씁니다.
예를 들어 위치 번호 11번 핀의 이름은 GPIO 17입니다. 그래서 나중에 GPIO 실습에서 GPIO Zero로 LED(17)이라고 쓰면 11번 자리에 꽂은 LED가 켜집니다.
헷갈리기 쉬운 점
- 핀 11번 ≠ GPIO 11. 위치 번호와 BCM 번호는 순서가 전혀 다릅니다. GPIO 11은 위치 번호 23번에 있습니다. 코드에 쓸 숫자는 표의 BCM 번호 칸에서, 선을 꽂을 자리는 위치 번호 칸에서 찾으세요.
- GPIO 몇 번이 몇 번째 핀인지 외울 필요는 없습니다. 위 표나 아래
pinout명령으로 그때그때 확인하면 됩니다.
4-3. 연결 전에 꼭 지킬 안전 수칙 8가지
라즈베리파이는 튼튼한 편이지만 전기를 잘못 연결하면 한순간에 고장 날 수 있습니다. 공식 문서의 안전 지침과 전원 규격을 바탕으로 입문자가 지켜야 할 규칙을 정리했습니다. 4장 맨 위 그림은 이 가운데 GPIO 배선과 관련된 5가지만 추려 요약한 것입니다.
- 정격 전원 쓰기: 5V 3A(15W) USB-C 어댑터를 씁니다. 저품질 전원은 SD 카드 손상과 불안정한 동작의 원인이 됩니다.
- USB 전력 한도 지키기: USB 장치 합계가 1.2A를 넘을 것 같으면 전원이 있는 USB 허브를 씁니다.
- 정전기 조심하기: 전원이 켜진 보드는 만지지 않고, 보드를 잡을 때는 가장자리만 잡습니다. 금속처럼 전기가 통하는 곳이 아니라 평평하고 전기가 안 통하는 곳에 올려 둡니다.
- GPIO는 3.3V 전용: GPIO 핀은 5V를 견디지 못합니다. 5V로 동작하는 센서(예: HC-SR04 초음파 센서의 ECHO 핀)는 전압 분배 저항이나 레벨 시프터를 거쳐 연결합니다.
- 5V 핀과 GND 단락 금지: 위치 번호 2·4번(5V)을 GPIO 핀이나 3.3V 핀에 잇거나, 5V와 GND가 직접 닿으면 보드가 망가질 수 있습니다. 점퍼선을 꽂기 전에 번호를 두 번 확인합니다.
- 전류 한도 지키기: GPIO 핀 하나에 최대 16mA, 전체 합계는 약 50mA까지입니다. LED에는 반드시 저항을 달고(공식 문서에 정해진 값은 없고, 입문 실습에서는 보통 220~330Ω을 많이 씁니다), 모터는 GPIO에 직접 연결하지 말고 모터 드라이버를 거칩니다.
- 전원을 끄고 배선하기: 선을 꽂거나 뺄 때는
sudo shutdown -h now로 종료한 뒤 전원 케이블을 뽑고 작업합니다. microSD 카드도 전원이 꺼진 상태에서 넣고 뺍니다. 키보드·마우스 같은 USB 장치는 켜진 상태에서 꽂아도 됩니다. - 열과 습기 피하기: 통풍이 잘 되는 곳에서 쓰고 케이스를 천 같은 것으로 덮지 않습니다. 동작 온도는 0~50℃이며 물과 습기를 피합니다.
7번의 "GPIO는 전원을 끄고 배선"은 공식 문서에 그대로 적힌 문장은 아니고, "전원이 켜진 기판을 만지지 말고 가장자리만 잡을 것"이라는 공식 안전 지침에서 나온 실습 원칙입니다. 입문 단계에서는 예외 없이 지키는 것이 안전합니다. 무엇보다 확실하지 않으면 연결하지 말고, 회로도와 핀 번호부터 다시 확인하는 습관이 가장 좋은 안전 장치입니다.
4-4. 터미널에서 핀 배치 보기
Raspberry Pi OS에는 GPIO Zero 라이브러리가 기본으로 설치되어 있고, 여기에 포함된 pinout 명령을 쓰면 터미널에 보드 그림과 40핀 배치가 출력됩니다. 출력이 길어서 여기에는 싣지 않았습니다. 보드 정보도 함께 나오고 비고 칸의 PWM·PCM 같은 대체 기능은 다 보여 주지 않지만, 핀 번호와 이름은 위 표와 같습니다.
pinout
5. OS와 파이썬, 그리고 Thonny

5-1. 코드가 하드웨어까지 가는 길
우리가 쓴 파이썬 코드가 LED를 켜기까지는 여러 층을 거칩니다.
- 내 프로그램:
first.py처럼 우리가 쓴 파이썬 파일입니다. - Python: 코드를 읽고 해석해서 실행하는 프로그램(인터프리터)입니다. Shell에서는 한 줄씩 바로 실행할 수 있고, 파일은 먼저 전체 문법을 검사한 뒤 위에서부터 차례로 실행합니다. Raspberry Pi OS에는 Python 3.13이 들어 있습니다.
- Raspberry Pi OS: 파일, 화면, 네트워크, GPIO 같은 자원을 관리하는 운영체제입니다. Debian 13 기반 Linux입니다.
- 하드웨어: CPU, 메모리, USB, GPIO 핀 같은 실제 부품입니다.
이렇게 층이 나뉘어 있어서 우리는 하드웨어의 세부 동작을 몰라도 파이썬 코드만으로 부품을 다룰 수 있습니다. GPIO도 운영체제를 거쳐 접근하는데, 사용자 계정이 gpio 그룹에 속해 있어야 합니다. 처음 만든 기본 계정은 이미 들어 있으니 따로 설정할 필요는 없습니다.
5-2. Thonny 열기
Thonny는 입문자용 파이썬 편집기로, 공식 문서가 라즈베리파이에서 파이썬을 쓸 때 권장하는 도구입니다. 데스크톱이 있는 Raspberry Pi OS(기본·Full 버전)에는 처음부터 설치되어 있습니다. 왼쪽 위 라즈베리 모양 메뉴에서 Programming → Thonny를 누르거나, 터미널에서 다음 명령으로 실행합니다.
apt policy thonny
thonny &
첫 줄은 Thonny가 설치되어 있는지와 버전을 보여 주고(Installed 줄에 4.1.7 계열 버전이 보이면 설치된 것입니다), 둘째 줄은 Thonny를 실행합니다. 끝의 &는 Thonny를 띄운 뒤에도 터미널을 계속 쓸 수 있게 해 줍니다. 화면 없는 Lite 버전처럼 Thonny가 없다면 sudo apt install thonny로 설치합니다.
Thonny 창은 크게 세 부분으로 나뉩니다. 맨 위에는 New(새 파일), Load(열기), Save(저장), Run(초록색 재생 버튼), Stop 같은 버튼이 한 줄로 있고, 가운데 넓은 흰 칸이 코드를 쓰는 편집기, 아래쪽 칸이 실행 결과가 나오는 Shell입니다. Shell에는 >>> 표시가 깜빡이는데, 여기에 코드를 한 줄 쓰고 Enter를 누르면 바로 실행되어 간단한 계산을 확인할 때 편리합니다.
5-3. 첫 파일 first.py 실행하기
편집기에 아래 세 줄을 입력하고 Save 버튼으로 first.py라는 이름으로 저장합니다.
print("안녕하세요.")
print("라즈베리파이 수업을 시작합니다.")
print(10 + 20)
이제 Run 버튼을 누르거나 키보드의 F5를 누르면 Shell 칸에 다음과 같이 나옵니다.
>>> %Run first.py
안녕하세요.
라즈베리파이 수업을 시작합니다.
30
>>>
첫 줄의 %Run first.py는 Thonny가 "이 파일을 실행했다"고 알려 주는 표시이고, 실제 프로그램이 출력한 것은 가운데 세 줄입니다. 파일이 Shell의 현재 폴더와 다른 곳에 있으면 %Run 앞에 %cd '폴더 경로' 줄이 한 번 더 보일 수 있고, 파일 이름에 공백이 있으면 따옴표로 감싸 표시됩니다. 저장하지 않은 새 파일에서 F5를 누르면 Thonny는 저장 없이 바로 실행하고, Shell에 %Run -c $EDITOR_CONTENT라고 표시합니다. 그래도 파일 이름이 있어야 나중에 다시 열 수 있으니 먼저 저장하는 습관을 들이세요. 코드를 한 줄씩 따라가며 보고 싶을 때는 Debug(단축키 Ctrl+F5)를 쓰면 되는데, Debug는 파일을 저장해야만 실행됩니다.
6. print()와 input() 첫 실습

프로그래밍은 해결하고 싶은 문제를 절차로 나누고, 그 절차를 코드로 옮겨 결과를 확인하는 과정입니다. 결과가 예상과 다르거나 오류가 나면 절차의 어디를 고쳐야 하는지 알려 주는 신호로 받아들이면 됩니다. 이번 장의 예제는 실행하기 전에 결과를 먼저 예상해 보고, 실행해서 맞는지 비교하며 따라 해 보세요.
6-1. print(): 화면에 보여 주기
print()는 괄호 안의 값을 Shell에 출력합니다. 글자(문자열)는 따옴표로 감싸고, 숫자와 계산식은 따옴표 없이 씁니다. 여러 값을 쉼표로 나열하면 사이에 공백이 한 칸씩 들어갑니다.
print("현재 온도:", 25)
print("Raspberry Pi")
print(7 * 6)
print("LED", "ON")
print("LED", "ON", sep="-")
현재 온도: 25
Raspberry Pi
42
LED ON
LED-ON
정확히 말하면 print()는 값들 사이에 sep(기본값 공백 한 칸)을 넣고, 끝에 end(기본값 줄바꿈)를 붙여 출력합니다. 마지막 줄처럼 sep="-"를 주면 공백 대신 하이픈으로 이어집니다. 괄호, 따옴표, 대소문자 중 하나만 틀려도 오류가 나니 정확하게 입력하세요. Print라고 쓰면 파이썬은 다른 이름으로 알아듣습니다.
6-2. 25와 "25"는 다릅니다
따옴표가 있고 없고의 차이는 생각보다 큽니다. 아래 코드의 결과를 먼저 예상해 보세요.
print(25 + 25)
print("25" + "25")
print(type(25), type("25"))
print("25" + 5)
50
2525
<class 'int'> <class 'str'>
Traceback (most recent call last):
File "...", line 4, in <module>
print("25" + 5)
~~~~~^~~
TypeError: can only concatenate str (not "int") to str
따옴표 없는 25는 정수(int)라서 더하면 50이 되고, 따옴표 안의 "25"는 문자열(str)이라서 +가 두 글자를 이어 붙여 2525가 됩니다. type()은 값의 종류를 알려 주는 함수입니다. 마지막 줄처럼 문자열과 정수를 +로 섞으면 파이썬은 어떻게 해야 할지 몰라 TypeError를 냅니다. 오류가 난 줄에서 프로그램이 멈추기 때문에 앞의 세 줄 결과는 정상적으로 나옵니다.
6-3. input(): 키보드로 입력받기
input()은 괄호 안의 안내 문구를 보여 준 뒤, 사용자가 입력하고 Enter를 칠 때까지 기다렸다가 그 값을 돌려줍니다. 돌려받은 값은 변수에 저장해서 씁니다.
name = input("이름을 입력하세요: ")
print(name, "학생, 환영합니다!")
F5로 실행한 뒤 Shell에 홍길동을 입력하고 Enter를 누르면 다음과 같이 나옵니다.
이름을 입력하세요: 홍길동
홍길동 학생, 환영합니다!
안내 문구 뒤에는 줄바꿈이 없어서 커서가 같은 줄에서 입력을 기다립니다. 그래서 안내 문구 끝에 : 처럼 공백을 하나 넣어 두면 입력한 글자와 붙지 않아 보기 좋습니다.
6-4. input()은 항상 문자열을 돌려줍니다
나이를 입력받아 내년 나이를 계산해 보겠습니다.
age = input("나이: ")
print(type(age))
print(int(age) + 1)
나이: 17
<class 'str'>
18
17을 입력했는데 type(age)는 str이라고 나옵니다. input()은 숫자를 입력해도 항상 문자열로 돌려주기 때문입니다. 그래서 계산하려면 int()로 정수로 바꿔야 합니다. 숫자가 아닌 abc를 입력하면 바꿀 수 없어서 다음 오류가 납니다.
ValueError: invalid literal for int() with base 10: 'abc'
헷갈리기 쉬운 점
- input()으로 받은 숫자는 숫자가 아닙니다.
age + 1이라고 쓰면 6-2의"25" + 5와 같은TypeError가 납니다. 계산에 쓰기 전에int(age)로 바꾸세요. - int()는 앞뒤 공백은 봐줍니다.
" 17 "처럼 공백이 섞여도 17로 바뀌지만,17살처럼 글자가 섞이면ValueError가 납니다.
6-5. 오류 메시지 읽는 법
오류가 나면 당황하지 말고 줄 번호 → 오류 종류 → 그 줄의 기호와 철자 순서로 확인합니다. 입문자가 가장 자주 만나는 두 가지를 보겠습니다. 먼저 print를 prin으로 잘못 쓴 경우입니다.
prin("x")
NameError: name 'prin' is not defined. Did you mean: 'print'?
NameError는 "그런 이름은 모른다"는 뜻입니다. Python 3.13은 친절하게 print를 쓰려던 것 아니냐고 추천까지 해 줍니다. 다음은 닫는 따옴표를 빠뜨린 경우입니다.
print("x)
File "...", line 1
print("x)
^
SyntaxError: unterminated string literal (detected at line 1)
SyntaxError는 파이썬 문법에 맞지 않는다는 뜻이고, ^ 표시가 문제가 시작된 위치를 가리킵니다. 여기서는 문자열이 끝나지 않았다(unterminated)고 알려 줍니다. 다만 표시된 위치가 실제로 고칠 곳과 다를 수 있습니다. 파이썬 공식 튜토리얼에 나오는 예를 보겠습니다.
while True print('Hello world')
File "...", line 1
while True print('Hello world')
^^^^^
SyntaxError: invalid syntax
^^^^^는 print 아래에 표시되지만, 실제로 고칠 곳은 그 앞, True 뒤에 빠진 콜론(:)입니다. 표시된 곳에서 문제가 안 보이면 바로 앞부분을 확인하세요. 괄호를 닫지 않았을 때는 SyntaxError: '(' was never closed처럼 괄호를 연 줄을 알려 줍니다.
또 하나 알아 둘 점이 있습니다. 파이썬은 파일을 실행하기 전에 전체 문법부터 검사하기 때문에, SyntaxError가 하나라도 있으면 파일의 어떤 줄도 실행되지 않습니다. 6-2의 TypeError처럼 실행 중에 나는 오류는 앞줄까지 결과가 나온 뒤 멈추는 것과 다릅니다. Thonny에서는 파일 경로 표시 등이 위 모습과 조금 다를 수 있습니다.
오류 메시지가 없는데 결과가 예상과 다른 경우도 있습니다. 이런 논리 오류는 파이썬이 알려 주지 않으니, 6-2처럼 결과를 먼저 예상하고 비교하는 습관이 도움이 됩니다.
6-6. 실습: 나만의 환영 프로그램
지금까지 배운 것을 모아, 이름과 만들고 싶은 작품을 입력받아 환영 인사와 목표를 출력하는 프로그램을 만들어 봅니다.
name = input("이름: ")
project = input("만들고 싶은 것: ")
print(name, "학생, 환영합니다!")
print("이번 학기 목표:", project)
이름: 홍길동
만들고 싶은 것: 교실 환경 알리미
홍길동 학생, 환영합니다!
이번 학기 목표: 교실 환경 알리미
문구를 바꾸거나 질문을 하나 더 추가해 보세요. 예를 들어 나이를 입력받아 int()로 바꾼 뒤 "10년 뒤에는 몇 살"을 출력하도록 고쳐 보면 6-4 내용까지 복습할 수 있습니다.
마치며
이번 글에서는 라즈베리파이가 어떤 컴퓨터인지, 라즈베리파이 4 보드의 주요 포트와 부품 14곳, 40핀 GPIO가 어디서 무슨 일을 하는지, 전원과 배선에서 지켜야 할 안전 수칙을 정리했습니다. 그리고 Thonny에서 print()와 input()으로 첫 파이썬 코드를 실행하며 문자열과 숫자의 차이, 오류 메시지 읽는 법까지 살펴봤습니다.
다음 글 라즈베리파이로 파이썬 실행하기에서는 라즈베리파이 OS가 리눅스라는 점에서 시작해, 터미널의 프롬프트 읽는 법, 폴더와 경로, 파일을 만들고 지우는 명령, sudo와 apt를 차례로 익힙니다. 마지막에는 작업 폴더 ~/webapps/ch05에 hello.py를 저장하고 python3 hello.py로 실행해 봅니다.
참고 자료
- Raspberry Pi 공식 문서: Raspberry Pi hardware (모델 사양, 부트 EEPROM): https://www.raspberrypi.com/documentation/computers/raspberry-pi.html
- Raspberry Pi 공식 문서: GPIO and the 40-pin header: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio
- Raspberry Pi 공식 문서: Power supply (권장 전원, GPIO 전류 한도): https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#power-supply
- Raspberry Pi 공식 문서: Getting started (microSD, 디스플레이, 전원): https://www.raspberrypi.com/documentation/computers/getting-started.html
- Raspberry Pi 공식 문서: Raspberry Pi OS (에디션, Thonny, vcgencmd): https://www.raspberrypi.com/documentation/computers/os.html
- Raspberry Pi OS 다운로드 페이지: https://www.raspberrypi.com/software/operating-systems/
- Raspberry Pi OS 릴리스 노트 (arm64): https://downloads.raspberrypi.com/raspios_arm64/release_notes.txt
- Raspberry Pi 4 Model B 제품 설명서 (Product Brief, 안전 지침 포함): https://datasheets.raspberrypi.com/rpi4/raspberry-pi-4-product-brief.pdf
- Raspberry Pi 4 Model B 데이터시트: https://datasheets.raspberrypi.com/rpi4/raspberry-pi-4-datasheet.pdf
- Raspberry Pi 4 기계 도면: https://datasheets.raspberrypi.com/rpi4/raspberry-pi-4-mechanical-drawing.pdf
- Python 공식 문서: 내장 함수 (print, input, int): https://docs.python.org/3/library/functions.html
- Python 공식 튜토리얼: 에러와 예외: https://docs.python.org/3/tutorial/errors.html
- Thonny 공식 사이트: https://thonny.org/
- Debian 패키지: thonny (trixie): https://packages.debian.org/trixie/thonny
- Debian 패키지: python3 (trixie): https://packages.debian.org/trixie/python3
'IoT' 카테고리의 다른 글
| 라즈베리파이 PWM으로 LED·부저·서보 제어하기 (0) | 2026.10.06 |
|---|---|
| 라즈베리파이 전자 기초, 옴의 법칙과 LED 저항 (0) | 2026.10.06 |
| 라즈베리파이로 LED제어하기 (1) | 2026.10.01 |
| 라즈베리파이로 파이썬 실행하기 (0) | 2026.10.01 |
| 아두이노 센서·모듈 12종 사용법 정리 (0) | 2026.06.07 |