라즈베리파이 피코 WH 프로젝트 예제 50개 평가형 자료

MicroPython 코드 + 개념확인 OX 50문항 + 코드 관련 서술형 50문항 (순수 평가용)

응시 후 학번_이름_피코_점수_응시날짜.txt 형식으로 결과 파일을 저장할 수 있습니다.

📝 응시자 정보 및 점수 산출

OX 맞힌 개수0 / 50
OX 점수0

※ 학생 평가 전용 버전입니다. 문제를 풀고 결과 TXT 파일을 제출하세요.

🔗 프로젝트 바로가기

PROJECT 01

내장 LED 깜빡이기

핵심 개념기본 출력 / GPIO
준비물내장 LED
연결별도 연결 없음
주의Pico WH에서는 내장 LED를 Pin('LED')로 제어합니다.

💻 MicroPython 코드

from machine import Pin
import time

led = Pin("LED", Pin.OUT)

while True:
    led.value(1)
    time.sleep(0.5)
    led.value(0)
    time.sleep(0.5)

✅ 개념 확인 OX 퀴즈

문제 1-1. Pin('LED', Pin.OUT)은 Pico WH의 내장 LED를 출력 장치로 사용하기 위한 설정이다.

✍️ 코드 관련 서술형

문제 1-2. 이 코드에서 time.sleep(0.5)가 하는 역할을 서술하시오.

PROJECT 02

외부 LED 켜고 끄기

핵심 개념디지털 출력
준비물LED + 220Ω 저항
연결GP15 → 저항 → LED(+) / LED(-) → GND
주의LED에는 전류 제한 저항이 필요합니다.

💻 MicroPython 코드

from machine import Pin
import time

led = Pin(15, Pin.OUT)

while True:
    led.on()
    time.sleep(1)
    led.off()
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 2-1. led.on()과 led.off()는 GP15에 연결된 LED의 상태를 바꾸는 명령이다.

✍️ 코드 관련 서술형

문제 2-2. 외부 LED 회로에서 저항을 사용하는 이유를 서술하시오.

PROJECT 03

버튼 입력으로 LED 제어

핵심 개념디지털 입력 / 풀업
준비물버튼, LED
연결버튼: GP14-GND / LED: GP15
주의PULL_UP이면 버튼을 누르지 않았을 때 1, 누르면 0이 됩니다.

💻 MicroPython 코드

from machine import Pin
import time

button = Pin(14, Pin.IN, Pin.PULL_UP)
led = Pin(15, Pin.OUT)

while True:
    if button.value() == 0:
        led.on()
    else:
        led.off()
    time.sleep(0.05)

✅ 개념 확인 OX 퀴즈

문제 3-1. Pin.PULL_UP을 사용하면 버튼을 누르지 않았을 때 button.value()는 보통 1이다.

✍️ 코드 관련 서술형

문제 3-2. 이 코드에서 if button.value() == 0 조건이 버튼이 눌렸다는 뜻인 이유를 서술하시오.

PROJECT 04

버튼 누른 횟수 세기

핵심 개념입력 이벤트 / 상태 변화
준비물버튼
연결버튼 한쪽 GP14, 다른쪽 GND
주의old와 now를 비교하여 누르는 순간만 카운트합니다.

💻 MicroPython 코드

from machine import Pin
import time

button = Pin(14, Pin.IN, Pin.PULL_UP)
count = 0
old = 1

while True:
    now = button.value()
    if old == 1 and now == 0:
        count += 1
        print("누른 횟수:", count)
        time.sleep(0.2)
    old = now

✅ 개념 확인 OX 퀴즈

문제 4-1. old == 1 and now == 0 조건은 버튼이 눌리는 순간을 감지하는 데 사용된다.

✍️ 코드 관련 서술형

문제 4-2. old = now를 반복문 끝에서 실행하는 이유를 서술하시오.

PROJECT 05

부저로 삐 소리 내기

핵심 개념디지털 출력
준비물능동 부저
연결부저 +: GP16 / -: GND
주의능동 부저는 HIGH 신호만으로 소리가 납니다.

💻 MicroPython 코드

from machine import Pin
import time

buzzer = Pin(16, Pin.OUT)

while True:
    buzzer.on()
    time.sleep(0.2)
    buzzer.off()
    time.sleep(0.8)

✅ 개념 확인 OX 퀴즈

문제 5-1. 능동 부저는 단순히 HIGH/LOW 신호를 주는 것만으로도 소리를 낼 수 있다.

✍️ 코드 관련 서술형

문제 5-2. 이 코드에서 부저가 한 주기 동안 켜져 있는 시간과 꺼져 있는 시간을 쓰시오.

PROJECT 06

PWM 부저 음계 만들기

핵심 개념PWM / 주파수
준비물수동 부저
연결부저 +: GP16 / -: GND
주의수동 부저는 주파수를 바꾸어 음 높이를 조절합니다.

