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Ω)은 신호 반사를 방지하고 신호 품질을 유지하는 데 필수적
'프로그래밍 > 시스템' 카테고리의 다른 글
시리얼 통신 소프트웨어 실습 - 2. RS-232 / RS-485를 활용한 데이터 송수신 실습 (0) | 2025.02.10 |
---|---|
시리얼 통신 소프트웨어 실습 - 1. Python을 활용한 시리얼 통신 (pyserial 라이브러리) (0) | 2025.02.10 |
시리얼 통신 하드웨어 및 연결 실습 - 2. RS-485 모듈(MAX485)과 마이크로컨트롤러 연결 (0) | 2025.02.10 |
시리얼 통신 하드웨어 및 연결 실습 - 1. 시리얼 포트 개념 및 USB-to-Serial 변환기 이해 (0) | 2025.02.10 |
시리얼 통신 인터페이스 - 3. RS-485의 고급 개념과 실용적 고려 사항 (0) | 2025.02.10 |