ESP32 C3 Super Mini RS422

ESP32 C3 Super Mini는 작은 3.3V 보드이지만 TTL to RS422 모듈을 추가하면 긴 케이블을 통해 통신할 수 있습니다. RS422는 공장, 선박, 빌딩 시스템에서 사용되는 견고한 시리얼 표준입니다. 이 튜토리얼에서는 배선 방법과 간단한 코드로 데이터를 주고받는 방법을 보여줍니다.

이 튜토리얼에서 배울 내용:

ESP32 C3 Super Mini - rs422

필요한 하드웨어

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 핀)에 연결합니다.
rs-422 모듈 핀아웃
image source: diyables.io

배선 다이어그램

모듈의 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옴 종단 저항을 하나씩 추가하세요. 양쪽 끝에 저항을 달거나 잘못된 쌍에 달면 신호가 약해집니다.

ESP32 C3 Super Mini ttl to rs422 배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

RS422 모듈을 사용하도록 ESP32 C3 Super Mini를 프로그래밍하는 방법

ESP32 C3 Super Mini에는 SoftwareSerial 라이브러리가 없으므로 대신 두 번째 하드웨어 UART를 사용합니다.

  • 하드웨어 시리얼 포트를 만들고 두 핀을 정의합니다:
#define RS422_RX_PIN 7 // The ESP32 C3 Super Mini pin GPIO7 connected to the module's TXD (RO) pin #define RS422_TX_PIN 6 // The ESP32 C3 Super Mini pin GPIO6 connected to the module's RXD (DI) pin HardwareSerial rs422Serial(1); // use UART1
  • Setup() 안에서 RS422 시리얼 포트를 초기화합니다:
rs422Serial.begin(9600, SERIAL_8N1, RS422_RX_PIN, RS422_TX_PIN); // RS422

※ 주의:

SoftwareSerial이 아닌 HardwareSerial을 사용하세요. ESP32 C3 Super Mini에는 SoftwareSerial 라이브러리가 없으므로 AVR 보드에서 복사한 스케치는 컴파일되지 않습니다. 좋은 소식은 ESP32 C3는 실제 하드웨어 UART를 거의 모든 빈 GPIO에 매핑할 수 있어서 소프트웨어 시리얼보다 더 빠르고 안정적이라는 점입니다.

  • 시리얼 모니터는 115200 보드레이트로 자체 포트에 유지합니다:
Serial.begin(115200); // Serial Monitor

ESP32 C3 Super Mini 코드

이 스케치는 RS422로 도착한 모든 문자를 보낸 쪽으로 다시 돌려보내고(에코), 시리얼 모니터에도 출력합니다.

이 코드가 하는 일:

  • 디버깅을 위해 115200 보드레이트로 시리얼 모니터를 시작합니다.
  • RS422용으로 GPIO7(RX)과 GPIO6(TX)에서 9600 보드레이트로 두 번째 하드웨어 UART를 시작합니다.
  • RS422 데이터가 도착했는지 확인합니다.
  • 각 문자를 RS422 송신자에게 다시 에코합니다.
  • 같은 문자를 시리얼 모니터에 출력하여 확인할 수 있게 합니다.
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-rs422 */ #define RS422_RX_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 connected to the TXD (RO) pin of the TTL to RS422 module #define RS422_TX_PIN 6 // The ESP32 C3 SuperMini pin GPIO6 connected to the RXD (DI) pin of the TTL to RS422 module // The ESP32 C3 SuperMini does NOT support SoftwareSerial. // Use a second hardware UART (UART1) so that the Serial Monitor UART stays free. HardwareSerial rs422Serial(1); void setup() { // start communication with the Serial Monitor Serial.begin(115200); // Serial Monitor // start communication with the TTL to RS422 module at baud rate 9600 rs422Serial.begin(9600, SERIAL_8N1, RS422_RX_PIN, RS422_TX_PIN); // RS422 // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on RS422 if (rs422Serial.available()) { char data = rs422Serial.read(); // read the received character rs422Serial.print(data); // echo back to data to the sender Serial.print(data); // print the recived data to Serial Monitor } }

빠른 단계

  • 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에서 두 번째로 흔한 실수입니다.

시리얼 모니터 출력

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Hello ESP32 C3 Super Mini RS422 test 1 RS422 test 2 Temperature = 24.6 C
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

테스트

RS-422를 통해 PC에서 ESP32 C3 Super Mini로 데이터를 보내고 다시 돌려받아 링크를 테스트할 수 있습니다.

  • 케이블 연결: 아래와 같이 RS422-to-USB 케이블로 ESP32 C3 Super Mini를 PC에 연결합니다.
ESP32 C3 Super Mini rs422와 pc 간 통신
  • 터미널 설치: Tera Term 또는 PuTTY 같은 시리얼 터미널 프로그램을 설치합니다.
  • 파라미터 설정: 터미널을 열고 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가 켜지고 꺼지는 간단한 명령 프로토콜을 만듭니다.
  • 고급: 모든 메시지에 체크섬 바이트를 추가하고 체크섬이 틀린 메시지는 무시합니다.