💻 MicroPython 코드

from machine import Pin, PWM
import time

buzzer = PWM(Pin(16))
notes = [262, 294, 330, 349, 392, 440, 494, 523]

for n in notes:
    buzzer.freq(n)
    buzzer.duty_u16(30000)
    time.sleep(0.3)

buzzer.duty_u16(0)

✅ 개념 확인 OX 퀴즈

문제 6-1. buzzer.freq(n)은 부저에서 나는 소리의 높이를 결정하는 주파수를 바꾼다.

✍️ 코드 관련 서술형

문제 6-2. 마지막에 buzzer.duty_u16(0)을 실행하는 이유를 서술하시오.

PROJECT 07

LED 밝기 조절

핵심 개념PWM 출력
준비물LED + 220Ω 저항
연결GP15 → 저항 → LED → GND
주의PWM 듀티비가 커질수록 LED가 더 밝게 보입니다.

💻 MicroPython 코드

from machine import Pin, PWM
import time

led = PWM(Pin(15))
led.freq(1000)

while True:
    for duty in range(0, 65535, 2000):
        led.duty_u16(duty)
        time.sleep(0.03)
    for duty in range(65535, 0, -2000):
        led.duty_u16(duty)
        time.sleep(0.03)

✅ 개념 확인 OX 퀴즈

문제 7-1. PWM 듀티 값이 커지면 LED가 켜져 있는 비율이 증가하여 더 밝게 보인다.

✍️ 코드 관련 서술형

문제 7-2. 이 코드에서 두 개의 for문이 각각 어떤 효과를 만드는지 서술하시오.

PROJECT 08

RGB LED 색 바꾸기

핵심 개념PWM 3채널
준비물RGB LED
연결R:GP13 / G:GP14 / B:GP15
주의공통 음극 RGB LED 기준입니다.

💻 MicroPython 코드

from machine import Pin, PWM
import time

r = PWM(Pin(13)); g = PWM(Pin(14)); b = PWM(Pin(15))
for x in (r, g, b):
    x.freq(1000)

colors = [(65535,0,0), (0,65535,0), (0,0,65535), (65535,65535,0), (0,65535,65535)]

while True:
    for cr, cg, cb in colors:
        r.duty_u16(cr); g.duty_u16(cg); b.duty_u16(cb)
        time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 8-1. RGB LED는 빨강, 초록, 파랑 LED의 밝기 조합으로 여러 색을 표현할 수 있다.

✍️ 코드 관련 서술형

문제 8-2. colors 리스트의 (65535, 65535, 0)은 어떤 색에 가까운지 쓰고 이유를 설명하시오.

PROJECT 09

가변저항 값 읽기

핵심 개념ADC 아날로그 입력
준비물가변저항
연결가운데: GP26 / 양끝: 3V3, GND
주의ADC 값은 0~65535 범위로 읽힙니다.

💻 MicroPython 코드

from machine import ADC
import time

pot = ADC(26)

while True:
    value = pot.read_u16()
    print("가변저항:", value)
    time.sleep(0.2)

✅ 개념 확인 OX 퀴즈

문제 9-1. ADC(26)은 GP26 핀을 아날로그 입력으로 사용한다.

✍️ 코드 관련 서술형

문제 9-2. read_u16()이 반환하는 값의 의미를 서술하시오.

PROJECT 10

가변저항으로 LED 밝기 조절

핵심 개념ADC + PWM
준비물가변저항, LED
연결ADC:GP26 / LED:GP15
주의ADC 값을 LED PWM 듀티 값으로 직접 사용합니다.

💻 MicroPython 코드

from machine import Pin, ADC, PWM
import time

pot = ADC(26)
led = PWM(Pin(15))
led.freq(1000)

while True:
    value = pot.read_u16()
    led.duty_u16(value)
    print(value)
    time.sleep(0.05)

✅ 개념 확인 OX 퀴즈

문제 10-1. 가변저항에서 읽은 ADC 값을 PWM 듀티 값으로 사용하면 LED 밝기를 조절할 수 있다.

✍️ 코드 관련 서술형

문제 10-2. 이 코드는 입력과 출력이 어떻게 연결된 예제인지 서술하시오.

PROJECT 11

조도센서 값 읽기

핵심 개념ADC / 빛 센서
준비물LDR 조도센서 모듈
연결AO:GP26 / VCC:3V3 / GND:GND
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import ADC
import time

light = ADC(26)

while True:
    value = light.read_u16()
    print("밝기값:", value)
    time.sleep(0.5)

✅ 개념 확인 OX 퀴즈

문제 11-1. light.read_u16()은 빛의 세기를 디지털 값으로 읽는다.

✍️ 코드 관련 서술형

