📝 응시자 정보 및 점수 산출
※ 학생 평가 전용 버전입니다. 문제를 풀고 결과 TXT 파일을 제출하세요.
🔗 프로젝트 바로가기
내장 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)가 하는 역할을 서술하시오.
외부 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 회로에서 저항을 사용하는 이유를 서술하시오.
버튼 입력으로 LED 제어
💻 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 조건이 버튼이 눌렸다는 뜻인 이유를 서술하시오.
버튼 누른 횟수 세기
💻 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를 반복문 끝에서 실행하는 이유를 서술하시오.
부저로 삐 소리 내기
💻 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. 이 코드에서 부저가 한 주기 동안 켜져 있는 시간과 꺼져 있는 시간을 쓰시오.
PWM 부저 음계 만들기
💻 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)을 실행하는 이유를 서술하시오.
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문이 각각 어떤 효과를 만드는지 서술하시오.
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)은 어떤 색에 가까운지 쓰고 이유를 설명하시오.
가변저항 값 읽기
💻 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()이 반환하는 값의 의미를 서술하시오.
가변저항으로 LED 밝기 조절
💻 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. 이 코드는 입력과 출력이 어떻게 연결된 예제인지 서술하시오.
조도센서 값 읽기
💻 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. 조도센서 값을 주기적으로 출력하면 어떤 상황을 관찰할 수 있는지 서술하시오.
어두우면 LED 켜기
💻 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을 실험 환경에 맞게 바꾸어야 하는 이유를 서술하시오.
토양 습도 센서 읽기
💻 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. 토양 습도 센서를 오래 사용할 때 주의할 점을 서술하시오.
자동 물주기 알림
💻 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. 이 예제를 실제 자동 물주기 장치로 확장하려면 어떤 장치가 추가로 필요한지 서술하시오.
온도 센서 LM35 읽기
💻 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 특성과 연결하여 설명하시오.
Pico 내부 온도 측정
💻 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. 내부 온도값이 주변 공기 온도와 정확히 같지 않을 수 있는 이유를 서술하시오.
DHT11 온습도 읽기
💻 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)를 사용하는 이유를 서술하시오.
DHT22 정밀 온습도
💻 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로 바꿀 때 코드상 핵심 변경점을 서술하시오.
초음파 거리 측정
💻 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에 연결할 때 주의할 점을 서술하시오.
거리 가까우면 경고음
💻 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. 이 예제를 주차 보조 장치처럼 개선하려면 어떤 방식이 좋을지 서술하시오.
PIR 인체 감지
💻 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 센서를 보안등에 활용하는 원리를 설명하시오.
기울기 센서
💻 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. 기울기 센서가 디지털 입력 예제에 적합한 이유를 설명하시오.
진동 센서 감지
💻 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. 진동 센서를 도난 경보 장치에 활용하는 방법을 설명하시오.
자석 리드 스위치
💻 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. 문 열림 감지 장치에서 리드 스위치와 자석을 어떻게 배치하는지 설명하시오.
서보모터 각도 제어
💻 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. 서보모터에 외부 전원을 권장하는 이유를 설명하시오.
가변저항으로 서보 제어
💻 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. 이 예제에서 입력 장치와 출력 장치를 각각 쓰고 동작 원리를 설명하시오.
릴레이 제어
💻 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. 릴레이로 고전압 장치를 제어할 때 주의해야 할 점을 설명하시오.
7세그먼트 숫자 표시
💻 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을 표시할 때 대부분의 세그먼트가 켜지는 이유를 설명하시오.
I2C 주소 검색
💻 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 장치 주소를 먼저 확인해야 하는 이유를 설명하시오.
OLED에 글자 출력
💻 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()의 역할을 각각 설명하시오.
OLED에 센서값 표시
💻 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. 센서값을 화면에 계속 갱신할 때 화면을 지우는 과정이 필요한 이유를 설명하시오.
BMP280 기압 센서
💻 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. 기압 센서 데이터를 날씨 관찰에 활용하는 방법을 설명하시오.
MPU6050 가속도 읽기
💻 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. 가속도 데이터를 이용해 기울기나 움직임을 판단하는 원리를 설명하시오.
RFID 카드 UID 읽기
💻 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가 어떤 역할을 하는지 설명하시오.
UART GPS 데이터 읽기
💻 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에 연결하는 이유를 설명하시오.
블루투스 HC-05 UART
💻 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가 받는 과정을 설명하시오.
네오픽셀 LED 8개 제어
💻 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()가 필요한 이유를 설명하시오.
소리 센서 감지
💻 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. 소리 센서값으로 박수 감지 장치를 만드는 방법을 설명하시오.
화염 센서 경보
💻 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. 화염 센서 실험에서 안전상 주의할 점을 설명하시오.
가스 센서 MQ-2 읽기
💻 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. 가스 센서값을 바로 절대 농도로 믿으면 안 되는 이유를 설명하시오.
빗물 감지 센서
💻 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. 빗물 감지 센서를 자동 창문 닫기 장치에 활용하는 방법을 설명하시오.
라인 트레이서 센서
💻 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. 라인 트레이서 로봇이 선을 따라가는 기본 원리를 설명하시오.
IR 장애물 감지
💻 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. 장애물 감지 로봇에서 이 센서를 어떻게 활용할 수 있는지 설명하시오.
미니 DC 모터 제어
💻 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에 직접 연결하면 안 되는 이유를 설명하시오.
DC 모터 속도 조절
💻 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으로 모터 속도를 제어하는 원리를 설명하시오.
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()로 확인할 수 있는 정보를 설명하시오.
웹서버로 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가 켜지는 과정을 설명하시오.
웹페이지에 온습도 표시
💻 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 페이지로 바뀌는 과정을 설명하시오.
IFTTT 웹훅 알림
💻 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. 센서 경고를 스마트폰 알림으로 보내는 전체 흐름을 설명하시오.
ThingSpeak로 센서값 전송
💻 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. 클라우드에 센서값을 주기적으로 저장하면 좋은 점을 설명하시오.