전송 방식에는 어떤것이 있을까?
1. 직렬 전송 (Serial Transmission)이란?
직렬 전송은 데이터를 한 번에 한 비트씩 순차적으로 전송하는 방식입니다. 데이터를 전송할 때, 비트들이 하나의 통로를 통해 순차적으로 이동합니다.
장점
- 간단한 배선: 한 개의 통신 채널만 필요합니다.
- 장거리 전송에 적합: 신호 간섭이 적고, 데이터 손실 가능성이 낮습니다.
단점
- 속도 제한: 한 번에 한 비트씩 전송하므로 병렬 전송에 비해 속도가 느릴 수 있습니다.
예시
- USB(Universal Serial Bus)
- RS-232
2. 병렬 전송 (Parallel Transmission)이란?
병렬 전송은 여러 비트를 동시에 전송하는 방식입니다. 각 비트는 별도의 통로를 통해 동시에 전송됩니다.
장점
- 빠른 전송 속도: 여러 비트를 동시에 전송하므로, 직렬 전송에 비해 속도가 빠릅니다.
단점
- 복잡한 배선: 여러 개의 통신 채널이 필요합니다.
- 장거리 전송에 부적합: 신호 간섭이 발생할 가능성이 높습니다.
예시
- 컴퓨터 내부의 데이터 버스
- 프린터 포트(병렬 포트)
3. 동기식 전송 (Synchronous Transmission)이란?
동기식 전송은 송신자와 수신자가 동일한 클럭 신호를 공유하여 데이터를 전송하는 방식입니다. 데이터는 일정한 타이밍에 따라 전송됩니다.
장점
- 효율적 전송: 클럭 신호에 맞춰 데이터를 전송하므로, 데이터 전송 효율이 높습니다.
- 연속적인 데이터 전송: 큰 데이터 블록을 연속적으로 전송할 수 있습니다.
단점
- 복잡한 구현: 클럭 신호를 동기화해야 하므로, 구현이 복잡할 수 있습니다.
예시
- Ethernet
- SDH/SONET
4. 비동기식 전송 (Asynchronous Transmission)이란?
비동기식 전송은 송신자와 수신자가 클럭 신호를 공유하지 않고, 각 데이터 단위에 시작 비트와 종료 비트를 추가하여 데이터를 전송하는 방식입니다.
장점
- 간단한 구현: 클럭 신호를 동기화할 필요가 없으므로, 구현이 간단합니다.
- 유연성: 데이터 전송이 불규칙한 경우에도 적합합니다.
단점
- 오버헤드: 각 데이터 단위에 시작 비트와 종료 비트를 추가해야 하므로, 오버헤드가 발생합니다.
예시
- RS-232
- UART(Universal Asynchronous Receiver/Transmitter)
5. 단방향 전송 (Simplex Transmission)이란?
단방향 전송은 데이터가 한 방향으로만 전송되는 방식입니다. 송신자와 수신자가 고정되어 있으며, 수신자는 데이터를 송신할 수 없습니다.
장점
- 단순성: 통신이 단방향이므로, 구현이 간단합니다.
단점
- 제한된 기능: 데이터가 한 방향으로만 전송되므로, 양방향 통신이 필요할 때는 사용할 수 없습니다.
예시
- 텔레비전 방송
- 라디오 방송
6. 반이중 전송 (Half-Duplex Transmission)이란?
반이중 전송은 데이터가 양방향으로 전송될 수 있지만, 동시에 전송될 수는 없는 방식입니다. 한 번에 한 방향으로만 데이터가 전송됩니다.
장점
- 효율성: 양방향 통신이 가능하므로, 단방향 전송보다 효율적입니다.
단점
- 동시 전송 불가: 동시에 양방향으로 데이터를 전송할 수 없습니다.
예시
- 무전기 통신
- CSMA/CD (Ethernet)
7. 전이중 전송 (Full-Duplex Transmission)이란?
전이중 전송은 데이터가 양방향으로 동시에 전송될 수 있는 방식입니다. 송신자와 수신자가 동시에 데이터를 주고받을 수 있습니다.
장점
- 최대 효율: 양방향으로 동시에 데이터 전송이 가능하므로, 가장 효율적입니다.
단점
- 복잡한 구현: 동시에 데이터를 주고받기 위한 복잡한 회로와 프로토콜이 필요합니다.
예시
- 전화 통신
- 현대 Ethernet (스위치 기반)
아두이노의 전송 방식에는 어떤것이 있을까?
아두이노는 UART, I2C, SPI 3가지의 통신방식을 지원합니다.
1. UART (Universal Asynchronous Receiver/Transmitter)
UART는 직렬 통신 방식 중 하나로, 비동기식 데이터 전송을 지원합니다. 두 장치 간에 데이터를 한 비트씩 순차적으로 전송하며, 시작 비트와 종료 비트를 사용하여 데이터 프레임을 구분합니다.
특징
- 비동기식 통신: 클럭 신호를 공유하지 않고, 시작 비트와 종료 비트를 사용하여 데이터 프레임을 구분합니다.
- 단방향 및 양방향 통신: 전송(TX)과 수신(RX) 라인을 통해 양방향 통신이 가능합니다.
- 간단한 하드웨어 구성: 두 개의 데이터 라인(TX, RX)만 필요합니다.
장점
- 구현이 간단하고, 하드웨어 요구 사항이 적습니다.
- 널리 사용되며, 많은 장치에서 지원합니다.
단점
- 데이터 전송 속도가 상대적으로 느립니다.
- 클럭 신호를 사용하지 않으므로, 긴 거리에서의 데이터 전송에 제한이 있을 수 있습니다.
예시
- 아두이노와 컴퓨터 간의 직렬 통신 (예: 시리얼 모니터)
- GPS 모듈, 블루투스 모듈 등과의 통신
2. I2C (Inter-Integrated Circuit)
I2C는 다중 마스터-슬레이브 통신을 지원하는 동기식 직렬 통신 방식입니다. 두 개의 라인(SDA: 데이터 라인, SCL: 클럭 라인)을 사용하여 여러 장치 간에 데이터를 전송합니다.
특징
- 동기식 통신: 클럭 신호(SCL)를 사용하여 데이터 전송을 동기화합니다.
- 다중 마스터-슬레이브 구조: 여러 마스터와 슬레이브 장치 간의 통신을 지원합니다.
- 2개의 데이터 라인: SDA(데이터 라인)와 SCL(클럭 라인)만 필요합니다.
장점
- 간단한 배선: 두 개의 데이터 라인만으로 여러 장치를 연결할 수 있습니다.
- 여러 장치 간의 통신을 지원하여 확장성이 뛰어납니다.
단점
- 통신 속도가 상대적으로 느립니다.
- 버스 충돌 가능성이 있으며, 이를 관리하기 위한 추가적인 프로토콜이 필요합니다.
예시
- 센서, EEPROM, 실시간 시계(RTC) 모듈 등과의 통신
- 아두이노 간의 데이터 전송
3. SPI (Serial Peripheral Interface)
SPI는 동기식 직렬 통신 방식으로, 마스터와 슬레이브 간의 빠른 데이터 전송을 지원합니다. 네 개의 라인(MOSI, MISO, SCK, SS)을 사용하여 데이터를 전송합니다.
특징
- 동기식 통신: 클럭 신호(SCK)를 사용하여 데이터 전송을 동기화합니다.
- 마스터-슬레이브 구조: 하나의 마스터와 여러 슬레이브 장치 간의 통신을 지원합니다.
- 4개의 데이터 라인: MOSI(마스터 아웃 슬레이브 인), MISO(마스터 인 슬레이브 아웃), SCK(클럭), SS(슬레이브 선택) 라인이 필요합니다.
장점
- 매우 빠른 데이터 전송 속도를 제공합니다.
- 간단한 프로토콜로 구현이 쉽습니다.
단점
- 많은 데이터 라인이 필요하여 배선이 복잡해질 수 있습니다.
- 다중 슬레이브 장치 연결 시, 각 슬레이브마다 별도의 SS 라인이 필요합니다.
예시
- SD 카드 모듈, 디스플레이, 플래시 메모리 등과의 통신
- 고속 데이터 전송이 필요한 센서와의 통신
실습
아두이노의 통신을 활용한 실습이기때문에, 아두이노가 2대이상 필요하다.
아래와같이 회로를 구성하고, 코드를 실행하면 아두이노가 서로 UART통신을 통해 LED를 제어하는 것 을 볼 수 있다.
[송신측 아두이노]
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write('a');
delay(1000);
Serial.write('b');
delay(1000);
}[수신측 아두이노]
char data;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
if(Serial.available()){
data = Serial.read();
}
if(data=='a') {
digitalWrite(13,1);
}
else if(data=='b') {
digitalWrite(13,0);
}
}