문제 11-2. 조도센서 값을 주기적으로 출력하면 어떤 상황을 관찰할 수 있는지 서술하시오.

PROJECT 12

어두우면 LED 켜기

핵심 개념조건문 + ADC
준비물조도센서, LED
연결LDR AO:GP26 / LED:GP15
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import Pin, ADC
import time

light = ADC(26)
led = Pin(15, Pin.OUT)

while True:
    value = light.read_u16()
    if value < 25000:
        led.on()
    else:
        led.off()
    print(value)
    time.sleep(0.2)

✅ 개념 확인 OX 퀴즈

문제 12-1. if value < 25000 조건은 어두운 상태를 판단하기 위한 임계값 비교이다.

✍️ 코드 관련 서술형

문제 12-2. 임계값 25000을 실험 환경에 맞게 바꾸어야 하는 이유를 서술하시오.

PROJECT 13

토양 습도 센서 읽기

핵심 개념ADC / 환경 데이터
준비물토양 습도 센서
연결AO:GP27 / VCC:3V3 / GND:GND
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import ADC
import time

soil = ADC(27)

while True:
    value = soil.read_u16()
    print("토양 습도 원시값:", value)
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 13-1. 토양 습도 센서는 흙의 상태를 아날로그 값으로 나타낼 수 있다.

✍️ 코드 관련 서술형

문제 13-2. 토양 습도 센서를 오래 사용할 때 주의할 점을 서술하시오.

PROJECT 14

자동 물주기 알림

핵심 개념ADC + 부저
준비물토양습도센서, 부저
연결SOIL:GP27 / BUZZER:GP16
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import Pin, ADC
import time

soil = ADC(27)
buzzer = Pin(16, Pin.OUT)

while True:
    value = soil.read_u16()
    if value > 45000:
        buzzer.on()
        print("흙이 건조합니다!")
    else:
        buzzer.off()
        print("습도 적당:", value)
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 14-1. value > 45000일 때 부저가 울리는 것은 건조 상태를 알리기 위한 조건이다.

✍️ 코드 관련 서술형

문제 14-2. 이 예제를 실제 자동 물주기 장치로 확장하려면 어떤 장치가 추가로 필요한지 서술하시오.

PROJECT 15

온도 센서 LM35 읽기

핵심 개념ADC / 온도 변환
준비물LM35
연결OUT:GP26 / VCC:3V3 / GND:GND
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import ADC
import time

sensor = ADC(26)

while True:
    raw = sensor.read_u16()
    voltage = raw * 3.3 / 65535
    temp_c = voltage * 100
    print("온도:", temp_c, "°C")
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 15-1. voltage = raw * 3.3 / 65535는 ADC 원시값을 전압으로 바꾸는 계산이다.

✍️ 코드 관련 서술형

문제 15-2. temp_c = voltage * 100의 의미를 LM35 특성과 연결하여 설명하시오.

PROJECT 16

Pico 내부 온도 측정

핵심 개념내장 ADC
준비물내부 온도 센서
연결별도 연결 없음
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import ADC
import time

sensor = ADC(4)
conversion = 3.3 / 65535

while True:
    voltage = sensor.read_u16() * conversion
    temp = 27 - (voltage - 0.706) / 0.001721
    print("내부 온도:", temp)
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 16-1. ADC(4)는 Pico 내부 온도 센서 값을 읽는 데 사용된다.

✍️ 코드 관련 서술형

문제 16-2. 내부 온도값이 주변 공기 온도와 정확히 같지 않을 수 있는 이유를 서술하시오.

PROJECT 17

DHT11 온습도 읽기

핵심 개념디지털 센서
준비물DHT11
연결DATA:GP15 / VCC:3V3 / GND:GND
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import Pin
import dht
import time

sensor = dht.DHT11(Pin(15))

while True:
    sensor.measure()
    print("온도:", sensor.temperature(), "°C")
    print("습도:", sensor.humidity(), "%")
    time.sleep(2)

✅ 개념 확인 OX 퀴즈

문제 17-1. sensor.measure()를 실행한 뒤 temperature()와 humidity() 값을 읽는다.

✍️ 코드 관련 서술형

문제 17-2. DHT11 예제에서 time.sleep(2)를 사용하는 이유를 서술하시오.

PROJECT 18

DHT22 정밀 온습도

핵심 개념디지털 센서
준비물DHT22
연결DATA:GP15
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import Pin
import dht
import time

sensor = dht.DHT22(Pin(15))

while True:
    sensor.measure()
    print("온도:", sensor.temperature())
    print("습도:", sensor.humidity())
    time.sleep(2)

✅ 개념 확인 OX 퀴즈

문제 18-1. DHT22는 DHT11보다 일반적으로 더 정밀한 온습도 측정에 사용된다.

✍️ 코드 관련 서술형

