๋ชฉ์ฐจ
- GPIO
- RPI.GPIO ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ํ์ด์ ๋ชจ๋ํ ์ฝ๋ฉ(LED on/off)
- ํ๋ก๋ ๋ฐฐ์น
- ์กฐ๋์ผ์ ์๋ฆฌ
- MCP3008(ADC) ์๋ฆฌ
- ์ถ๊ฐ ๊ฐ๋ : PWM ์ ์ด
- ์ถ๊ฐ ๊ฐ๋ : SPI ํต์
GPIO
GPIO๋ General Purpose Input / Output ์ผ๋ก, ๋ง ๊ทธ๋๋ก ๋ฒ์ฉ ์ ์ถ๋ ฅ ์ธํฐํ์ด์ค์ ๋๋ค. PCB, ICT๋ณด๋ ๋ฑ ๋ค์ํ ์ ์๊ธฐํ์์ ๋ด๋ถ ํ๋ก ์ด์ธ ์ธ๋ถ์ ์ผ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ํตํ ์ ์๋ ์ฅ์น๋ก, ์ด๋ฅผ ์ด์ฉํด์ LED, Servo Motor, ์ด์ํ์ผ์ ๋ฑ ๋ค์ํ ๋ฌผ๋ฆฌ์ ์ธ๋ถ ์ฅ์น๋ค์ ๋ํด์ ๋ฐฐ์ ํ๊ณ ์ฐ๊ฒฐํ์ฌ ์ ์ด ํ ์ ์์ต๋๋ค.
RPi.GPIO ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ํ์ด์ ์์ ํ์ฆ๋ฒ ๋ฆฌํ์ด์ gpioํ์ ์ ์ดํ ์ ์๋๋ก ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ผ์ฆ๋น์ธ์ ๊ธฐ๋ณธ ์ค์น ๋์ด ์๋ค.
์ฝ๋ ์์
# 1.๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
import RPi.GPIO as gpio
# 1.1 ์๋ฌ ์ ๊ฑฐ
gpio.warnings(False)
# 2. gpio setup, ํ ๋๋ฒ๋ถ๋ฅด๋ ๋ฐฉ์ ์ค์ , Board์ BCM ๋ฐฉ์
# gpio.BOARD : 8๋ฒํ์ GPIO.BCM ๋ชจ๋์์ 14๋ฒ ํ๊ณผ ๋์ผ
# gpio.BCM : Broadcom chip-specific pin numbers๋ก
# Broadcom SOC ์นฉ์์ ์ฌ์ฉํ๋ ํ์ด๋ฆ์ ์ฌ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ
gpio.setmode(gpio.BCM)
# 3.ํ ๋ชจ๋ ์ค์ , input ๋๋ output
gpio.setup(12, gpio.IN)
gpio.setup(18, gpio.OUT)
# 4. ๋ฉ์ธ ์ฐ๋ ๋
try:
while 1:
button = gpio.input(12)
...
gpio.output(18, gpio.HIGH)
...
# 5. ํ์)ํ๋ก๊ทธ๋จ ์ข
๋ฃ์ , ๋ฆฌ์์ค ๋ฐ๋ฉํ๊ธฐ / ๋ฐ๋์ ํด๋ฆฐ์
finally:
gpio.cleanup()
ํ์ด์ ๋ชจ๋ํ ์ฝ๋ฉ
file save๋ฅผ ledOnOff ๋ผ๊ณ ์ ์ฅํ์
๊ทธ๋ฆฌ๊ณ ์๋์ ๋ฐ๋ฅธ led ์ ๋์์ ๋ฌด๋ฅผ ํ์ ํ๊ธฐ ์ํด์ , ์ผ์ผํ import ํด์ RPi~ ํ์ง๋ง๊ณ ,
๋จ์ํ import ledOnOff as led ๋ผ๊ณ ์ ๋ ฅํด์ ํด๋น ๋ฉ์๋๋ค์ ์ํํ๋๋กํ์.
# 1.๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
import RPi.GPIO as gpio
import time as t
# 2. gpio setup, ํ ๋๋ฒ๋ถ๋ฅด๋ ๋ฐฉ์ ์ค์ , Board์ BCM ๋ฐฉ์
# gpio.BOARD : 8๋ฒํ์ GPIO.BCM ๋ชจ๋์์ 14๋ฒ ํ๊ณผ ๋์ผ
# gpio.BCM : Broadcom chip-specific pin numbers๋ก
# Broadcom SOC ์นฉ์์ ์ฌ์ฉํ๋ ํ์ด๋ฆ์ ์ฌ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ
gpio.setmode(gpio.BCM)
# 3.ํ ๋ชจ๋ ์ค์ , input ๋๋ output
gpio.setup(18, gpio.OUT)
# 4. ๋ฉ์ธ ์ฐ๋ ๋
def ledOn():
gpio.output(18, gpio.HIGH)
def ledOff():
gpio.output(18,gpio.LOW)
def ledFlk():
while 1:
gpio.output(18,gpio.HIGH)
t.sleep(1)
gpio.output(18,gpio.LOW)
ํ๋ก๋ ๋ฐฐ์น
๋๋ต์ ์ธ ๋๋์ ํ์ ํ๊ธฐ
์กฐ๋์ผ์
์กฐ๋์ผ์๋ ๋น์ ๋ฐ๊ธฐ์ ๋ฐ๋ผ ๊ฐ์ด ๋ฐ๋๋ ์ ํญ์ด๋ผ๊ณ ๋ ํ ์ ์์ต๋๋ค.
์ ํญ์ ์ ๋ฅ๋ฅผ ๋ฐฉํดํ๋ ํ์ธ๋ฐ์. ๋น์ ๋ฐ๊ธฐ์ ๋ฐ๋ผ ์กฐ๋ ์ผ์๋ ์กฐ๋ ์ผ์ ๋ด์ ์ ํญ๊ฐ์ ๊ฒฐ์ ํฉ๋๋ค
์ฃผ์๊ฐ ๋ฐ์ผ๋ฉด ์กฐ๋ ์ผ์์ ์ ํญ๊ฐ์ด ๊ฐ์ํ๊ณ , ์ฃผ์๊ฐ ์ด๋์ฐ๋ฉด ์กฐ๋ ์ผ์์ ์ ํญ์ด ์ฆ๊ฐํฉ๋๋ค.
์กฐ๋ ์ผ์๋ ๋ฐ์ผ๋ฉด ์ฝ 1k ์ด์ ์ ํญ๊ฐ์ ๋ด๋ณด๋ด๊ณ ์ด๋์ฐ๋ฉด ์ฝ 50k ์ด๊น์ง์ ์ ํญ๊ฐ์ ๋ด๋ณด๋ด์ด ์ ๋ ฅ๊ฐ์ ์กฐ์ ํฉ๋๋ค.
์กฐ๋์ผ์์ ๊ฒฝ์ฐ ๋ฏธ์ธํ ๋น์ ๋ฐ๊ธฐ๋ฅผ ์ธก์ ํ๋๋ฐ ์ฌ์ฉ๋๋ฏ๋ก analogRead() ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
์๋ ๋ก๊ทธ ์ ๋ ฅํ์ ANALOG IN ์ ๊ฝ์์ผ ํฉ๋๋ค.(๋์งํธ ์ ๋ ฅํ์ชฝ์ด ์๋๋๋ค)
MCP3008(ADC)
- 2.7~5.5V ๊ฐ๋ฅํ์ง๋ง ํด ์๋ก ์ํ๋ง ์๋๊ฐ ๋น ๋ฅด๋ค.
- ch0~7 : ์๋ ๋ก๊ธ ์ ํธ ๋ฃ์ด์ฃผ๋๊ณณ์ด๋ค.
- SPI : ํต์ ๊ท๊ฒฉ - ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด (๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์์๋ 2๊ฐ์ ํ์ ์ ๊ณต)
๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด์๋ ์์ฒดADC ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๊ทธ๋์ ADC ์นฉ์ ๋ฐ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
MCP3008๋ 8์ฑ๋์ A/D Converter ์ ๋๋ค.
์ผ์์ ์๋ ๋ก๊ทธ ์ถ๋ ฅ๊ฐ์ ๋์งํธ ๊ฐ์ผ๋ก ๋ณํํ๋ ADC ์นฉ์ ๋๋ค.
์คํ ํ๊ธฐ ์ ์ธํ
: https://m.blog.naver.com/icbanq/221693166697
MCP3008 IC๋ฅผ ๊ตฌ๋ํ๋ ค๋ฉด ๋์๋ฐฉ์๊ณผ SPI ํต์ ์ผ๋ก ๋ณด๋ด์ผ ํ ๋ฐ์ดํฐ๋ฅผ ์์์ผ ํด์,
MCP3008 ๋ฐ์ดํฐ์ํธ๋ฅผ ๋ด ์๋ค.
MCP3008 IC๋ slave๋ก ๋์ํ๊ณ , (CPOL, CPHA) = (0, 0), (1, 1)์ SPI ๋ชจ๋๋ฅผ ์ง์ํ๋๋ฐ์. (0, 0)๋ชจ๋์ ์ ํธ ํ์ด๋ฐ์ ๋ค์์ฒ๋ผ 8๋นํธ๋ก ์ธ๋ฒ ๋๋์ด์ ธ ์์ต๋๋ค. ์ฒซ ๋ฐ์ดํธ์๋ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ก MOSI(DIN)์ ํตํด 0x01์ ๋ณด๋ด์ start๋ฅผ ์๋ฆฝ๋๋ค. ๊ทธ ๋ค์ ๋๋ฒ์งธ ๋ฐ์ดํธ์ ์์ 4๋นํธ๋ฅผ ๋ณด๋ด๋ฉด, ๋๋จธ์ง ๋นํธ๋ค์ ์ด IC์ ๋์์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ด ์์ 4๋นํธ๋ฅผ ํตํด ADC๊ฐ์ ์ป๊ณ ์ ํ๋ ์ฑ๋์ ์ ํํ๊ฒ ๋ฉ๋๋ค.
MCP3008์ด D0 ์ ๋ ฅ๊น์ง ๋ฐ์ผ๋ฉด, MCP3008์ MISO(DOUT)ํ์ ํตํด null ๋นํธ๋ก ์์ํ๋ ADC๊ฐ์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ก ๋ณด๋ด๊ธฐ ์์ํฉ๋๋ค. MISO๋ก ์ ๋ฌ๋๋ ์ ํธ ์ค, ๋๋ฒ์งธ ๋ฐ์ดํธ์ ํ์ 2๋นํธ๊ฐ 10๋นํธ ADC๊ฐ ์ค ์ต์์ ๋นํธ์ ๋๋ค. ๊ทธ ๋ค ์ธ๋ฒ์งธ ๋ฐ์ดํธ์ 8๋นํธ๋ ํ์ 8๋นํธ์ ADC ๊ฐ์ ๋๋ค.
์ ํ์ด๋ฐ๋์์ ๋ดค๋ Single/Diff, D2, D1, D0 ๋ค ๋นํธ๋ ๋ค์์ฒ๋ผ ADC๋ฅผ ์ํํ ์ฑ๋์ ์ ํํฉ๋๋ค.
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์์ ์คํ์ํจ Python ์ฝ๋์ ๋๋ค. MCU๋ฟ ์๋๋ผ Python์์๋ ๋นํธ์ฐ์ฐ์ด ๊ฐ๋ฅํด์ ๋นํธ์ฐ์ฐ์ ์ฌ์ฉํ์ต๋๋ค.
import spidev, time
def analog_read(channel):
r = spi.xfer2([1, (0x08+channel)<<4, 0])
adc_out = ((r[1]&0x03)<<8) + r[2]
return adc_out
spi = spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz = 1000000
while True:
adc = analog_read(1)
voltage = adc*3.3/1023
print("ADC = %s(%d) Voltage = %.3fV" % (hex(adc), adc, voltage))
time.sleep(0.5)
PWM
PWM์ด๋(Pulse Width Modulation, ํ์ค ํญ ๋ณ์กฐ) ํจ์จ์ ์ธ ์ค์์นญ ์ ์ด์ ๊ธฐ๋ณธ์ด ๋๋, ๋์งํธ ์ถ๋ ฅ์ผ๋ก ์๋ ๋ก๊ทธ ํ๋ก๋ฅผ ์ ์ด ํ๋ ๊ธฐ์ ์ ๋๋ค.
โ
์ด๊ธฐ์๋ ํต์ ์ฉ์ผ๋ก ๊ฐ๋ฐ ๋ ๊ธฐ์ ์ด์์ผ๋, ์ ๋ฅ, ์ ์ ์ ์ด์ฉ์ผ๋ก ํ์ํ ๋ฐฉ์์ด์๊ธฐ ๋๋ฌธ์,
ํ์ฌ๋ ํต์ ๋ณด๋ค๋ DC์ชฝ ์ ๋ ฅ์ ์ด๋ ๋ชจํฐ ์ ์ด ๊ธฐ์ ๋ก ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
โ
๊ฐ๋จํ ์ค๋ช ํ์๋ฉด, ์ผ์ ํ ์ฃผ๊ธฐ ๋ด์์ Duty๋น๋ฅผ ๋ณํ ์์ผ์ ํ๊ท ์ ์์ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
โ
PWM์ ๊ตฌ์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก ์๋์ ๊ฐ์ ๊ตฌ์ฑ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
PWM ์ ํธ ๋ฐ์๊ธฐ์ ๊ตฌ์ฑ
์ฝคํผ๋ ์ดํฐ(์ ์๋น๊ตํ๋ก)์ +์ ๋ ฅ์ ์ผ๊ฐํ๋ฅผ ์ ๋ ฅํ๊ณ , - ์ ๋ ฅ์ ์ ์ด ์ ํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ฝคํผ๋ ์ดํฐ์ ์ถ๋ ฅ์๋ ์ ๋ ฅ ์ ํธ์ ๋ ๋ฒจ ๋ณํ์ ๋ฐ๋ผ์ ํ์ค ํญ์ด ๋ค๋ฅธ ์ถ๋ ฅ์ด ๋ํ๋๊ฒ ๋ฉ๋๋ค.
โ
์ ๋ ฅ์ ๋ฐ๋ฅธ PWM ์ถ๋ ฅ ์ ํธ
PWM์ ์ฃผ๊ธฐ๊ฐ ์ผ์ ํ๊ณ , ์ ์ด์ ๋ ฅ ์ ํธ์ ๋ฐ๋ผ์ ํ์ค ํญ์ ๋ํฐ๋น๊ฐ ๋ณํํ๋ ๊ฒ์ ์๋ฏธ ํฉ๋๋ค.
์ถ๋ ฅ ํธ๋์ง์คํฐ๊ฐ ONํ๊ณ ์๋ ๋์์๋ง ๋ชจํฐ์ ์ ๋ฅ๊ฐ ํ๋ฅด๊ฒ ๋ฉ๋๋ค.
โ
๋ํฐ๋น๊ฐ ํด ์๋ก ๋ชจํฐ์ ์ ๋ฅ๊ฐ ํ๋ฅด๋ ์ ์ฒด ์๊ฐ์ด ๊ธธ์ด์ง๊ฒ ์ง์.
โ
DC ๋ชจํฐ ๋ฑ์ ์๋์ ์ด๋ฅผ ์ ๋ ฅ ์ ํธ์ ๋ณํ ๋ง์ผ๋ก ๊ฐ๋จํ ํ ์ ์๋ ๊ฒ์ ๋๋ค.
(๋ชจํฐ๊ฐ ๋น ๋ฅธ ์ฃผํ์์ ๋ณํ์ ๊ธฐ๊ณ ๋ฐ์์ ํ์ง ์๋๋ค๋ ๊ฒ์ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค.)
SPIํต์ ๊ทธ๋ฆฌ๊ณ ๊ทธ์ธ ํต์
SPI๋ Serial Peripheral Interface์ ์ฝ์๋ก ํด์์ ‘์ง๋ ฌ ์ฃผ๋ณ๊ธฐ๊ธฐ ์ธํฐํ์ด์ค’.
SPI๋ 1:N ํต์ ์ ์ง์ํ๋ ๋๊ธฐ์ ํต์ ๋ฐฉ์์ด๋ค.
SPI ํต์ ์ ์ํด์๋ ๋ฐ๋์ ํ๋์ ๋ง์คํฐ์ ํ๋ ์ด์์ ์ฌ๋ ์ด๋ธ ๊ธฐ๊ธฐ๊ฐ ์กด์ฌํด์ผ ํ๋ค. ํต์ ์ ์ํด์๋ ์ต์ 4๊ฐ์ ์ ์ด ํ์ํ๋ฐ, MISO, MOSI, SCK, SS๊ฐ ๊ทธ๊ฒ์ด๋ค. ํ๋์ฉ ์ดํด๋ณด๋ฉด,
- MOSI : Master Out, Slave In – ๋ง์คํฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํ ์ ํธ ์
- MISO : Master In, Slave Out – ์ฌ๋ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํ ์ ํธ ์
- SCK : Clock ์ ํธ ์
- SS : Slave Select – ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ์ฌ๋ ์ด๋ธ๋ฅผ ์ ํํ๊ธฐ ์ํ ์ ํธ ์
๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ์์ ํ๋ ์ ์ด ๋ฐ๋ก ์๊ธฐ ๋๋ฌธ์ ์ ์ก๊ณผ ์์ ์ด ๋์์ ์ด๋ฃจ์ด์ง ์ ์์ด์ ์ก์์ ์ด ํ๋์ ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ I2C ํต์ ์ ๋นํด ์๋๊ฐ ๋น ๋ฅด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์คํฐ์์ ์ถ๋ ฅํ๋ ์ ๊ณผ ์ฌ๋ ์ด๋ธ์์ ์ถ๋ ฅํ๋ ์ ์ด ์ ํด์ ธ ์์ด ์๋ฆฌ์ผ ํต์ ์ฒ๋ผ Rx, Tx ์ ์ด ๋งจ๋ ํท๊ฐ๋ฆด ์ผ๋ ์๋ค. ๋ ๋งจ๋ ํท๊ฐ๋ฆฌ๊ฑฐ๋ …
์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ๋๋ฌธ์ SPI๋ ์ฃผ๋ก ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ์ก ์๋๋ฅผ ํ์๋ก ํ๋ ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๋ํ์ ์ผ๋ก ์ด๋๋ท ํต์ ์ด๋ SD ์ด๋ ๊ฐ์.
SPI ํต์ ์ญ์ I2C ํต์ ์ฒ๋ผ ํ๋์ ๋ง์คํฐ์ ์ฌ๋ฌ ๊ฐ์ ์ฌ๋ ์ด๋ธ๊ฐ ์ฐ๊ฒฐ๋ ์ ์๊ธฐ ๋๋ฌธ์, ์ฌ๋ ์ด๋ธ๋ฅผ ์ ํํ๊ธฐ ์ํ ์๋ฃจ์ ์ด ํ์ํ๊ฒ ๋๋๋ฐ, SPI๋ ๊ทธ ๋ฐฉ๋ฒ์ผ๋ก SS ์ ํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. SS๋ Slave Select๋ผ๋ ๋ป ๊ทธ๋๋ก ์ฌ๋ ์ด๋ธ๋ฅผ ์ ํํ๋ ์ ์ผ๋ก, ํ๋์ ์ฌ๋ ์ด๋ธ์ ํ๋์ SS ์ ์ ์ฌ์ฉํ๋ค.
์๋ ๊ฒ. SCK์ MOSI, MISO ์ ํธ ์ ์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ค.
์ฌ๋ฌ ๊ฐ์ ์ฌ๋ ์ด๋ธ ๊ธฐ๊ธฐ๊ฐ ๋ง์คํฐ์ ์ฐ๊ฒฐ๋ ์ ์์ง๋ง, ์ฌ๋ ์ด๋ธ ๊ฐ์๋งํผ SS ์ ํธ ์ ์ด ๋์ด๋๊ฒ ๋๋ฏ๋ก ์ฌ๋ฌ ๊ฐ์ ์ฌ๋ ์ด๋ธ๊ฐ ์กด์ฌํ ๋์๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋นํจ์จ์ ์ด๋ค. ํ ๊ฐ์๊ฐ ์ฌ์ ์์ผ๋ฉด ์๊ด์๊ฒ ์ง๋ง, ๋ณดํต์ ์๋ค.
๋๊ธฐํ ํต์ ๋ฐฉ์์ด๋ฏ๋ก ํต์ ์๋ ํด๋ญ ์ ํธ๊ฐ ์ฌ์ฉ๋๋ฉฐ, ํด๋ญ ์ ํธ๋ ๋ง์คํฐ์์๋ง ์ถ๋ ฅ๋๋ค. ๋ค์์ ๋ง์คํฐ์ ์ฌ๋ ์ด๋ธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ ํธ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ธ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ ์ก์์ ์ ์ํด ์ ์ผ ๋จผ์ SS ์ ํธ๋ก ์ฌ๋ ์ด๋ธ๋ฅผ ์ ํํ ํ ํด๋ญ ์ ํธ๋ฅผ ์์ฑํ๊ณ , ํด๋ญ ์ ํธ์ ๋ง์ถฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
์ ๊ทธ๋ฆผ์์๋ ๋ง์น ๋ฐ์ดํฐ ์ ์ก ํ ์์ ๋ฐ๋ ๊ฒ์ฒ๋ผ ๋์ด ์์ง๋ง, ์ฌ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ค์๋ MISO ์ ํธ ์ ์ผ๋ก ์ฌ๋ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ์ ์๋ค. ์ ์ก๊ณผ ์์ ์ด ๋์์ ์ด๋ฃจ์ด์ง ์ ์๋ค๋ ๊ฒ์ด SPI์ ๊ฐ์ฅ ํฐ ์ฅ์ !
๊ทธ๋ฆผ์์๋ ํด๋ญ ์ ํธ๊ฐ HIGH๋ก ๋ฐ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ผ๋ก ๋์ด ์์ง๋ง, SPI ํต์ ์์๋ HIGH๋ก ๋ฐ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ง LOW๋ก ๋ฐ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ง ์ง์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋ญ ์ ํธ๊ฐ HIGH๋ก ๋จผ์ ์์ํ๋์ง, LOW๋ก ๋จผ์ ์์ํ๋์ง ์ญ์ ๊ฒฐ์ ํ ์ ์๋ค . ๋ฌผ๋ก ์ฌ๋ ์ด๋ธ์ ๋ฐฉ์์ด ๋์ผํด์ผ ํ๋ค.
์, ๋ผ์ฆ๋ฒ ๋ฆฌํผ์ด์ ๋น์ทํ ์๋์ด๋ ธ์ ๊ฒฝ์ฐ)
์๋์ด๋ ธ ๋ฉ๊ฐ(Mega 2560/ADK)๋ SPI ํต์ ์ ์ํ ํ์ผ๋ก 50~53๋ฒ ํ์ด ์ง์ ๋์ด ์๊ณ , ์ฐ๋ ธ(Uno)์ ๊ฒฝ์ฐ “ICSP”๋ผ๋ ํฌํธ๋ก ๋ฐ๋ก ๋์์๋ค. ๋ฉ๊ฐ์ ์๋ “ICSP” ํฌํธ ์ญ์ 50~53๋ฒ๊ณผ ์ฐ๊ฒฐ๋์ด SPI ํฌํธ๋ก ์ฌ์ฉํ ์ ์๋ค.
์ฐ๋ ธ(Uno)
๋ฉ๊ฐ(Mega 2560/ADK)
ICSP ํฌํธ์ ํ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ ์์๋๋ก ๋ณด๋์ ํ์ํด๋ณด๋ฉด,
์๋ ๊ฒ ๋๋ค. ํ ํฌํธ์ ์ผ์ชฝ ์๋จ์ ์ ์ผ๋ก ํ์๋ ํ์ด 1๋ฒ ํ์ด๋ผ๋ ๊ฒ์ ์ ์ํ์.
๋ฉ๊ฐ์์ 53๋ฒ ํ์ด SS ํ์ผ๋ก ์ง์ ๋์ด ์์ง๋ง, ์ฌ์ค SS ํ์ ์ด๋ ํ์ ์ฌ์ฉํด๋ ์๊ด ์๋ค. 53๋ฒ์ SS๋ผ๊ณ ์ง์ ํด๋ ๊ฑด ์ฐธ๊ณ ์ฉ์ด๋๊น. ์๋์ด๋ ธ์์ ์ ๊ณตํ๋ SPI ์์ ๋ฅผ ๋ณด๋ฉด 53๋ฒ(์ฐ๋ ธ์ ๊ฒฝ์ฐ์๋ 10๋ฒ)์ ์ฃผ๋ก SS ํ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ ์๋ค. ๋ณดํต์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก ์๋ฌด ํ์ด๋ ์ฌ์ฉํด๋ ์๊ด ์์ด.
์ฌ๊ธฐ๊น์ง ์ ๋ฆฌํด๋ณด๋ฉด.
- SPI ํต์ ์ MOSI, MISO, SCK, SS ํ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๋๊ธฐ์ ์ง๋ ฌ ํต์ ๋ฐฉ์์ด๋ค.
- ๋ฐ์ดํฐ ์ถ๋ ฅ ์ ํธ ์ ๊ณผ ์ ๋ ฅ ์ ํธ ์ ์ด ๋ฐ๋ก ์์ด ๋์์ ์ก์์ ์ด ๊ฐ๋ฅํ๋ค.
- ์ฌ๋ ์ด๋ธ๋ฅผ SS ์ ํธ๋ก ์ ํํ๋ค.
- ๊ทธ๋์ I2C ํต์ ๋ณด๋ค ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์
- SS ์ ํธ ์ ์ ์ด์ฉํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ์ฌ๋ ์ด๋ธ๋ฅผ ์ฐ๊ฒฐํ ์ ์์ง๋ง ์ฌ๋ ์ด๋ธ ๊ฐ์๋งํผ SS ์ ํธ ์ ์ด ํ์ํ๋ฏ๋ก ์ฌ๋ ์ด๋ธ๊ฐ ๋ง์์ง ๊ฒฝ์ฐ์๋ ๋นํจ์จ์ ์ด๋ค