아두이노 RS422에서 WiFi로 | Arduino RS422 to WiFi

이 가이드에서는 Arduino Uno R4 WiFi를 사용하여 Serial RS422에서 WiFi 변환기를 구축하는 방법을 탐구하겠습니다. 이 설정을 통해 Arduino는 시리얼 RS422 인터페이스에서 데이터를 읽고 이를 동일한 로컬 영역 네트워크(LAN) 내에서나 인터넷을 통해 원격으로 TCP 서버로 전송할 수 있습니다. 또한 TCP 서버에서 데이터를 받아 시리얼 RS422 인터페이스를 통해 다시 보낼 수도 있습니다.

이 단계들을 통해 아두이노를 사용하여 직렬 RS-422 장치와 TCP/IP 서버 사이에 다재다능한 통신 연결을 구축할 수 있습니다.

Arduino RS422 to WiFi converter

준비물

1×Arduino UNO R4 WiFi Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×TTL to RS422 Module Amazon
1×Jumper Wires Amazon
1×(Optional) RS422 to USB Cable Amazon
1×(Optional) 9V Power Adapter for Arduino Amazon
1×(Recommended) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

RS422 및 TCP에 관하여

아두이노에서 RS422와 TCP 통신 사용 방법을 모른다면, 다음 튜토리얼에서 그것들에 대해 배우십시오:

RS422를 WiFi 변환기가 작동하는 방식

  • 아두이노는 시리얼 RS422 인터페이스를 통해 시리얼 장치에 연결합니다.
  • 아두이노는 TCP 서버(여러분의 PC에 있는 TCP 서버 소프트웨어 또는 TCP 서버로 프로그래밍된 다른 아두이노일 수 있음)에 연결하는 TCP 클라이언트로 작동합니다.
  • 아두이노는 시리얼 RS422 인터페이스에서 데이터를 읽고 그것을 TCP 서버로 보냅니다.
  • 아두이노는 TCP 연결에서 데이터를 읽고 그것을 시리얼 RS422 인터페이스로 보냅니다.

선연결

하드웨어 시리얼을 사용하는 경우의 연결도

Arduino TTL to RS422 Wiring Diagram

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

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

Arduino RS-422 to TTL Wiring Diagram

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

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

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-rs422-to-wifi */ #include <WiFiS3.h> const char* WIFI_SSID = "YOUR_WIFI_SSID"; // WIFI SSID로 변경하세요 const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; // WIFI 비밀번호로 변경하세요 const char* TCP_SERVER_ADDR = "192.168.0.26"; // TCP 서버의 IP 주소로 변경하세요 const int TCP_SERVER_PORT = 1470; WiFiClient TCP_client; void setup() { Serial.begin(9600); Serial.println("Arduino: TCP CLIENT"); // WiFi 모듈을 확인합니다: if (WiFi.status() == WL_NO_MODULE) { Serial.println("WiFi 모듈과의 통신 실패!"); // 계속하지 않습니다 while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("펌웨어를 업그레이드 해주세요"); } Serial.print("SSID에 연결을 시도합니다: "); Serial.println(WIFI_SSID); // WiFi 네트워크에 연결을 시도합니다: while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) { delay(10000); // 연결을 위해 10초 기다립니다: } Serial.print("WiFi에 연결 됨 "); Serial.println(WIFI_SSID); // TCP 서버에 연결 if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) Serial.println("TCP 서버에 연결됨"); else Serial.println("TCP 서버에 연결 실패"); } void loop() { if (TCP_client.connected()) { // TCP에서 데이터를 읽고 RS422 인터페이스로 전송 if (TCP_client.available()) { char c = TCP_client.read(); Serial.write(c); } // RS422 인터페이스에서 데이터를 읽고 TCP로 전송 if (Serial.available()) { char c = Serial.read(); TCP_client.write(c); } } else { Serial.println("연결이 끊어졌습니다"); TCP_client.stop(); // TCP 서버에 재연결 if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) { Serial.println("TCP 서버에 재연결됨"); } else { Serial.println("TCP 서버에 재연결 실패"); delay(1000); } } }

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

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-rs422-to-wifi */ #include <WiFiS3.h> #include <SoftwareSerial.h> // SoftwareSerial 객체와 해당 핀을 정의합니다 SoftwareSerial rs422(6, 7); // RX: 6, TX: 7 const char* WIFI_SSID = "YOUR_WIFI_SSID"; // 당신의 WIFI SSID로 변경하세요 const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; // 당신의 WIFI 비밀번호로 변경하세요 const char* TCP_SERVER_ADDR = "192.168.0.26"; // TCP 서버의 IP 주소로 변경하세요 const int TCP_SERVER_PORT = 1470; WiFiClient TCP_client; void setup() { Serial.begin(9600); rs422.begin(9600); Serial.println("Arduino: TCP CLIENT"); // WIFI 모듈을 체크합니다: if (WiFi.status() == WL_NO_MODULE) { Serial.println("WiFi 모듈과의 통신 실패!"); // 계속하지 않음 while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("펌웨어를 업그레이드해주세요"); } Serial.print("SSID에 연결을 시도합니다: "); Serial.println(WIFI_SSID); // WiFi 네트워크에 연결을 시도합니다: while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) { delay(10000); // 연결을 위해 10초 대기: } Serial.print("WiFi에 연결됨 "); Serial.println(WIFI_SSID); // TCP 서버에 연결 if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) Serial.println("TCP 서버에 연결됨"); else Serial.println("TCP 서버에 연결 실패"); } void loop() { if (TCP_client.connected()) { // TCP에서 데이터를 읽고 RS422 인터페이스로 전송 if (TCP_client.available()) { char c = TCP_client.read(); rs422.write(c); } // RS422 인터페이스에서 데이터를 읽고 TCP로 전송 if (rs422.available()) { char c = rs422.read(); TCP_client.write(c); } } else { Serial.println("연결이 끊김"); TCP_client.stop(); // TCP 서버에 재연결 if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) { Serial.println("TCP 서버에 재연결됨"); } else { Serial.println("TCP 서버에 재연결 실패"); delay(1000); } } }