문제 18-2. DHT11 코드에서 DHT22로 바꿀 때 코드상 핵심 변경점을 서술하시오.

PROJECT 19

초음파 거리 측정

핵심 개념펄스 시간 측정
준비물HC-SR04
연결TRIG:GP3 / ECHO:GP2
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import Pin, time_pulse_us
import time

trig = Pin(3, Pin.OUT)
echo = Pin(2, Pin.IN)

while True:
    trig.low()
    time.sleep_us(2)
    trig.high()
    time.sleep_us(10)
    trig.low()

    duration = time_pulse_us(echo, 1)
    distance = duration * 0.0343 / 2
    print("거리:", distance, "cm")
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 19-1. distance = duration * 0.0343 / 2는 왕복 시간을 이용하여 거리를 계산한다.

✍️ 코드 관련 서술형

문제 19-2. HC-SR04의 Echo 신호를 Pico WH에 연결할 때 주의할 점을 서술하시오.

PROJECT 20

거리 가까우면 경고음

핵심 개념초음파 + 부저
준비물HC-SR04, 부저
연결TRIG:GP3 / ECHO:GP2 / BUZZER:GP16
주의센서 모듈별 핀 배열을 확인하세요.

💻 MicroPython 코드

from machine import Pin, time_pulse_us
import time

trig = Pin(3, Pin.OUT)
echo = Pin(2, Pin.IN)
buzzer = Pin(16, Pin.OUT)

while True:
    trig.low(); time.sleep_us(2)
    trig.high(); time.sleep_us(10)
    trig.low()
    duration = time_pulse_us(echo, 1)
    distance = duration * 0.0343 / 2

    buzzer.value(distance < 20)
    print(distance)
    time.sleep(0.2)

✅ 개념 확인 OX 퀴즈

문제 20-1. buzzer.value(distance < 20)는 거리가 20cm보다 작으면 부저를 켠다.

✍️ 코드 관련 서술형

문제 20-2. 이 예제를 주차 보조 장치처럼 개선하려면 어떤 방식이 좋을지 서술하시오.

PROJECT 21

PIR 인체 감지

핵심 개념디지털 입력
준비물PIR 센서
연결OUT:GP14
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

pir = Pin(14, Pin.IN)
led = Pin("LED", Pin.OUT)

while True:
    if pir.value():
        print("움직임 감지!")
        led.on()
    else:
        led.off()
    time.sleep(0.2)

✅ 개념 확인 OX 퀴즈

문제 21-1. PIR 센서는 사람의 움직임을 디지털 신호로 감지할 수 있다.

✍️ 코드 관련 서술형

문제 21-2. PIR 센서를 보안등에 활용하는 원리를 설명하시오.

PROJECT 22

기울기 센서

핵심 개념디지털 입력
준비물Tilt sensor
연결OUT:GP14
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

tilt = Pin(14, Pin.IN, Pin.PULL_UP)

while True:
    if tilt.value() == 0:
        print("기울어짐")
    else:
        print("정상")
    time.sleep(0.5)

✅ 개념 확인 OX 퀴즈

문제 22-1. 기울기 센서는 기울어진 상태를 0 또는 1로 감지할 수 있다.

✍️ 코드 관련 서술형

문제 22-2. 기울기 센서가 디지털 입력 예제에 적합한 이유를 설명하시오.

PROJECT 23

진동 센서 감지

핵심 개념디지털 입력
준비물진동 센서
연결DO:GP14
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

vibration = Pin(14, Pin.IN)

while True:
    if vibration.value():
        print("진동 발생!")
    time.sleep(0.1)

✅ 개념 확인 OX 퀴즈

문제 23-1. 진동 센서는 충격이나 흔들림을 감지할 때 사용할 수 있다.

✍️ 코드 관련 서술형

문제 23-2. 진동 센서를 도난 경보 장치에 활용하는 방법을 설명하시오.

PROJECT 24

자석 리드 스위치

핵심 개념문 열림 감지
준비물리드 스위치
연결GP14-GND
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

door = Pin(14, Pin.IN, Pin.PULL_UP)

while True:
    if door.value():
        print("문 열림")
    else:
        print("문 닫힘")
    time.sleep(0.5)

✅ 개념 확인 OX 퀴즈

문제 24-1. 리드 스위치는 자석의 접근 여부에 따라 회로가 열리거나 닫힌다.

✍️ 코드 관련 서술형

문제 24-2. 문 열림 감지 장치에서 리드 스위치와 자석을 어떻게 배치하는지 설명하시오.

PROJECT 25

서보모터 각도 제어

핵심 개념PWM 제어
준비물SG90 서보
연결Signal:GP15
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, PWM
import time

servo = PWM(Pin(15))
servo.freq(50)

def angle(a):
    min_duty = 1638
    max_duty = 8192
    duty = int(min_duty + (max_duty - min_duty) * a / 180)
    servo.duty_u16(duty)

