Published Book on Amazon
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1 | |
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2 |
출판된 한글판 도서
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상) | |
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하) |
Original Book Contents
25.2.2 GPIO port 상세
25.2.2.1 GPIO 기본
Raspberry Pi에는 여러 가지 종류의 GPIO Interface Pin들이 있다. 각의 핀들은 각자의 용도가 있으며, 특정 회로를 만들기 위해서 여러 pin들을 조합하여 같이 사용하기도 한다.
● DNC (Do Not Connect )
먼저 DNC로 표시되어 있는 핀에는 절대 아무것도 연결해서는 안 된다. 이 핀들은 Raspberry Pi의 BCM2835 SoC의 내부 기능을 위해 유보되어 있는 것이다.
● GPIO pin
Raspberry Pi B+ model에서는 전체 40개 pin 중에서 28 개를 GPIO pins으로 사용할 수 있는데, GPIO mode의 설정에 따라 input이나 output 용도로 사용할 수 있다.
GPIO pin들은 high(+3.3V) 상태 또는 low (접지 또는 0V) 상태를 가진다. 이것은 컴퓨터 이진연산에서의 1과 0에 대응할 수 있으며, 1 bit의 digital data를 전송하는 것으로 처리할 수도 있다. 이 기능을 이용해서, 예를 들어 다른 부품들을 켜거나 끄는 작업을 할 수 있다.
■ Low = 0V -- 0 -- False
■ High = 3.3V -- 1 -- True
● 전원
Raspberry Pi는 micro-USB단자를 통해 외부에서 전원을 공급받고, GPIO pin를 통해서 interface에 필요한 전원을 공급해 준다. GPIO 1 port를 통하여 3.3V 전원을 공급해 주는데 최대 허용 전류는 50mA이다. GPIO 2 port에서는 5V 전원을 공급해주는데 최대 허용 전류는 Raspberry Pi에 대한 전원공급장치에 따라 달라질 수 있다. 어떤 경우든 Raspberry Pi 시스템이 운영되는데 충분한 전류를 남겨두어야 한다.
비록 Raspberry Pi가 GPIO 2 port를 통해서 5V 전원을 제공하기는 하지만, 특별한 목적이 없는 한 5V 전원을 사용해서는 안 된다. 5V 전원을 GPIO pin이나 다른 pin에 잘못 연결하면 시스템에 심각한 손상을 일으킬 수 있으므로 GPIO 포트에서는 주의를 기울여야 한다.
Raspberry Pi의 모든 내부 회로와 부품들은 3.3V 전원으로 동작하고 있다. 또한 Raspberry Pi에 있는 모든 GPIO pin 들은 내부 BCM2835 SOC(system on a chip)에 직접 연결되어 있기 때문에 조금만 실수가 있으면, Raspberry Pi 시스템 전체나 SD card를 훼손시킬 수 있다. 따라서 Raspberry Pi의 GPIO pin를 이용하여 interface 회로를 만들 때는, 반드시 GPIO 1 port에서 나오는 3.3V 전원을 사용하도록 한다.
이러한 이유로 Raspberry Pi와 외부의 회로 사이에 3.3V 로직 호환 부품을 사용하거나 Gertboard와 같이 정전압 회로를 사용하여 이러한 위험을 방지하는 방법도 있다.
Arduino 및 연관 제품들과 같은 대부분의 micro controller 장치들은 주로 5V 전원으로 동작한다. Arduino를 위해 디자인된 장비들은 레벨 변환기나 광학 아이솔레이터를 사용하지 않는 한 Raspberry Pi에서 사용할 수 없다. 마찬가지로 5V 마이크로 컨트롤러의 핀들을 Raspberry Pi의 GPIO 포트에 연결하면 Raspberry Pi에 영구적인 손상을 가할 수 있다.
25.2.2.2 특별 용도 GPIO
GPIO pin에는 2개의 I2C interface pin과 5개의 SPI interface pin, 그리고 2개의 serial UART interface pin이 포함되어 있다. 이들 I2C, SPI, UART interface는 원래의 bus mode로 사용되지 않을 때는 범용 I/O pin으로 사용할 수 있다. 또한 이들 pin 중에서는 PWM output 이나 PCM 용으로 사용할 수 있는 것도 있다.
● I2C(Inter-Integrated Circuit) bus
I2C bus는 다수의 내부 집적회로 slave 장치와 통신할 수 있도록 만들어진 bus 형태의 interface 장치이다. Raspberry Pi는 bus 상에서 master로 작동할 수 있다.
I2C bus는 GPIO 3 pin과 GPIO 5 pin를 통해 접근할 수 있다. GPIO 3 pin은 SDA(Serial Data) 신호선이고, GPIO 5 pin은 SCL(Seria Clock) 신호선이다. 이들은 1.8k pull-up resistor을 내부에 포함하고 있어 별도의 저항을 필요로 하지 않는다.
● SPI (Serial Peripheral Interface)
SPI bus는 다수의 내부 SPI 장치와 통신할 수 있도록 만들어진 bus 형태의 interface 장치이다. Raspberry Pi는 bus 상에서 master로만 작동할 수 있다.
SPI(Serial Peripheral Interface) bus는 버스는 주로 마이크로 컨트롤러와 다른 기기 사이의 ISP(in-system programming)을 위한 용도로 디자인되었다. UART 또는 I2C와는 달리 하나 이상의 대상 장비와 통신할 수 있도록 하기 위해서 칩 선택 선을 포함하여 네 개의 선을 가지는 버스로 되어 있다.
Raspberry Pi에는 다음과 같이 SPI 장치를 연결하는데 사용할 수 있는 5 개의 pin이 있다.
■ 19 pin -- MOSI(SPI master 출력과 slave 입력)
■ 21 pin -- MISO(SPI master 입력과 slave 출력)
■ 23 pin -- SLCK(통신 동기화를 위한 직렬 클럭)
■ 24, 26pin -- 독립 slave 장치를 지원하는 칩 선택 신호선.
● UART (Universal Asynchronous Receiver/Transmitter )
UART(Universal Asynchronous Receiver/Transmitter)는 간단한 2선 직렬 인터페이스로서 serial bus형태의 연결방식을 사용한다.
UART serial bus는 GPIO 8 pin과 GPIO 10 pin을 통해 접근할 수 있다. GPIO 8 pin은 발신신호 용도이고 , GPIO 10 pin은 수신신호 용도이다. 전송 속도는 "cmdline.txt" 파일에서 설정할 수 있다. 통상 115,200 bps (Bits per second)이다.
"cmdline.txt" 파일에서 serial port를 설정했을 때, 메시지를 출력하기 위해서 사용되는 포트가 바로 이 serial bus이다. Raspberry Pi의 serial bus를 표시장치에 연결하면 Linux 커널의 메시지를 표시할 수 있다. Raspberry Pi가 부팅 과정에서 문제를 일으켜 화면에 아무것도 표시되지 않는 경우 이 serial bus가 간편한 진단 도구가 되어줄 수 있다.
주의할 것은 이 핀들은 3.3V에서 동작하는데, 일반적인 RS232 규격은 12V라는 것이다. 따라서 이 pin들을 RS232 serial 장치에 연결하면 Raspberry Pi를 훼손시킬 수도 있으므로 주의해야 한다.