콘텐츠로 이동

피코 만나기 - 첫 만남과 환경 설정

🎯 이 장에서 배우는 것

  • [ ] 라즈베리파이 피코가 무엇인지 설명할 수 있다
  • [ ] Thonny IDE를 설치하고 피코를 연결할 수 있다
  • [ ] 첫 MicroPython 프로그램을 실행할 수 있다
  • [ ] print() 함수로 다양한 메시지를 출력할 수 있다

💡 왜 이걸 배우나요?

지금까지 프로그래밍은 화면 안에서만 일어났어. print("Hello")를 실행하면 모니터에 글자가 나타나는 게 전부였지.

그런데 피지컬 컴퓨팅은 달라. 코드를 실행하면 진짜 LED가 켜지고, 모터가 돌아가고, 센서가 온도를 측정해. 화면 밖 현실 세계에서 일이 벌어지는 거야!

이번 장에서 만날 라즈베리파이 피코는 손톱만 한 컴퓨터야. 이 작은 친구에게 코드를 넣으면, 진짜로 물건을 움직이고 불을 켜는 장치를 만들 수 있어.

스마트홈, 로봇, IoT 기기... 다 이런 작은 컴퓨터로 만들어져. 오늘 네가 배우는 게 바로 그 시작점이야!


📚 핵심 개념

개념 1: 라즈베리파이 피코

  1. 비유로 시작: "피코는 마치 아주 작은 컴퓨터와 같아요. 너희가 쓰는 데스크톱이나 노트북처럼 프로그램을 실행할 수 있지만, 모니터나 키보드 없이 혼자서 일을 처리하는 데 특화되어 있어요."

  2. 정확한 정의: "정확히 말하면, 피코는 마이크로컨트롤러(MCU)예요. 센서로 데이터를 읽고, LED나 모터 같은 장치를 제어하는 작은 두뇌 역할을 해요. 우리가 사용할 피코 2W는 WiFi와 블루투스까지 내장되어 있어서 인터넷에도 연결할 수 있어요."

  3. 예시로 확인: "예를 들어, 방 온도가 30도가 넘으면 자동으로 선풍기를 켜는 장치를 만들 수 있어요. 피코가 온도 센서를 읽고, 조건을 확인하고, 선풍기 전원을 제어하는 거죠."

쉽게 말하면: 피코 = 센서 읽고 + 생각하고 + 장치 제어하는 초소형 컴퓨터

flowchart LR A["🌡️ 센서<br/>입력"] --> B["🧠 피코<br/>처리"] B --> C["💡 LED/모터<br/>출력"] style A fill:#e3f2fd,stroke:#1976d2,stroke-width:2px style B fill:#fff3e0,stroke:#f57c00,stroke-width:2px style C fill:#e8f5e9,stroke:#388e3c,stroke-width:2px

개념 2: Thonny IDE

  1. 비유로 시작: "Thonny는 마치 코드를 쓰는 공책과 실행 버튼이 합쳐진 도구예요. 코드를 작성하고, 버튼 하나로 피코에 전달해서 실행시킬 수 있어요."

  2. 정확한 정의: "정확히 말하면, Thonny는 통합 개발 환경(IDE)이에요. 코드 편집기 + 실행기 + 오류 확인 도구가 하나로 합쳐진 프로그램이죠. 특히 MicroPython과 피코를 지원해서 우리 수업에 딱이에요."

  3. 예시로 확인: "예를 들어, Thonny에서 print("Hello")를 쓰고 초록색 실행 버튼을 누르면, 피코가 바로 그 명령을 실행해요."

쉽게 말하면: Thonny = 코드 쓰고 피코에 전달하는 리모컨 프로그램


