시리얼 통신 하드웨어 및 연결 실습 - 3. 송신(TX)과 수신(RX) 핀 개념 및 배선 실습

2025. 2. 10. 15:25프로그래밍/시스템

3장: 송신(TX)과 수신(RX) 핀 개념 및 배선 실습

시리얼 통신에서 TX(Transmit)와 RX(Receive) 핀의 개념을 정확히 이해하는 것은 올바른 데이터 전송을 위해 필수적입니다.
RS-485는 반이중(Half-Duplex) 방식이므로 송·수신을 번갈아 수행해야 하며, 배선 방법과 터미네이션 저항 사용 여부도 신호 품질에 큰 영향을 미칩니다.

이번 장에서는 TX/RX 핀의 개념, 교차 연결 규칙, 풀 이중(Full-Duplex)과 반이중(Half-Duplex)의 차이,
그리고 실제 배선 실습과 신호 품질 테스트 방법
을 자세히 살펴보겠습니다.


1. TX/RX 핀의 역할과 개념

✅ TX(Transmit) & RX(Receive) 핀의 역할

  • TX (Transmit, 송신) → 데이터를 전송하는 핀
  • RX (Receive, 수신) → 데이터를 수신하는 핀

📌 송신 장치의 TX는 수신 장치의 RX에 연결해야 합니다.
📌 반대로, 수신 장치의 RX는 송신 장치의 TX에 연결해야 합니다.


2. TX ↔ RX 연결 규칙 (교차 연결)

RS-485 통신을 구성할 때는 UART 기반의 송신(TX)과 수신(RX) 신호를 교차 연결해야 합니다.

✅ 기본적인 TX ↔ RX 연결 방법 (교차 연결)

장치 1 연결 방향 장치 2
TX (송신) RX (수신)
RX (수신) TX (송신)

📌 TX ↔ RX를 직접 연결하면 데이터가 정상적으로 송수신되지 않음. 반드시 교차 연결해야 함.

💡 RS-485 모듈을 사용할 경우, TX는 DI(Driver Input)에, RX는 RO(Receiver Output)에 연결해야 합니다.


3. 풀 이중(Full-Duplex) vs 반이중(Half-Duplex) 통신의 차이

RS-485는 기본적으로 반이중(Half-Duplex) 통신을 사용합니다.
즉, 한 번에 한 방향으로만 데이터를 전송할 수 있으며, 송신과 수신을 번갈아 수행해야 합니다.

📌 풀 이중(Full-Duplex)과 반이중(Half-Duplex)의 차이점

통신 방식 설명  사용 예
풀 이중(Full-Duplex) 송·수신이 동시에 가능 RS-232, USB
반이중(Half-Duplex) 송·수신을 번갈아 수행 RS-485

💡 RS-485에서 풀 이중 통신이 필요할 경우, 4선식 RS-485 통신을 사용해야 하지만 일반적으로 2선식 반이중이 널리 사용됨.


4. 실제 배선 실습: RS-485 모듈을 아두이노, 라즈베리파이와 연결하여 데이터 송·수신 테스트

✅ 배선 준비물

  • 아두이노 또는 라즈베리파이
  • RS-485 모듈 (MAX485 기반)
  • USB-to-Serial 변환기 (테스트용, 선택 사항)
  • 점퍼 와이어
  • 120Ω 터미네이션 저항 (테스트용)

✅ 배선 방법

아두이노 또는 라즈베리파이를 RS-485 모듈과 연결할 때는 다음과 같이 배선합니다.

📌 마이크로컨트롤러 ↔ MAX485 배선

마이크로컨트롤러  RS-485 모듈(MAX485)
TX (송신) DI (Driver Input)
RX (수신) RO (Receiver Output)
DE (송신 활성화) DE (Driver Enable)
RE (수신 활성화) RE (Receiver Enable)
GND GND
VCC (3.3V/5V) VCC

📌 RS-485 모듈 ↔ RS-485 장치 연결 (차동 신호 방식)

RS-485 모듈(MAX485) RS-485 네트워크
A (+) A (+) (다른 장치와 연결)
B (-) B (-) (다른 장치와 연결)

💡 RS-485의 A(+)와 B(-) 선을 같은 네트워크 내의 다른 장치 A(+)와 B(-)에 연결해야 합니다.


🛠️ 아두이노 코드 예제 (RS-485 데이터 송·수신)

#define DE_PIN 2  // 송신/수신 전환 핀
#define RE_PIN 2  // DE와 RE를 같이 연결

void setup() {
    pinMode(DE_PIN, OUTPUT);
    digitalWrite(DE_PIN, LOW);  // 기본값은 수신 모드
    Serial.begin(9600);
}

void sendData(String message) {
    digitalWrite(DE_PIN, HIGH); // 송신 모드 활성화
    delay(10);
    Serial.print(message);
    delay(10);
    digitalWrite(DE_PIN, LOW);  // 다시 수신 모드 활성화
}

void loop() {
    sendData("Hello RS-485!");
    delay(1000);
}

📌 DE/RE 핀을 HIGH로 설정하면 송신 모드, LOW로 설정하면 수신 모드
📌 데이터를 보낸 후 반드시 다시 수신 모드로 변경해야 다른 장치의 응답을 받을 수 있음


5. 터미네이션 저항(120Ω) 적용 여부에 따른 신호 품질 비교

RS-485는 장거리 통신을 지원하는 특성상, 신호 반사(Echo) 문제를 방지해야 합니다.
이를 위해 네트워크 양 끝단에 터미네이션 저항(120Ω)을 추가하여 신호 품질을 유지할 수 있습니다.

📌 터미네이션 저항을 사용하는 이유

  • 신호 반사 방지 → 데이터 오류 감소
  • 신호 무결성 유지 → 장거리에서도 안정적인 데이터 전송 가능
  • RS-485 네트워크의 끝단에 120Ω 저항 추가

📌 터미네이션 저항 추가 방식

[마스터] --[120Ω]---[슬레이브1]---[슬레이브2]---[120Ω]--[슬레이브3]

💡 양 끝단(마스터와 마지막 슬레이브)에만 120Ω 저항을 추가해야 합니다.


📌 요약

TX(송신) ↔ RX(수신) 신호는 반드시 교차 연결해야 함
RS-485는 반이중(Half-Duplex) 방식이므로 송·수신을 번갈아 수행해야 함
DE/RE 핀을 활용하여 송신/수신 모드를 제어해야 함
실제 배선 실습을 통해 RS-485 데이터 송·수신을 테스트 가능
터미네이션 저항(120Ω)은 신호 반사를 방지하고 신호 품질을 유지하는 데 필수적