아두이노 RS485에서 와이파이로 | Arduino RS485 to WiFi
이 가이드에서는 Arduino Uno R4 WiFi를 사용하여 Serial RS485에서 WiFi로 변환기를 구축하는 방법을 탐색하겠습니다. 이 설정을 사용하면 Arduino는 시리얼 RS485 인터페이스에서 데이터를 읽고 이를 동일한 로컬 영역 네트워크(LAN) 내 또는 인터넷을 통해 원격으로 TCP 서버로 전송할 수 있습니다. 또한 TCP 서버에서 데이터를 수신하고 이를 시리얼 RS485 인터페이스를 통해 다시 보낼 수도 있습니다.
이 단계들을 통해 아두이노를 사용하여 시리얼 RS-485 장치와 TCP/IP 서버 사이에 다양한 통신 연결을 구축할 수 있습니다.
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 R4 | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino UNO R4 | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino UNO R4 | Amazon | |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
아두이노에서 RS485 및 TCP 통신을 사용하는 방법을 모른다면, 다음 튜토리얼에서 배워보세요:
아두이노는 시리얼 RS485 인터페이스를 통해 시리얼 장치에 연결합니다.
아두이노는 TCP 서버(당신의 PC에 있는 TCP 서버 소프트웨어나 TCP 서버로 프로그래밍된 다른 아두이노일 수 있음)에 연결하는 TCP 클라이언트로 작동합니다.
아두이노는 시리얼 RS485 인터페이스에서 데이터를 읽어 TCP 서버로 전송합니다.
아두이노는 TCP 연결에서 데이터를 읽어 시리얼 RS485 인터페이스로 전송합니다.
하드웨어 시리얼을 사용하는 경우의 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
소프트웨어 시리얼을 사용하는 경우의 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
#include <WiFiS3.h>
const char* WIFI_SSID = "YOUR_WIFI_SSID";
const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD";
const char* TCP_SERVER_ADDR = "192.168.0.26";
const int TCP_SERVER_PORT = 1470;
WiFiClient TCP_client;
void setup() {
Serial.begin(9600);
Serial.println("Arduino: TCP CLIENT");
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);
while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) {
delay(10000);
}
Serial.print("WiFi에 연결되었습니다 ");
Serial.println(WIFI_SSID);
if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT))
Serial.println("TCP 서버에 연결되었습니다");
else
Serial.println("TCP 서버에 연결 실패");
}
void loop() {
if (TCP_client.connected()) {
if (TCP_client.available()) {
char c = TCP_client.read();
Serial.write(c);
}
if (Serial.available()) {
char c = Serial.read();
TCP_client.write(c);
}
} else {
Serial.println("연결이 끊어졌습니다");
TCP_client.stop();
if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) {
Serial.println("TCP 서버에 재연결되었습니다");
} else {
Serial.println("TCP 서버에 재연결 실패");
delay(1000);
}
}
}
#include <WiFiS3.h>
#include <SoftwareSerial.h>
SoftwareSerial rs485(6, 7);
const char* WIFI_SSID = "YOUR_WIFI_SSID";
const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD";
const char* TCP_SERVER_ADDR = "192.168.0.26";
const int TCP_SERVER_PORT = 1470;
WiFiClient TCP_client;
void setup() {
Serial.begin(9600);
rs485.begin(9600);
Serial.println("Arduino: TCP CLIENT");
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);
while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) {
delay(10000);
}
Serial.print("WiFi에 연결되었습니다 ");
Serial.println(WIFI_SSID);
if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT))
Serial.println("TCP 서버에 연결되었습니다");
else
Serial.println("TCP 서버에 연결 실패");
}
void loop() {
if (TCP_client.connected()) {
if (TCP_client.available()) {
char c = TCP_client.read();
rs485.write(c);
}
if (rs485.available()) {
char c = rs485.read();
TCP_client.write(c);
}
} else {
Serial.println("연결이 끊겼습니다");
TCP_client.stop();
if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) {
Serial.println("TCP 서버에 다시 연결되었습니다");
} else {
Serial.println("TCP 서버에 다시 연결 실패");
delay(1000);
}
}
}
다음 흐름에 데이터를 보내어 테스트를 할 수 있습니다:
그것을 하기 위해서는 아래 단계를 따르세요:
위의 배선도에 따라 TTL-to-RS485 모듈과 RS485-to-USB 케이블을 사용하여 아두이노 우노 R4 WiFi를 PC에 연결합니다.
ezTerm 같은 TCP 서버 소프트웨어 프로그램을 설치합니다.
시리얼 프로그램을 열고 시리얼 매개변수(COM 포트, 보레이트...)를 구성합니다.
TCP 서버 프로그램을 열고 TCP 서버로 구성한 다음 듣기 버튼을 클릭합니다.
출력은 다음과 같습니다:
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를 통해 아두이노로 전송하십시오.
성공하면, 시리얼 프로그램에서 에코 데이터를 볼 수 있습니다.
상업용 RS485에서 이더넷 컨버터를 사용하고 싶다면, CSE-H55N2 시리얼에서 이더넷 컨버터를 구입할 수 있습니다.
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.