개념 3: MicroPython

  1. 비유로 시작: "MicroPython은 마치 피코가 알아듣는 언어예요. 우리가 한국어로 대화하듯, 피코와 대화하려면 MicroPython으로 말해야 해요."

  2. 정확한 정의: "정확히 말하면, MicroPython은 Python을 아주 작은 컴퓨터에서도 돌아가게 만든 버전이에요. 문법은 Python과 거의 같지만, 피코처럼 메모리가 적은 장치에서도 실행돼요."

  3. 예시로 확인: "예를 들어, 학교에서 배운 print(), if, for 같은 Python 문법이 MicroPython에서도 똑같이 동작해요."

쉽게 말하면: MicroPython = 피코용으로 가볍게 만든 Python 사촌


개념 4: BOOTSEL 버튼

  1. 비유로 시작: "BOOTSEL 버튼은 마치 피코의 뇌 수술 모드를 켜는 버튼이에요. 이 버튼을 누른 채로 USB를 연결하면, 피코가 '나 준비됐어, 새 프로그램 넣어줘!'라고 기다려요."

  2. 정확한 정의: "정확히 말하면, BOOTSEL(Boot Select)을 누르면 피코가 USB 대용량 저장 장치 모드로 시작해요. 이때 MicroPython 펌웨어 파일을 피코에 복사할 수 있어요."

  3. 예시로 확인: "처음 피코를 설정할 때 딱 한 번만 이 방법을 써요. 그 다음부터는 그냥 USB만 연결하면 Thonny가 알아서 인식해요."

쉽게 말하면: BOOTSEL = 피코에 처음 언어를 가르칠 때 누르는 버튼

flowchart TB subgraph 처음_한_번만 A["🔘 BOOTSEL 누른 채"] --> B["🔌 USB 연결"] B --> C["📁 RPI-RP2 드라이브 나타남"] C --> D["📥 펌웨어 파일 복사"] end subgraph 그_다음부터 E["🔌 그냥 USB 연결"] --> F["✅ Thonny가 인식"] end style A fill:#ffebee,stroke:#c62828,stroke-width:2px style B fill:#fff3e0,stroke:#f57c00,stroke-width:2px style C fill:#e3f2fd,stroke:#1976d2,stroke-width:2px style D fill:#e8f5e9,stroke:#388e3c,stroke-width:2px style E fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px style F fill:#e8f5e9,stroke:#388e3c,stroke-width:2px

🔨 따라하기

Step 1: Thonny 설치하기

목표: 컴퓨터에 Thonny IDE를 설치한다

  1. 웹 브라우저에서 https://thonny.org 접속
  2. 오른쪽 위에서 운영체제(Windows/Mac)에 맞는 버전 다운로드
  3. 다운로드한 파일 실행
  4. Next → Next → Install → Finish (기본 설정 그대로!)
flowchart LR A["🌐 thonny.org<br/>접속"] --> B["⬇️ 다운로드<br/>클릭"] B --> C["📦 설치 파일<br/>실행"] C --> D["✅ 설치 완료!"] style A fill:#e3f2fd,stroke:#1976d2,stroke-width:2px style B fill:#fff3e0,stroke:#f57c00,stroke-width:2px style C fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px style D fill:#e8f5e9,stroke:#388e3c,stroke-width:2px

여기서 잠깐! 🤔

설치할 때 "Add to PATH" 같은 옵션이 나와도 그냥 기본값으로 진행해. 복잡한 설정은 필요 없어!


Step 2: 피코에 MicroPython 펌웨어 설치하기

목표: 피코가 MicroPython을 이해할 수 있게 언어를 설치한다

준비물: 라즈베리파이 피코 2W, USB 케이블

순서:

  1. 피코의 BOOTSEL 버튼을 찾아 (피코 윗면의 작은 흰색 버튼)
  2. BOOTSEL을 꾹 누른 상태에서 USB 케이블을 컴퓨터에 연결
  3. 연결 후 BOOTSEL 버튼에서 손을 뗌
  4. 컴퓨터에 RPI-RP2라는 USB 드라이브가 나타남