while True:
    for a in [0, 45, 90, 135, 180]:
        angle(a)
        time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 25-1. 서보모터는 PWM 신호의 펄스 폭에 따라 각도가 달라진다.

✍️ 코드 관련 서술형

문제 25-2. 서보모터에 외부 전원을 권장하는 이유를 설명하시오.

PROJECT 26

가변저항으로 서보 제어

핵심 개념ADC + PWM
준비물가변저항, 서보
연결ADC:GP26 / SERVO:GP15
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, PWM, ADC
import time

pot = ADC(26)
servo = PWM(Pin(15))
servo.freq(50)

while True:
    raw = pot.read_u16()
    duty = int(1638 + raw * (8192 - 1638) / 65535)
    servo.duty_u16(duty)
    print(raw, duty)
    time.sleep(0.05)

✅ 개념 확인 OX 퀴즈

문제 26-1. 가변저항의 ADC 값을 PWM 듀티로 변환하면 서보 각도를 제어할 수 있다.

✍️ 코드 관련 서술형

문제 26-2. 이 예제에서 입력 장치와 출력 장치를 각각 쓰고 동작 원리를 설명하시오.

PROJECT 27

릴레이 제어

핵심 개념디지털 출력
준비물릴레이 모듈
연결IN:GP15
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

relay = Pin(15, Pin.OUT)

while True:
    relay.on()
    print("릴레이 ON")
    time.sleep(2)
    relay.off()
    print("릴레이 OFF")
    time.sleep(2)

✅ 개념 확인 OX 퀴즈

문제 27-1. 릴레이는 작은 제어 신호로 더 큰 전기 회로를 켜고 끄는 데 사용된다.

✍️ 코드 관련 서술형

문제 27-2. 릴레이로 고전압 장치를 제어할 때 주의해야 할 점을 설명하시오.

PROJECT 28

7세그먼트 숫자 표시

핵심 개념다중 GPIO
준비물7세그먼트
연결a~g:GP2~GP8
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

pins = [Pin(i, Pin.OUT) for i in range(2, 9)]
nums = {0:[1,1,1,1,1,1,0], 1:[0,1,1,0,0,0,0], 8:[1,1,1,1,1,1,1]}

while True:
    for n in [0, 1, 8]:
        for p, v in zip(pins, nums[n]):
            p.value(v)
        time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 28-1. 7세그먼트는 여러 LED 조각을 조합하여 숫자를 표시한다.

✍️ 코드 관련 서술형

문제 28-2. 숫자 8을 표시할 때 대부분의 세그먼트가 켜지는 이유를 설명하시오.

PROJECT 29

I2C 주소 검색

핵심 개념I2C 기본
준비물I2C 센서/OLED
연결SDA:GP0 / SCL:GP1
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, I2C

i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
print("I2C 주소:", i2c.scan())

✅ 개념 확인 OX 퀴즈

문제 29-1. i2c.scan()은 연결된 I2C 장치의 주소 목록을 찾는 데 사용된다.

✍️ 코드 관련 서술형

문제 29-2. I2C 장치 주소를 먼저 확인해야 하는 이유를 설명하시오.

PROJECT 30

OLED에 글자 출력

핵심 개념I2C OLED
준비물SSD1306 OLED
연결SDA:GP0 / SCL:GP1
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, I2C
from ssd1306 import SSD1306_I2C

i2c = I2C(0, sda=Pin(0), scl=Pin(1))
oled = SSD1306_I2C(128, 64, i2c)

oled.fill(0)
oled.text("Pico WH", 0, 0)
oled.text("MicroPython", 0, 16)
oled.show()

✅ 개념 확인 OX 퀴즈

문제 30-1. oled.text()는 OLED 화면에 문자열을 출력하는 데 사용된다.

✍️ 코드 관련 서술형

문제 30-2. oled.fill(0)과 oled.show()의 역할을 각각 설명하시오.

PROJECT 31

OLED에 센서값 표시

핵심 개념I2C + ADC
준비물OLED, 가변저항
연결OLED I2C / POT:GP26
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, I2C, ADC
from ssd1306 import SSD1306_I2C
import time

i2c = I2C(0, sda=Pin(0), scl=Pin(1))
oled = SSD1306_I2C(128, 64, i2c)
pot = ADC(26)

while True:
    value = pot.read_u16()
    oled.fill(0)
    oled.text("ADC Value", 0, 0)
    oled.text(str(value), 0, 20)
    oled.show()
    time.sleep(0.3)

✅ 개념 확인 OX 퀴즈

문제 31-1. 센서값을 OLED에 표시하려면 읽기, 화면 지우기, 문자열 출력, show 순서가 필요하다.

✍️ 코드 관련 서술형

