아두이노 RS422

이 가이드에서는 아두이노와 RS422 통신을 설정하는 방법에 대해 자세히 알아보겠습니다. 다음 단계들을 철저히 살펴볼 것입니다:

해당 튜토리얼은 하드웨어 시리얼소프트웨어시리얼을 위한 지침도 제공합니다.

준비물

1×아두이노 우노 R3 쿠팡 | 아마존
1×USB 2.0 타입 A-to-B 케이블 (USB-A PC용) 쿠팡 | 아마존
1×USB 2.0 타입 C-to-B 케이블 (USB-C PC용) 아마존
1×TTL-RS422 변환 모듈 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(옵션) RS422 to USB 변환 케이블 아마존
1×(추천) 아두이노 우노용 스크루 터미널 블록 쉴드 쿠팡 | 아마존
1×(추천) 아두이노 우노용 브레드보드 쉴드 쿠팡 | 아마존
1×(추천) 아두이노 우노용 케이스 쿠팡 | 아마존
1×(추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

TTL에서 RS422 모듈에 대하여

아두이노에서 Serial.print(), Serial.read(), Serial.write() 같은 함수를 통해 직렬 통신을 사용할 때, 아두이노는 TX 핀을 통해 데이터를 전송하고 RX 핀을 통해 데이터를 수신합니다. 이 핀들은 TTL 레벨에서 작동하므로, 처리하는 신호의 범위가 제한적입니다. 따라서 더 긴 거리에 걸쳐 직렬 통신을 하려면 TTL 신호를 RS232, RS422 또는 RS422 신호 표준으로 변환해야 할 필요가 있습니다.

이 튜토리얼에서는 TTL에서 RS422 모듈을 사용하여 RS422(또는 RS-422으로 알려짐)를 Arduino와 함께 사용하는 방법에 대해 자세히 살펴보겠습니다. 이 모듈은 TTL 신호를 RS422 신호로 변환하고 그 반대도 가능하게 합니다.

핀배열

RS422에서 TTL 모듈은 두 가지 인터페이스가 있습니다:

TTL 인터페이스(Arduino에 연결됨)에는 4개의 핀이 포함되어 있습니다.

  • VCC 핀: 전원 핀, VCC(5V 또는 3.3V)에 연결해야 합니다.
  • GND 핀: 전원 핀, GND(0V)에 연결해야 합니다.
  • RXD 핀: 데이터 핀, Arduino의 TX 핀에 연결해야 합니다.
  • TXD 핀: 데이터 핀, Arduino의 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 module 사용법 핀아웃
image source: diyables.io

선연결

하드웨어 시리얼을 사용하는 경우의 배선도

아두이노 ttl to rs422 연결 배선도

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

소프트웨어 직렬을 사용하는 경우의 배선도

아두이노 rs-422 to ttl 연결 배선도

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

아두이노를 RS422 모듈을 사용하도록 프로그래밍하는 방법

시리얼 인터페이스를 초기화합니다:

Serial.begin(9600);

SoftwareSerial을 사용한다면, 라이브러리를 포함시키고 SoftwareSerial 객체를 선언해야 합니다.

#include <SoftwareSerial.h> // SoftwareSerial 객체와 그들의 핀을 정의하다 SoftwareSerial rs422(6, 7); // RX: 6, TX: 7

RS422에서 데이터를 읽으려면 다음 함수를 사용할 수 있습니다:

RS422에 데이터를 쓰려면 다음 함수를 사용할 수 있습니다:

RS422에서 사용할 수 있는 더 많은 함수는 Serial reference에서 확인할 수 있습니다.

하드웨어 시리얼을 위한 아두이노 코드

/* * 이 아두이노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-rs422 */ void setup() { // 통신을 9600의 보레이트로 시작합니다 Serial.begin(9600); // 시리얼 포트가 초기화되는 것을 허용하기 위해 잠시 기다립니다 delay(100); } void loop() { // Serial에 사용 가능한 데이터가 있는지 확인합니다 if (Serial.available()) { char data = Serial.read(); // 받은 문자를 읽습니다 Serial.print(data); // 데이터를 송신자에게 에코 백합니다 } }

소프트웨어 시리얼을 위한 아두이노 코드

/* * 이 아두이노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-rs422 */ #include <SoftwareSerial.h> // SoftwareSerial 객체와 해당 핀을 정의 SoftwareSerial rs422(6, 7); // RX: 6, TX: 7 void setup() { // 통신 시작, 보드레이트 9600으로 설정 rs422.begin(9600); // 시리얼 포트가 초기화 될 시간을 주기 위해 잠시 대기 delay(100); } void loop() { // rs422에서 데이터가 있는지 확인 if (rs422.available()) { char data = rs422.read(); // 수신된 문자 읽기 rs422.print(data); // 데이터를 보낸 곳으로 에코 백 } }

테스팅

아래 단계를 따라 PC에서 RS-422을 통해 Arduino로 데이터를 보내고 그 반대로 테스트를 할 수 있습니다:

아래와 같이 RS422-to-USB 케이블을 이용해 아두이노를 PC에 연결하세요:

아두이노 rs422 to pc communication
  • Tera Term 또는 PuTTY와 같은 시리얼 터미널 프로그램을 설치하세요.
  • 시리얼 터미널 프로그램을 열고 시리얼 매개 변수(COM 포트, 보레이트 등)를 구성하세요.
  • 시리얼 터미널에서 데이터를 입력하여 Arduino로 보내세요.
  • 성공적이라면, 시리얼 터미널에서 에코 데이터를 볼 수 있을 것입니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.