sequenceDiagram participant 너 as 👤 너 participant 피코 as 🔌 피코 participant PC as 💻 컴퓨터 너->>피코: BOOTSEL 버튼 꾹 누르기 너->>피코: USB 케이블 연결 피코->>PC: "나 준비됐어!" PC->>PC: RPI-RP2 드라이브 표시 너->>피코: 손 떼기
  1. Thonny 실행
  2. 메뉴에서 도구(Tools) → 옵션(Options) 클릭
  3. 인터프리터(Interpreter) 탭 선택
  4. 드롭다운에서 MicroPython (Raspberry Pi Pico) 선택
  5. 아래쪽 Install or update MicroPython 클릭
  6. Target volume: RPI-RP2 선택
  7. MicroPython variant: Raspberry Pi Pico 2 W 선택
  8. Install 클릭!

여기서 잠깐! 🤔

"RPI-RP2 드라이브가 안 보여요!" → BOOTSEL 버튼을 누른 상태에서 USB를 연결했는지 확인해. 순서가 바뀌면 안 돼!


Step 3: 피코 연결 확인하기

목표: Thonny가 피코를 제대로 인식했는지 확인한다

  1. 펌웨어 설치 후 USB를 뺐다가 다시 연결 (이번엔 BOOTSEL 안 눌러도 돼!)
  2. Thonny 오른쪽 아래 확인
MicroPython v1.x.x • Raspberry Pi Pico 2 W

이렇게 뜨면 성공! 🎉

만약 "Could not find device" 나 "포트를 찾을 수 없음" 메시지가 나오면: - USB 케이블을 다른 포트에 연결해보기 - Thonny를 껐다가 다시 켜보기 - 도구 → 옵션 → 인터프리터에서 포트를 직접 선택해보기


Step 4: 첫 번째 프로그램 - Hello World!

목표: 피코에서 첫 프로그램을 실행한다

코드:

# === WHAT: 첫 번째 MicroPython 프로그램 ===
# 피코가 "Hello, World!"를 출력하는 코드예요

# --- WHY: 왜 필요한지 ---
# 피코가 제대로 연결됐는지, 코드가 잘 실행되는지 확인하려면
# 가장 간단한 프로그램부터 테스트해야 해요

# HOW: 어떻게 동작하는지
print("Hello, World!")  # 괄호 안의 문자열을 화면에 출력해요

실행 방법: 1. Thonny 위쪽 흰색 편집 창에 코드 입력 2. 초록색 실행 버튼(▶) 클릭 또는 F5 키 3. "Where to save?" 창이 뜨면 MicroPython device 선택 4. 파일 이름: hello.py 입력 후 OK

실행 결과:

Hello, World!

Thonny 아래쪽 Shell 창에 이 메시지가 나타나면 성공! 🎉

여기서 잠깐! 🤔

축하해! 너 방금 하드웨어를 프로그래밍한 거야. 지금까지 컴퓨터 안에서만 코드가 돌아갔다면, 이제는 피코라는 외부 장치에서 코드가 실행된 거지!


Step 5: print() 더 실험해보기

목표: print() 함수의 다양한 사용법을 익힌다

코드:

# === WHAT: print() 함수 실험 ===
# 다양한 데이터를 출력해보는 코드예요

# --- WHY: 왜 필요한지 ---
# 나중에 센서 값을 확인하거나 디버깅할 때 print()를 많이 써요
# 지금 충분히 연습해두면 좋아요!

# HOW: 어떻게 동작하는지

# 1. 문자열 출력
print("안녕하세요!")  # 한글도 잘 돼요

# 2. 숫자 출력
print(2024)  # 따옴표 없이 숫자 그대로

# 3. 계산 결과 출력
print(10 + 20)  # 30이 출력돼요

# 4. 여러 개 한 번에 출력
print("나이:", 17, "살")  # 쉼표로 연결

# 5. 변수 사용
name = "피코"  # 변수에 값 저장
print("내 이름은", name)  # 변수 내용 출력

실행 결과:

