ESP32 C3 Super Mini RS422
ESP32 C3 Super Mini는 작은 3.3V 보드이지만 TTL to RS422 모듈을 추가하면 긴 케이블을 통해 통신할 수 있습니다. RS422는 공장, 선박, 빌딩 시스템에서 사용되는 견고한 시리얼 표준입니다. 이 튜토리얼에서는 배선 방법과 간단한 코드로 데이터를 주고받는 방법을 보여줍니다.
이 튜토리얼에서 배울 내용:
- TTL to RS422 모듈이 무엇이며 각 핀이 어떤 역할을 하는지.
- ESP32 C3 Super Mini를 TTL to RS422 모듈에 연결하는 방법.
- RS422 버스에서 데이터를 받도록 ESP32 C3 Super Mini를 프로그래밍하는 방법.
- RS422 버스로 데이터를 보내도록 ESP32 C3 Super Mini를 프로그래밍하는 방법.
- RS422를 통해 PC와 ESP32 C3 Super Mini 사이에서 양방향으로 데이터를 보내는 방법.

필요한 하드웨어
| 1 | × | ESP32 C3 Super Mini | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | TTL-RS422 변환 모듈 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (옵션) RS422 to USB 변환 케이블 | 아마존 |
TTL to RS422 모듈 정보
TTL to RS422 모듈은 ESP32 C3 Super Mini의 TTL 시리얼 신호를 RS422 신호로, 그리고 그 반대로 바꿔주는 작은 변환기입니다.
필요한 이유:
- ESP32 C3 Super Mini의 TX와 RX 핀은 TTL 레벨(3.3V) 신호를 사용합니다.
- TTL 신호는 브레드보드 전선으로 약 1미터 정도의 짧은 거리만 전달됩니다.
- RS422는 반대 전압을 가진 두 쌍의 전선을 사용하므로 노이즈가 상쇄됩니다.
- 덕분에 데이터를 훨씬 멀리, 훨씬 적은 오류로 보낼 수 있습니다.
주요 기능:
- 전이중(Full duplex): RS422는 두 개의 분리된 쌍으로 동시에 송신과 수신을 합니다.
- 장거리: 낮은 보드레이트에서 최대 약 1200m(4000ft)까지 가능합니다.
- 노이즈에 강함: 차동 신호 방식으로 모터와 릴레이에서 나오는 전기적 노이즈를 무시합니다.
- 멀티드롭 수신: 하나의 송신기가 최대 10개의 수신기에 데이터를 보낼 수 있습니다.
- 드라이버 불필요: 모듈이 하드웨어에서 신호를 변환하므로 추가 소프트웨어가 필요 없습니다.
기술 사양:
- TTL 쪽 전압: 3.3V 또는 5V. ESP32 C3 Super Mini에는 3.3V를 사용하세요.
- 신호 유형: 차동, 두 쌍. 한 쌍은 송신, 한 쌍은 수신.
- 일반적인 칩: MAX13487, MAX3422 및 유사한 RS422 트랜시버.
- 최대 케이블 길이: 낮은 보드레이트에서 약 1200m, 높은 속도에서는 더 짧아집니다.
- 일반적인 보드레이트: 9600, 19200, 38400, 57600, 115200.
핀아웃
RS422 to TTL 모듈에는 두 쪽이 있습니다: 보드를 향하는 TTL 쪽과 긴 케이블을 향하는 RS422 쪽입니다.
TTL 인터페이스 (ESP32 C3 Super Mini에 연결):
- VCC: 전원 핀. ESP32 C3 Super Mini의 3.3V에 연결합니다.
- GND: 접지 핀(0V). GND에 연결합니다.
- RXD (DI): 데이터 입력. ESP32 C3 Super Mini의 TX 핀에 연결합니다.
- TXD (RO): 데이터 출력. ESP32 C3 Super Mini의 RX 핀에 연결합니다.
RS422 인터페이스 (긴 케이블 쪽):
- A (R+): 모듈의 RX+ 핀. 다른 RS422 장치의 TX+ 핀(T+ 또는 Y 핀)에 연결합니다.
- B (R-): 모듈의 RX- 핀. 다른 RS422 장치의 TX- 핀(T- 또는 Z 핀)에 연결합니다.
- Y (T+): 모듈의 TX+ 핀. 다른 RS422 장치의 RX+ 핀(R+ 또는 A 핀)에 연결합니다.
- Z (T-): 모듈의 TX- 핀. 다른 RS422 장치의 RX- 핀(R- 또는 B 핀)에 연결합니다.