문제 31-2. 센서값을 화면에 계속 갱신할 때 화면을 지우는 과정이 필요한 이유를 설명하시오.

PROJECT 32

BMP280 기압 센서

핵심 개념I2C 환경센서
준비물BMP280
연결SDA:GP0 / SCL:GP1
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, I2C
import time
import bmp280

i2c = I2C(0, sda=Pin(0), scl=Pin(1))
bmp = bmp280.BMP280(i2c)

while True:
    print("온도:", bmp.temperature)
    print("기압:", bmp.pressure)
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 32-1. BMP280은 I2C 방식으로 온도와 기압 데이터를 읽을 수 있는 센서이다.

✍️ 코드 관련 서술형

문제 32-2. 기압 센서 데이터를 날씨 관찰에 활용하는 방법을 설명하시오.

PROJECT 33

MPU6050 가속도 읽기

핵심 개념I2C 모션센서
준비물MPU6050
연결SDA:GP0 / SCL:GP1
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, I2C
import time
from mpu6050 import MPU6050

i2c = I2C(0, sda=Pin(0), scl=Pin(1))
mpu = MPU6050(i2c)

while True:
    acc = mpu.read_accel_data()
    print(acc)
    time.sleep(0.5)

✅ 개념 확인 OX 퀴즈

문제 33-1. MPU6050은 가속도와 자이로 데이터를 측정하는 모션 센서이다.

✍️ 코드 관련 서술형

문제 33-2. 가속도 데이터를 이용해 기울기나 움직임을 판단하는 원리를 설명하시오.

PROJECT 34

RFID 카드 UID 읽기

핵심 개념SPI 통신
준비물MFRC522 RFID
연결SPI 핀 연결
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, SPI
import mfrc522
import time

reader = mfrc522.MFRC522(spi_id=0, sck=18, miso=16, mosi=19, cs=17, rst=20)

while True:
    stat, tag_type = reader.request(reader.REQIDL)
    if stat == reader.OK:
        stat, uid = reader.SelectTagSN()
        if stat == reader.OK:
            print("카드 UID:", uid)
    time.sleep(0.2)

✅ 개념 확인 OX 퀴즈

문제 34-1. RFID 리더는 카드의 UID를 읽어 사용자를 구분하는 데 사용할 수 있다.

✍️ 코드 관련 서술형

문제 34-2. RFID 출입 시스템에서 UID가 어떤 역할을 하는지 설명하시오.

PROJECT 35

UART GPS 데이터 읽기

핵심 개념UART 통신
준비물GPS 모듈
연결TX→GP1 / RX→GP0
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import UART, Pin
import time

uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

while True:
    if uart.any():
        line = uart.readline()
        print(line)
    time.sleep(0.1)

✅ 개념 확인 OX 퀴즈

문제 35-1. UART는 TX와 RX 선을 이용해 직렬 데이터를 주고받는다.

✍️ 코드 관련 서술형

문제 35-2. GPS 모듈의 TX를 Pico의 RX에 연결하는 이유를 설명하시오.

PROJECT 36

블루투스 HC-05 UART

핵심 개념UART 문자열 통신
준비물HC-05
연결TX→GP1 / RX→GP0
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import UART, Pin

uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

while True:
    if uart.any():
        msg = uart.readline()
        print("받음:", msg)
        uart.write(b"OK\n")

✅ 개념 확인 OX 퀴즈

문제 36-1. HC-05는 UART 통신으로 문자열 데이터를 주고받을 수 있다.

✍️ 코드 관련 서술형

문제 36-2. 스마트폰에서 보낸 문자를 Pico가 받는 과정을 설명하시오.

PROJECT 37

네오픽셀 LED 8개 제어

핵심 개념NeoPixel
준비물WS2812B
연결DIN:GP15
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import neopixel
import time

np = neopixel.NeoPixel(Pin(15), 8)

while True:
    for i in range(8):
        np.fill((0, 0, 0))
        np[i] = (30, 0, 0)
        np.write()
        time.sleep(0.1)

✅ 개념 확인 OX 퀴즈

문제 37-1. 네오픽셀은 하나의 데이터 핀으로 여러 LED의 색을 제어할 수 있다.

✍️ 코드 관련 서술형

문제 37-2. np.write()가 필요한 이유를 설명하시오.

PROJECT 38

소리 센서 감지

핵심 개념아날로그/디지털
준비물마이크 소리 센서
연결AO:GP26
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import ADC
import time

sound = ADC(26)

while True:
    value = sound.read_u16()
    print("소리 크기:", value)
    time.sleep(0.1)

✅ 개념 확인 OX 퀴즈

문제 38-1. 소리 센서의 아날로그 출력은 소리 크기에 따라 달라질 수 있다.

✍️ 코드 관련 서술형

문제 38-2. 소리 센서값으로 박수 감지 장치를 만드는 방법을 설명하시오.