안녕하세요!
2024
30
나이: 17 살
내 이름은 피코


Step 6: 변수로 자기소개 프로그램 만들기

목표: 변수를 활용해 간단한 프로그램을 만든다

코드:

# === WHAT: 자기소개 프로그램 ===
# 변수를 사용해서 피코가 자기소개를 하는 코드예요

# --- WHY: 왜 필요한지 ---
# 변수는 데이터를 저장하는 상자예요
# 센서 값, 설정값 등을 저장할 때 변수를 써요

# HOW: 어떻게 동작하는지

# 내 정보를 변수에 저장
device_name = "Pico 2W"        # 장치 이름
year = 2024                     # 올해 연도
feature = "WiFi와 Bluetooth"    # 특징

# 저장된 정보로 자기소개
print("=== 자기소개 ===")
print("저는", device_name, "입니다!")
print("탄생년도:", year)
print("특기:", feature, "가 됩니다!")
print("================")

실행 결과:

=== 자기소개 ===
저는 Pico 2W 입니다!
탄생년도: 2024
특기: WiFi와 Bluetooth 가 됩니다!
================

여기서 잠깐! 🤔

변수 이름은 의미 있게 지어야 해. a, b, x 같은 이름보다 device_name, temperature 같은 이름이 나중에 읽기 편해!


📝 전체 코드

# === 피코 첫 만남 - 완성 코드 ===
# 이 코드를 복사해서 Thonny에 붙여넣고 실행해보세요!

# 1단계: 첫 인사
print("="*30)
print("🎉 피코와의 첫 만남!")
print("="*30)

# 2단계: 피코 정보
device = "Raspberry Pi Pico 2W"
language = "MicroPython"
status = "연결 성공"

print()
print("📌 장치 정보")
print("  - 장치:", device)
print("  - 언어:", language)
print("  - 상태:", status)

# 3단계: 간단한 계산
a = 10
b = 20
result = a + b

print()
print("📌 계산 테스트")
print(" ", a, "+", b, "=", result)

# 4단계: 마무리
print()
print("="*30)
print("✅ 환경 설정 완료!")
print("다음 시간: LED 제어하기 💡")
print("="*30)

실행 결과:

==============================
🎉 피코와의 첫 만남!
==============================

📌 장치 정보
  - 장치: Raspberry Pi Pico 2W
  - 언어: MicroPython
  - 상태: 연결 성공

📌 계산 테스트
  10 + 20 = 30

==============================
✅ 환경 설정 완료!
다음 시간: LED 제어하기 💡
==============================


⚠️ 자주 하는 실수

실수 1: BOOTSEL 버튼 타이밍 실수

증상: USB 연결해도 RPI-RP2 드라이브가 안 보임

원인: BOOTSEL 버튼을 누르기 전에 USB를 먼저 연결함

해결:

❌ 잘못된 순서:
   1. USB 연결
   2. BOOTSEL 누름
   → 이미 일반 모드로 부팅됨!

✅ 올바른 순서:
   1. BOOTSEL 버튼 꾹 누름
   2. USB 연결 (버튼 누른 상태로!)
   3. 3초 후 버튼에서 손 뗌
   → RPI-RP2 드라이브 나타남!


실수 2: 따옴표 빠뜨리기

증상: NameError: name 'Hello' is not defined

원인: 문자열에 따옴표를 안 썼음

해결:

# 잘못된 코드
print(Hello World)  # Hello를 변수로 인식해서 에러!

# 올바른 코드
print("Hello World")  # 따옴표로 문자열임을 표시!


실수 3: 괄호 빠뜨리기

증상: SyntaxError: invalid syntax

원인: print 뒤에 괄호를 안 썼음

해결:

# 잘못된 코드
print "Hello"  # Python 2 문법 (오래된 버전)

# 올바른 코드
print("Hello")  # Python 3 / MicroPython 문법


실수 4: 인터프리터 설정 안 함

