아두이노 RS485에서 와이파이로 | Arduino RS485 to WiFi

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

이 단계들을 통해 아두이노를 사용하여 시리얼 RS-485 장치와 TCP/IP 서버 사이에 다양한 통신 연결을 구축할 수 있습니다.

Arduino RS485 to WiFi converter

준비물

1×Arduino UNO R4 WiFi Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×TTL to RS485 Module Amazon
1×Jumper Wires Amazon
1×(Optional) RS485 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
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

RS485 및 TCP에 대하여

아두이노에서 RS485 및 TCP 통신을 사용하는 방법을 모른다면, 다음 튜토리얼에서 배워보세요:

RS485에서 WiFi 변환기 작동 방식

  • 아두이노는 시리얼 RS485 인터페이스를 통해 시리얼 장치에 연결합니다.
  • 아두이노는 TCP 서버(당신의 PC에 있는 TCP 서버 소프트웨어나 TCP 서버로 프로그래밍된 다른 아두이노일 수 있음)에 연결하는 TCP 클라이언트로 작동합니다.
  • 아두이노는 시리얼 RS485 인터페이스에서 데이터를 읽어 TCP 서버로 전송합니다.
  • 아두이노는 TCP 연결에서 데이터를 읽어 시리얼 RS485 인터페이스로 전송합니다.

선연결

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

Arduino TTL to RS485 Wiring Diagram

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

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

Arduino RS-485 to TTL Wiring Diagram

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

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

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-rs485-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로부터 데이터를 읽고 RS485 인터페이스로 전송합니다 if (TCP_client.available()) { char c = TCP_client.read(); Serial.write(c); } // RS485 인터페이스로부터 데이터를 읽고 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-rs485-to-wifi */ #include <WiFiS3.h> #include <SoftwareSerial.h> // SoftwareSerial 객체와 그 핀 정의 SoftwareSerial rs485(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); rs485.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에서 데이터를 읽어 RS485 인터페이스로 보냅니다 if (TCP_client.available()) { char c = TCP_client.read(); rs485.write(c); } // RS485 인터페이스에서 데이터를 읽어 TCP로 보냅니다 if (rs485.available()) { char c = rs485.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-485 → 아두이노 → 와이파이 → 당신의 PC에 있는 TCP 서버 소프트웨어.
  • 당신의 PC에 있는 TCP 서버 소프트웨어 → 와이파이 → 아두이노 → RS-485 → 당신의 PC에 있는 시리얼 소프트웨어.
Arduino RS485 to PC communication

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

  • 아두이노 우노 R4를 처음 사용하는 경우, 아두이노 우노 R4 환경 설정 방법을 참조하십시오.
  • 위의 배선도에 따라 TTL-to-RS485 모듈과 RS485-to-USB 케이블을 사용하여 아두이노 우노 R4 WiFi를 PC에 연결합니다.
  • Tera Term이나 PuTTY와 같은 시리얼 터미널 프로그램을 설치합니다.
  • ezTerm 같은 TCP 서버 소프트웨어 프로그램을 설치합니다.
  • 시리얼 프로그램을 열고 시리얼 매개변수(COM 포트, 보레이트...)를 구성합니다.
  • TCP 서버 프로그램을 열고 TCP 서버로 구성한 다음 듣기 버튼을 클릭합니다.
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

상업용 RS485에서 이더넷 컨버터를 사용하고 싶다면, 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!