PROJECT 39

화염 센서 경보

핵심 개념디지털 입력
준비물Flame sensor
연결DO:GP14 / BUZZER:GP16
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

flame = Pin(14, Pin.IN)
buzzer = Pin(16, Pin.OUT)

while True:
    if flame.value() == 0:
        print("화염 감지!")
        buzzer.on()
    else:
        buzzer.off()
    time.sleep(0.2)

✅ 개념 확인 OX 퀴즈

문제 39-1. 화염 센서는 불꽃을 감지하면 경보 장치와 연결해 사용할 수 있다.

✍️ 코드 관련 서술형

문제 39-2. 화염 센서 실험에서 안전상 주의할 점을 설명하시오.

PROJECT 40

가스 센서 MQ-2 읽기

핵심 개념아날로그 입력
준비물MQ-2
연결AO:GP26
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import ADC
import time

gas = ADC(26)

while True:
    value = gas.read_u16()
    print("가스 센서값:", value)
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 40-1. MQ-2 센서는 가스 농도 변화에 따라 아날로그 값이 달라질 수 있다.

✍️ 코드 관련 서술형

문제 40-2. 가스 센서값을 바로 절대 농도로 믿으면 안 되는 이유를 설명하시오.

PROJECT 41

빗물 감지 센서

핵심 개념ADC 센서
준비물Rain sensor
연결AO:GP27
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import ADC
import time

rain = ADC(27)

while True:
    value = rain.read_u16()
    print("빗물 감지값:", value)
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 41-1. 빗물 센서는 물이 닿았을 때 저항이나 전압 변화가 생긴다.

✍️ 코드 관련 서술형

문제 41-2. 빗물 감지 센서를 자동 창문 닫기 장치에 활용하는 방법을 설명하시오.

PROJECT 42

라인 트레이서 센서

핵심 개념디지털 입력
준비물IR 라인 센서
연결OUT:GP14
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

line = Pin(14, Pin.IN)

while True:
    if line.value():
        print("흰색 또는 반사 많음")
    else:
        print("검정선 감지")
    time.sleep(0.2)

✅ 개념 확인 OX 퀴즈

문제 42-1. 라인 센서는 바닥의 검정/흰색 반사 차이를 감지한다.

✍️ 코드 관련 서술형

문제 42-2. 라인 트레이서 로봇이 선을 따라가는 기본 원리를 설명하시오.

PROJECT 43

IR 장애물 감지

핵심 개념디지털 입력
준비물IR obstacle sensor
연결OUT:GP14
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

ir = Pin(14, Pin.IN)
led = Pin("LED", Pin.OUT)

while True:
    detected = ir.value() == 0
    led.value(detected)
    print("장애물:", detected)
    time.sleep(0.2)

✅ 개념 확인 OX 퀴즈

문제 43-1. IR 장애물 센서는 적외선 반사를 이용하여 물체 유무를 감지한다.

✍️ 코드 관련 서술형

문제 43-2. 장애물 감지 로봇에서 이 센서를 어떻게 활용할 수 있는지 설명하시오.

PROJECT 44

미니 DC 모터 제어

핵심 개념모터드라이버
준비물DC 모터
연결IN:GP15
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin
import time

motor = Pin(15, Pin.OUT)

while True:
    motor.on()
    print("모터 ON")
    time.sleep(2)
    motor.off()
    print("모터 OFF")
    time.sleep(2)

✅ 개념 확인 OX 퀴즈

문제 44-1. DC 모터는 Pico GPIO에 직접 연결하지 않고 드라이버를 사용하는 것이 안전하다.

✍️ 코드 관련 서술형

문제 44-2. 모터를 GPIO에 직접 연결하면 안 되는 이유를 설명하시오.

PROJECT 45

DC 모터 속도 조절

핵심 개념PWM 모터 제어
준비물모터드라이버
연결PWM:GP15
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

from machine import Pin, PWM
import time

motor = PWM(Pin(15))
motor.freq(1000)

while True:
    for speed in range(0, 65535, 5000):
        motor.duty_u16(speed)
        time.sleep(0.2)
    motor.duty_u16(0)
    time.sleep(1)

✅ 개념 확인 OX 퀴즈

문제 45-1. PWM 듀티를 바꾸면 DC 모터의 평균 전압이 달라져 속도가 변한다.

✍️ 코드 관련 서술형

문제 45-2. PWM으로 모터 속도를 제어하는 원리를 설명하시오.

PROJECT 46

Wi-Fi 연결 확인

핵심 개념Pico WH Wi-Fi
준비물내장 무선 기능
연결없음
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

import network
import time

ssid = "YOUR_WIFI"
password = "YOUR_PASSWORD"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

while not wlan.isconnected():
    print("연결 중...")
    time.sleep(1)

print("연결 완료:", wlan.ifconfig())