테스팅

다음 흐름으로 데이터를 보내어 테스트를 할 수 있습니다:

  • PC에 있는 직렬 소프트웨어 → RS-422 → 아두이노 → WiFi → PC에 있는 TCP 서버 소프트웨어.
  • PC에 있는 TCP 서버 소프트웨어 → WiFi → 아두이노 → RS-422 → PC에 있는 직렬 소프트웨어.
Arduino RS422 to PC communication

그것을 하기 위해서는 아래 단계들을 따르세요:

  • 아두이노 우노 R4를 처음 사용한다면, 아두이노 IDE에서 아두이노 우노 R4 환경 설정 방법을 참고하세요.
  • 상단의 배선도와 같이 TTL-to-RS422 모듈과 RS422-to-USB 케이블을 사용하여 PC에 아두이노 우노 R4 WiFi를 연결하세요.
  • Tera Term 또는 PuTTY와 같은 시리얼 터미널 프로그램을 설치하세요.
  • ezTerm과 같은 TCP 서버 소프트웨어 프로그램을 설치하세요.
  • 시리얼 프로그램을 열고 시리얼 파라미터(COM 포트, 보율 등)를 구성하세요.
  • TCP 서버 프로그램을 열고 TCP 서버로 구성한 다음, Listen 버튼을 클릭하세요.
ezTerm TCP Server
  • PC에서 명령 프롬프트를 엽니다.
  • 아래 명령어를 실행하여 PC의 IP 주소를 찾으세요:
ipconfig

출력은 다음과 같습니다:

Command Prompt
C:\WINDOWS\system32>ipconfig Windows IP Configuration Ethernet adapter: Subnet Mask . . . . . . . . . . . : 255.0.0.0 IPv4 Address. . . . . . . . . . . : 192.168.0.26 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . :
  • 아두이노 코드에서 TCP 서버(당신의 PC)의 IP 주소를 업데이트하세요. 위 예시에서는: 192.168.0.26
  • 아두이노 IDE에서 Upload 버튼을 클릭해 아두이노 보드에 코드를 컴파일하고 업로드하세요.
  • 시리얼 프로그램에서 몇 가지 데이터를 입력해서 시리얼을 통해 아두이노로 보내세요.
  • 성공하면, TCP 서버 소프트웨어에서 에코 데이터를 볼 수 있을 것입니다.
  • TCP 서버 프로그램에서 몇 가지 데이터를 입력해서 TCP를 통해 아두이노로 보내세요.
  • 성공하면, 시리얼 프로그램에서 에코 데이터를 볼 수 있을 것입니다.
Arduino Serial to TCP

상업용 RS422-이더넷 변환기를 사용하고 싶다면, CSE-H55N2 시리얼 이더넷 변환기를 구입할 수 있습니다.

동영상

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

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!