배선 다이어그램
모듈의 TTL 쪽을 ESP32 C3 Super Mini에 연결한 다음, RS422 쪽을 트위스트 페어 케이블로 다른 장치에 연결합니다.
- 참고: GPIO20과 GPIO21은 시리얼 모니터용 UART입니다. 비워 두세요. 그렇지 않으면 디버그 메시지를 잃게 됩니다.
- 참고: 대신 GPIO6와 GPIO7에서 두 번째 하드웨어 시리얼 포트를 사용합니다.
- 참고: TX는 항상 RX로, RX는 항상 TX로 연결합니다. 이 둘을 바꿔 연결하는 것이 가장 흔한 실수입니다.
- 참고: ESP32 C3 Super Mini와 모듈은 반드시 공통 GND를 공유해야 합니다.
| TTL to RS422 모듈 핀 | ESP32 C3 Super Mini 핀 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| RXD (DI) | GPIO6 |
| TXD (RO) | GPIO7 |
WARNING
ESP32 C3 Super Mini는 3.3V 보드입니다. GPIO 핀은 5V를 견디지 못합니다. 모듈 전원은 3.3V 핀에서 공급하고, GPIO6나 GPIO7에 5V TTL 신호를 절대 넣지 마세요. 칩이 손상될 수 있습니다. 모듈이 5V에서만 작동한다면 TXD 라인에 로직 레벨 시프터를 넣으세요.
RS422 쪽에서는 반드시 쌍을 지켜야 합니다. RS422는 전이중 방식이므로 두 개의 트위스트 페어를 사용합니다: 한 쌍은 Y/Z(TX+와 TX-)용, 다른 한 쌍은 A/B(RX+와 RX-)용입니다. Y와 Z는 하나의 트위스트 페어를 함께 사용해야 합니다. A와 B는 다른 트위스트 페어를 함께 사용해야 합니다. 서로 다른 쌍의 전선을 섞으면 노이즈 제거 효과가 사라집니다. 긴 케이블에서는 각 쌍의 수신 쪽 끝에만 120옴 종단 저항을 하나씩 추가하세요. 양쪽 끝에 저항을 달거나 잘못된 쌍에 달면 신호가 약해집니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
RS422 모듈을 사용하도록 ESP32 C3 Super Mini를 프로그래밍하는 방법
ESP32 C3 Super Mini에는 SoftwareSerial 라이브러리가 없으므로 대신 두 번째 하드웨어 UART를 사용합니다.
- 하드웨어 시리얼 포트를 만들고 두 핀을 정의합니다:
- Setup() 안에서 RS422 시리얼 포트를 초기화합니다:
※ 주의:
SoftwareSerial이 아닌 HardwareSerial을 사용하세요. ESP32 C3 Super Mini에는 SoftwareSerial 라이브러리가 없으므로 AVR 보드에서 복사한 스케치는 컴파일되지 않습니다. 좋은 소식은 ESP32 C3는 실제 하드웨어 UART를 거의 모든 빈 GPIO에 매핑할 수 있어서 소프트웨어 시리얼보다 더 빠르고 안정적이라는 점입니다.
- 시리얼 모니터는 115200 보드레이트로 자체 포트에 유지합니다:
- RS422 보드레이트(여기서는 9600)는 다른 RS422 장치와 정확히 일치해야 합니다.
- RS422에서 들어오는 데이터를 읽으려면 다음 함수를 사용할 수 있습니다:
- RS422로 데이터를 쓰려면 다음 함수를 사용할 수 있습니다:
- RS422와 함께 사용할 수 있는 더 많은 함수는 Serial 레퍼런스에서 확인하세요
ESP32 C3 Super Mini 코드
이 스케치는 RS422로 도착한 모든 문자를 보낸 쪽으로 다시 돌려보내고(에코), 시리얼 모니터에도 출력합니다.
이 코드가 하는 일:
- 디버깅을 위해 115200 보드레이트로 시리얼 모니터를 시작합니다.
- RS422용으로 GPIO7(RX)과 GPIO6(TX)에서 9600 보드레이트로 두 번째 하드웨어 UART를 시작합니다.
- RS422 데이터가 도착했는지 확인합니다.
- 각 문자를 RS422 송신자에게 다시 에코합니다.
- 같은 문자를 시리얼 모니터에 출력하여 확인할 수 있게 합니다.
빠른 단계
- ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
- 모듈 배선: 위의 배선 표를 따르세요. RXD가 GPIO6에, TXD가 GPIO7에 연결되었는지 확인하세요.
- 전원 확인: 5V가 아닌 3.3V 핀을 사용하세요.
- 보드 연결: USB Type-C 케이블로 ESP32 C3 Super Mini를 PC에 연결합니다.
- IDE 열기: 컴퓨터에서 Arduino IDE를 실행합니다.
- 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인하세요.
- 포트 선택: Tools > Port에서 보드의 COM 포트를 선택합니다.
- 코드 업로드: 위의 코드를 에디터에 복사하고 Upload를 클릭합니다.
- 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
- 데이터 보내기: 다른 RS422 장치에서 문자를 보내고 표시되는 것을 확인합니다.
- 전문가 팁: 아무것도 보이지 않으면 먼저 A/B 선을 바꾸고, 그다음 Y/Z 선을 바꿔 보세요. 차동 쌍을 반대로 연결하는 것은 RS422에서 두 번째로 흔한 실수입니다.
시리얼 모니터 출력
테스트
RS-422를 통해 PC에서 ESP32 C3 Super Mini로 데이터를 보내고 다시 돌려받아 링크를 테스트할 수 있습니다.
- 케이블 연결: 아래와 같이 RS422-to-USB 케이블로 ESP32 C3 Super Mini를 PC에 연결합니다.