✅ 개념 확인 OX 퀴즈

문제 46-1. network.WLAN(network.STA_IF)는 Pico WH를 무선 공유기에 연결하는 스테이션 모드이다.

✍️ 코드 관련 서술형

문제 46-2. wlan.ifconfig()로 확인할 수 있는 정보를 설명하시오.

PROJECT 47

웹서버로 LED 제어

핵심 개념Wi-Fi 웹서버
준비물내장 LED
연결없음
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

import network
import socket
from machine import Pin
import time

ssid = "YOUR_WIFI"
password = "YOUR_PASSWORD"
led = Pin("LED", Pin.OUT)

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

while not wlan.isconnected():
    time.sleep(1)

addr = socket.getaddrinfo("0.0.0.0", 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)

print("접속 주소:", wlan.ifconfig()[0])

while True:
    cl, addr = s.accept()
    request = cl.recv(1024).decode()
    if "/on" in request:
        led.on()
    if "/off" in request:
        led.off()
    html = "<h1>Pico WH LED</h1><a href='/on'>ON</a><br><a href='/off'>OFF</a>"
    cl.send("HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n")
    cl.send(html)
    cl.close()

✅ 개념 확인 OX 퀴즈

문제 47-1. Pico WH는 socket을 이용하여 간단한 웹서버로 동작할 수 있다.

✍️ 코드 관련 서술형

문제 47-2. 브라우저에서 /on 주소에 접속하면 LED가 켜지는 과정을 설명하시오.

PROJECT 48

웹페이지에 온습도 표시

핵심 개념Wi-Fi + DHT
준비물DHT11/DHT22
연결DATA:GP15
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

import network, socket, time
from machine import Pin
import dht

ssid = "YOUR_WIFI"
password = "YOUR_PASSWORD"
sensor = dht.DHT11(Pin(15))

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

while not wlan.isconnected():
    time.sleep(1)

s = socket.socket()
s.bind(("0.0.0.0", 80))
s.listen(1)
print("IP:", wlan.ifconfig()[0])

while True:
    cl, addr = s.accept()
    sensor.measure()
    t = sensor.temperature()
    h = sensor.humidity()
    page = f"<h1>Pico WH Weather</h1><p>Temp: {t} C</p><p>Humidity: {h}%</p>"
    cl.recv(1024)
    cl.send("HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n")
    cl.send(page)
    cl.close()

✅ 개념 확인 OX 퀴즈

문제 48-1. 웹서버 응답 HTML에 센서값을 넣으면 브라우저에서 실시간 값을 볼 수 있다.

✍️ 코드 관련 서술형

문제 48-2. 이 예제에서 센서값이 HTML 페이지로 바뀌는 과정을 설명하시오.

PROJECT 49

IFTTT 웹훅 알림

핵심 개념HTTP 요청
준비물Wi-Fi + 센서
연결센서 자유
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

import network, urequests, time

ssid = "YOUR_WIFI"
password = "YOUR_PASSWORD"
event = "pico_alert"
key = "YOUR_IFTTT_KEY"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

while not wlan.isconnected():
    time.sleep(1)

url = f"https://maker.ifttt.com/trigger/{event}/with/key/{key}"
data = {"value1": "Pico WH", "value2": "Sensor Alert", "value3": "ON"}

response = urequests.post(url, json=data)
print(response.text)
response.close()

✅ 개념 확인 OX 퀴즈

문제 49-1. urequests.post()는 인터넷 서버로 데이터를 전송하는 HTTP 요청에 사용할 수 있다.

✍️ 코드 관련 서술형

문제 49-2. 센서 경고를 스마트폰 알림으로 보내는 전체 흐름을 설명하시오.

PROJECT 50

ThingSpeak로 센서값 전송

핵심 개념IoT 데이터 업로드
준비물Wi-Fi + ADC 센서
연결ADC:GP26
주의모듈 전압과 핀 배열을 반드시 확인하세요.

💻 MicroPython 코드

import network, urequests, time
from machine import ADC

ssid = "YOUR_WIFI"
password = "YOUR_PASSWORD"
api_key = "YOUR_THINGSPEAK_WRITE_KEY"
sensor = ADC(26)

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

while not wlan.isconnected():
    time.sleep(1)

while True:
    value = sensor.read_u16()
    url = f"https://api.thingspeak.com/update?api_key={api_key}&field1={value}"
    r = urequests.get(url)
    print("전송:", value, r.text)
    r.close()
    time.sleep(20)

✅ 개념 확인 OX 퀴즈

문제 50-1. ThingSpeak 전송 예제는 API Key와 field 값을 이용해 센서 데이터를 업로드한다.

✍️ 코드 관련 서술형

문제 50-2. 클라우드에 센서값을 주기적으로 저장하면 좋은 점을 설명하시오.