증상: 코드 실행해도 아무 반응 없음, 또는 컴퓨터에서 실행됨

원인: Thonny가 피코가 아닌 컴퓨터 Python으로 설정됨

해결:

1. 도구(Tools) → 옵션(Options) 클릭
2. 인터프리터(Interpreter) 탭
3. "MicroPython (Raspberry Pi Pico)" 선택
4. OK 클릭
5. Thonny 오른쪽 아래에 "MicroPython" 표시 확인!


실수 5: USB 케이블 문제

증상: 피코 LED는 켜지는데 컴퓨터가 인식 안 함

원인: 충전 전용 USB 케이블 사용 (데이터 선이 없음)

해결:

충전 전용 케이블 vs 데이터 케이블

충전 전용: 🔌 --- 전원만 ---→ 충전 가능, 인식 불가
데이터용:  🔌 --- 전원+데이터 ---→ 충전도 되고 인식도 됨!

💡 해결법: 스마트폰 데이터 동기화용 케이블로 교체


✅ 스스로 점검하기

  1. 피코는 어떤 종류의 컴퓨터인가요? (힌트: 3글자, ㅁㅇㅋ로 시작)

  2. 피코에 처음 펌웨어를 설치할 때 누르는 버튼의 이름은?

  3. print(10 + 5)를 실행하면 무엇이 출력될까요?

  4. 다음 코드의 실행 결과는?

    name = "Python"
    print("Hello", name)
    

  5. 왜 BOOTSEL 버튼을 누른 상태에서 USB를 연결해야 할까요?

정답 확인 1. **마이크로컨트롤러(MCU)** - 센서 읽기, 장치 제어에 특화된 작은 컴퓨터 2. **BOOTSEL** 버튼 - Boot Select의 줄임말 3. **15** - print()가 계산을 먼저 하고 결과를 출력함 4. **Hello Python** - 쉼표로 연결하면 공백으로 구분되어 출력됨 5. BOOTSEL을 누른 상태로 연결해야 **USB 대용량 저장 장치 모드**로 부팅되어 펌웨어 파일을 복사할 수 있음. 그냥 연결하면 일반 모드로 시작돼서 펌웨어 설치가 안 됨!

🚀 더 해보기

도전 1: 나만의 자기소개 (쉬움)

위 코드에서 변수 값을 바꿔서 너의 자기소개를 출력해봐!

my_name = "여기에_네_이름"
my_school = "여기에_학교_이름"
my_hobby = "여기에_취미"

print("안녕! 나는", my_name)
print("학교:", my_school)
print("취미:", my_hobby)

도전 2: 구구단 한 줄 출력 (중간)

변수와 계산을 활용해서 구구단 한 줄을 출력해봐!

dan = 7  # 7단
num = 1  # 1부터 시작

print(dan, "x", num, "=", dan * num)
# 출력: 7 x 1 = 7

# 이제 num을 2, 3, 4... 로 바꿔가며 출력해봐!

도전 3: 아스키 아트 출력 (어려움) ⭐

여러 줄의 print()를 사용해서 그림을 출력해봐!

print("   *")
print("  ***")
print(" *****")
print("*******")
print("   |")
# 크리스마스 트리!

# 네가 좋아하는 모양을 만들어봐!
# 힌트: 하트 ♥, 별 ★, 집 🏠 등

🔗 다음 장으로

오늘 배운 것: - ✅ 라즈베리파이 피코가 뭔지 - ✅ Thonny 설치하고 피코 연결하기 - ✅ MicroPython 펌웨어 설치 - ✅ print()로 메시지 출력하기 - ✅ 변수 사용하기

다음 장 "LED의 세계"에서는 드디어 눈에 보이는 결과를 만들어! 코드로 LED를 켜고, 끄고, 깜빡이게 만들 거야. 화면에 글자만 나오던 시대는 끝났어. 이제 진짜 세상을 움직이는 코드를 짜보자! 💡✨