๐ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ๋ฒ ์๋ฒฝ ๊ฐ์ด๋
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ, ์ ์ค์ํ๊ฐ?
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด(Raspberry Pi)๋ ์ํ ์ปดํจํฐ๋ก, ๋ค์ํ ์ ์ ํ๋ก์ ํธ์ IoT, ๋ก๋ด, ์ค๋งํธํ ๋ฑ์์ ๋๋ฆฌ ํ์ฉ๋ฉ๋๋ค. ํ์ง๋ง ํ๋ก ์ฐ๊ฒฐ์ด ์๋ชป๋๋ฉด ๋ถํ ์์์ด๋ ์ค์๋์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, ์ฌ๋ฐ๋ฅธ ์ฐ๊ฒฐ๋ฒ์ ์๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ด ๊ฐ์ด๋์์๋ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ๋ฒ์ ํต์ฌ์ ๋จ๊ณ๋ณ๋ก ์ฝ๊ณ ์์ ํ๊ฒ ์ค๋ช
ํฉ๋๋ค. ๐ ๏ธ
๐ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด GPIO๋?
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ GPIO(General Purpose Input/Output) ํ์ ์ธ๋ถ ์ผ์, LED, ๋ชจํฐ ๋ฑ ๋ค์ํ ๋ถํ๊ณผ ์ง์ ์ฐ๊ฒฐํ ์ ์๋ ์ธํฐํ์ด์ค์ ๋๋ค.
| ํ ์ข ๋ฅ | ์ค๋ช |
|---|---|
| 3.3V, 5V | ์ ์ ๊ณต๊ธ์ฉ |
| GND | ๊ทธ๋ผ์ด๋(์ ์ง) |
| GPIO | ์ ๋ ฅ/์ถ๋ ฅ ์ ํธ ์ ์ด |
| I2C, SPI, UART | ํต์ ์ฉ(์ผ์, ๋ชจ๋ ์ฐ๊ฒฐ) |
TIP: ํ๋ก ์ฐ๊ฒฐ ์ , ๋ฐ๋์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ์ ์์ ๊บผ์ฃผ์ธ์!
์๋ชป๋ ์ฐ๊ฒฐ๋ก ์ธํ ์ผํธ ๋ฐฉ์ง์ ์์ ์ ์ํด ํ์์ ๋๋ค.
๐ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ ์ค๋น๋ฌผ Top 7
- ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ๋ณธ์ฒด
- ๋ธ๋ ๋๋ณด๋
- ์ ํผ ์ผ์ด๋ธ
- ์ ํญ(Resistor)
- LED, ๋ฒํผ ๋ฑ ๋ถํ
- ๋ฉํฐ๋ฏธํฐ(ํ ์คํธ์ฉ)
- ํ์ด์ฌ ๋ฑ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ
| ์ค๋น๋ฌผ | ์ฉ๋ | ์ถ์ฒ ๋์ด๋ |
|---|---|---|
| ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด | ๋ฉ์ธ ์ปจํธ๋กค๋ฌ | โ โโโโ |
| ๋ธ๋ ๋๋ณด๋ | ์์ ํ๋ก ๊ตฌ์ฑ | โ โโโโ |
| ์ ํผ ์ผ์ด๋ธ | ์ ํธ ์ฐ๊ฒฐ | โ โโโโ |
| ์ ํญ | ์ ๋ฅ ์ ํ | โ โ โโโ |
| LED/๋ฒํผ | ํ ์คํธ ๋ถํ | โ โโโโ |
| ๋ฉํฐ๋ฏธํฐ | ์ ์/์ ํญ ์ธก์ | โ โ โ โโ |
| ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ | ์ฝ๋ ์คํ | โ โ โโโ |
๐ ๏ธ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ๋ฒ Step-by-Step
1. GPIO ํ ๋ฐฐ์น๋ ํ์ธํ๊ธฐ
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ๋ชจ๋ธ๋ง๋ค GPIO ํ ๋ฐฐ์น๊ฐ ๋ค๋ฅผ ์ ์์ผ๋, ์ฌ์ฉ ์ค์ธ ๋ชจ๋ธ์ ํ๋งต์ ๋ฐ๋์ ํ์ธํ์ธ์.
[๋ผ์ฆ๋ฒ ๋ฆฌํ์ด 40ํ GPIO ์์]
(1) 3.3V (2) 5V
(3) GPIO2 (4) 5V
(5) GPIO3 (6) GND
...
TIP: ํ ๋ฒํธ์ ๊ธฐ๋ฅ์ ํผ๋ํ์ง ๋ง์ธ์!
์ค์๋ก 5V์ ์ ํธ๋ฅผ ์ฐ๊ฒฐํ๋ฉด ๋ถํ์ด ์์๋ ์ ์์ต๋๋ค.
2. ๋ธ๋ ๋๋ณด๋์ ์ ํผ ์ผ์ด๋ธ ์ฐ๊ฒฐ
- ๋ธ๋ ๋๋ณด๋๋ ๋ฉ๋ ์์ด ํ๋ก๋ฅผ ๊ตฌ์ฑํ ์ ์์ด ์ด๋ณด์์๊ฒ ์ ํฉํฉ๋๋ค.
- ์ ํผ ์ผ์ด๋ธ์ ์ฌ์ฉํด ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ GPIO ํ๊ณผ ๋ธ๋ ๋๋ณด๋๋ฅผ ์ฐ๊ฒฐํ์ธ์.
[์์]
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด GPIO17 → ๋ธ๋ ๋๋ณด๋ → LED → ์ ํญ(220Ω) → GND
3. LED ํ๋ก ์ฐ๊ฒฐ ์์
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ๋ก์ธ LED ์ ๋ฑ ํ๋ก๋ฅผ ์๋ก ๋ค์ด ์ค๋ช ํฉ๋๋ค.
[ํ๋ก ๊ตฌ์ฑ]
1. GPIO17(11๋ฒ ํ) → LED์ ๊ธด ๋ค๋ฆฌ(์ ๋
ธ๋)
2. LED์ ์งง์ ๋ค๋ฆฌ(์บ์๋) → ์ ํญ(220Ω)
3. ์ ํญ → GND(6๋ฒ ํ)
# LED ์ ๋ฑ ํ์ด์ฌ ์ฝ๋ ์์
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, True) # LED ON
time.sleep(2)
GPIO.output(17, False) # LED OFF
GPIO.cleanup()
4. ๋ฒํผ ์ ๋ ฅ ํ๋ก ์ฐ๊ฒฐ ์์
๋ฒํผ์ ๋๋ ์ ๋ LED๊ฐ ์ผ์ง๋ ํ๋ก์ ๋๋ค.
[ํ๋ก ๊ตฌ์ฑ]
1. ๋ฒํผ ํ์ชฝ → GPIO18(12๋ฒ ํ)
2. ๋ฒํผ ๋ค๋ฅธ ์ชฝ → GND(14๋ฒ ํ)
3. LED ํ๋ก๋ ์์ ๋์ผํ๊ฒ ์ฐ๊ฒฐ
# ๋ฒํผ ์
๋ ฅ ํ์ด์ฌ ์ฝ๋ ์์
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
while True:
if GPIO.input(18) == GPIO.HIGH:
GPIO.output(17, True)
else:
GPIO.output(17, False)
time.sleep(0.1)
finally:
GPIO.cleanup()
โก ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ ์ ์ฃผ์์ฌํญ
- ์ ์ ์ฐ๊ฒฐ ์ , ํ๋ก ์ ๊ฒ ํ์!
- 3.3V์ 5V ๊ตฌ๋ถํด์ ์ฌ์ฉ
- GND(์ ์ง) ์ฐ๊ฒฐ ๋๋ฝ ์ฃผ์
- ์ ์ ๊ธฐ ๋ฐฉ์ง(์์ ๊นจ๋์ด, ๊ธ์ ์ ์ด ํผํ๊ธฐ)
- ํ ๋ฒํธ ํผ๋ ์ฃผ์
TIP: ๋ฉํฐ๋ฏธํฐ๋ก ์ ์/์ ํญ์ ์ธก์ ํ๋ฉฐ ํ๋ก๋ฅผ ์ ๊ฒํ๋ฉด ๋์ฑ ์์ ํฉ๋๋ค.
๐ฆ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ๋ฒ Top 10 ์ค์ ํ
- ํ๋งต ํ๋ฆฐํธํด์ ์์ ๋๊ธฐ
- ๋ธ๋ ๋๋ณด๋ ์ฌ์ฉ์ผ๋ก ๋ฉ๋ ์์ด ์คํ
- ์ ํญ์ ๋ฐ๋์ ์ฌ์ฉ(ํนํ LED, ์ผ์)
- GND ์ฐ๊ฒฐ์ ํญ์ ํ์ธ
- ์ฝ๋ ์คํ ์ ํ๋ก ์ฌ์ ๊ฒ
- ํ ๋ฒํธ์ BCM/BOARD ๋ชจ๋ ๊ตฌ๋ถ
- ํ ์คํธ ํ GPIO.cleanup() ํธ์ถ
- ์ผ์/๋ชจ๋ ๋ฐ์ดํฐ์ํธ ํ์ธ
- ์ ์ ๊ณต๊ธ์ ์์ ์ ์ผ๋ก
- ์ค์ ์ ์ฆ์ ์ ์ ์ฐจ๋จ
| ํ ๋ฒํธ | ์ค์ ํ ๋ด์ฉ | ํจ๊ณผ/์ด์ |
|---|---|---|
| 1 | ํ๋งต ํ๋ฆฐํธ | ์ค์ ๋ฐฉ์ง |
| 2 | ๋ธ๋ ๋๋ณด๋ ์ฌ์ฉ | ๋น ๋ฅธ ์คํ, ์์ ์ฉ์ด |
| 3 | ์ ํญ ์ฌ์ฉ | ๋ถํ ๋ณดํธ |
| 4 | GND ์ฐ๊ฒฐ ํ์ธ | ํ๋ก ์์ ์ฑ |
| 5 | ์ฝ๋ ์คํ ์ ํ๋ก ์ ๊ฒ | ์ค์๋ ๋ฐฉ์ง |
| 6 | BCM/BOARD ๋ชจ๋ ๊ตฌ๋ถ | ์ฝ๋ ์ค๋ฅ ์๋ฐฉ |
| 7 | GPIO.cleanup() ํธ์ถ | ๋ฆฌ์์ค ํด์ |
| 8 | ๋ฐ์ดํฐ์ํธ ํ์ธ | ์ ํํ ์ฐ๊ฒฐ |
| 9 | ์์ ์ ์ ์ ๊ณต๊ธ | ์์คํ ๋ณดํธ |
| 10 | ์ค์ ์ ์ ์ ์ฐจ๋จ | ์์ ํ๋ณด |
โ ๊ฒฐ๋ก : ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ, ์ด๋ ต์ง ์์์!
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก ์ฐ๊ฒฐ๋ฒ์ ๊ธฐ๋ณธ ์๋ฆฌ์ ์ฃผ์์ฌํญ๋ง ์ ์งํค๋ฉด ๋๊ตฌ๋ ์ฝ๊ฒ ์์ํ ์ ์์ต๋๋ค.
ํ๋งต ํ์ธ, ๋ธ๋ ๋๋ณด๋ ํ์ฉ, ์ ํญ ์ฌ์ฉ, GND ์ฐ๊ฒฐ ๋ฑ ํต์ฌ ํฌ์ธํธ๋ง ๊ธฐ์ตํ์ธ์!
์ค์ต์ ํตํด ์ ์ ๋ ๋ณต์กํ ํ๋ก๋ ๋์ ํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค.
์์ ํ๊ณ ์ฆ๊ฑฐ์ด ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํ๋ก์ ํธ ๋์ธ์! ๐"