- 파라미터 설정: 터미널을 열고 COM 포트와 9600 보드레이트, 8 데이터 비트, 패리티 없음, 1 정지 비트를 선택합니다.
- 데이터 입력: 터미널에서 ESP32 C3 Super Mini로 몇 개의 문자를 보냅니다.
- 에코 확인: 작동하면 같은 문자가 바로 터미널로 돌아옵니다.
- 모니터 확인: 같은 문자가 115200 보드레이트의 Arduino 시리얼 모니터에도 표시됩니다.
※ 주의:
RS422-to-USB 케이블은 ESP32 C3 Super Mini의 USB 포트와 별개로 자체 COM 포트를 가집니다. 두 포트를 동시에 열 수 있습니다: 하나는 9600의 RS422 포트용 터미널이고, 다른 하나는 115200의 보드 포트용 Arduino 시리얼 모니터입니다.
응용 및 프로젝트 아이디어
ESP32 C3 Super Mini와 RS422 조합은 케이블이 길거나 전기적 노이즈가 많은 환경에서 매우 유용합니다.
- 원격 센서 노드: 100m 떨어진 센서를 읽고 값을 RS422로 다시 보냅니다.
- 공장 기계 연결: RS422만 지원하는 산업용 컨트롤러나 모터 드라이브와 통신합니다.
- 보트 또는 RV 패널: 조타석 디스플레이와 엔진 센서 박스 사이에서 데이터를 전달합니다.
- 온실 모니터: 멀리 떨어진 여러 온습도 측정소를 하나의 허브에 연결합니다.
- 빌딩 자동화: 여러 층에 걸쳐 도어, 조명, HVAC 컨트롤러를 연결합니다.
- 저울 또는 프린터 리더: RS422 포트를 사용하는 탁상용 저울이나 라벨 프린터를 읽습니다.
도전 과제
ESP32 C3 Super Mini에서 RS422에 더 익숙해지려면 다음과 같은 작은 개선을 시도해 보세요.
- 쉬움: 양쪽 모두 RS422 보드레이트를 19200으로 변경하고 여전히 작동하는지 확인합니다.
- 쉬움: 한 줄 전체가 도착할 때마다 시리얼 모니터에 짧은 프롬프트를 출력합니다.
- 중간: readStringUntil()로 한 줄 전체를 모아 대문자로 에코합니다.
- 중간: 2초마다 TEMP:24.6 형식으로 온도 값을 RS422로 보냅니다.
- 고급: RS422로 LED:ON과 LED:OFF를 보내면 GPIO8의 내장 LED가 켜지고 꺼지는 간단한 명령 프로토콜을 만듭니다.
- 고급: 모든 메시지에 체크섬 바이트를 추가하고 체크섬이 틀린 메시지는 무시합니다.