ESP8266 - RS485 | ESP8266 - RS485

이 튜토리얼에서는 ESP8266과 RS485 통신의 구현을 탐구합니다. 구체적으로, 다음 측면을 자세히 다룰 것입니다:

이 튜토리얼은 하드웨어 시리얼소프트웨어시리얼 모두에 대한 지침도 제공합니다.

준비물

1×ESP8266 NodeMCU Amazon
1×Micro USB Cable Amazon
1×TTL to RS485 Module Amazon
1×Jumper Wires Amazon
1×(Optional) RS485 to USB Cable Amazon
1×(Optional) ESP8266 Screw Terminal Adapter Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

TTL에서 RS485 모듈에 관하여

ESP8266에서 Serial.print(), Serial.read(), Serial.write()와 같은 함수를 사용하여 직렬 통신을 할 때, ESP8266은 TX 핀을 통해 데이터를 전송하고 RX 핀을 통해 데이터를 수신합니다. 이러한 핀들은 TTL 수준에서 작동하는데, 이는 그들이 처리하는 신호가 제한된 범위를 가진다는 것을 의미합니다. 따라서 장거리에서의 직렬 통신을 위해서는 TTL 신호를 RS232, RS485, 또는 RS422 신호 표준으로 변환하는 것이 필요해집니다.

이 튜토리얼에서는 TTL에서 RS485 모듈을 사용하여 ESP8266과 RS485(또한 RS-485로 알려짐)의 사용법에 대해 깊이 탐구할 예정입니다. 이 모듈은 TTL 신호를 RS485 신호로 변환하고 그 반대의 변환을 용이하게 합니다.

핀배열

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

TTL 인터페이스(ESP8266에 연결됨)에는 4개의 핀이 포함됩니다

  • VCC 핀: 전원 핀으로, VCC(5V 또는 3.3V)에 연결해야 합니다.
  • GND 핀: 전원 핀으로, GND(0V)에 연결해야 합니다.
  • RXD 핀: 데이터 핀으로, ESP8266의 TX 핀에 연결해야 합니다.
  • TXD 핀: 데이터 핀으로, ESP8266의 RX 핀에 연결해야 합니다.

RS485 인터페이스는 다음 핀들로 구성됩니다:

  • D+ (A 또는 TR+) 핀: 이 핀은 데이터 통신을 용이하게 합니다.
  • D- (B 또는 TR-) 핀: 이 핀은 데이터 전송을 위해 사용됩니다.
  • GND 핀: 선택 사항이긴 하지만, 잡음 간섭을 줄여 최적의 성능을 보장하기 위해 이 핀을 포함하는 것이 강력히 권장됩니다.
RS-485 module Pinout
image source: diyables.io

선연결

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

ESP8266 NodeMCU TTL to RS485 Wiring Diagram

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

ESP8266의 핀 배치ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.

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

ESP8266 NodeMCU RS-485 to TTL Wiring Diagram

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

RS485 모듈을 사용하도록 ESP8266을 프로그래밍하는 방법

ESP8266을 Arduino IDE에서 시작하려면 다음 단계를 따르세요:

Serial.begin(9600);

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

#include <SoftwareSerial.h> #define RX_PIN D6 #define TX_PIN D7 // SoftwareSerial 객체와 그 핀을 정의합니다 SoftwareSerial rs485(RX_PIN, TX_PIN);

RS485에서 데이터를 읽기 위해 다음의 함수들을 사용할 수 있습니다:

RS485에 데이터를 쓰기 위해 다음의 함수들을 사용할 수 있습니다:

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

하드웨어 시리얼을 위한 ESP8266 코드

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-rs485 */ void setup() { // 통신 시작, 보율 9600 Serial.begin(9600); // 직렬 포트 초기화를 위해 잠시 대기 delay(100); } void loop() { // 직렬에서 데이터가 사용 가능한지 확인 if (Serial.available()) { char data = Serial.read(); // 받은 문자 읽기 Serial.print(data); // 송신자에게 데이터를 에코로 돌려보내기 } }

소프트웨어 시리얼을 위한 ESP8266 코드

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-rs485 */ #include <SoftwareSerial.h> #define RX_PIN D6 #define TX_PIN D7 // SoftwareSerial 객체와 그들의 핀을 정의합니다. SoftwareSerial rs422(RX_PIN, TX_PIN); void setup() { // 통신을 9600의 보레이트로 시작합니다 rs485.begin(9600); // 직렬 포트가 초기화되는 동안 잠시 기다립니다. delay(100); } void loop() { // rs485에 데이터가 있는지 확인합니다. if (rs485.available()) { char data = rs485.read(); // 수신된 문자를 읽습니다. rs485.print(data); // 데이터를 전송자에게 에코 백합니다. } }

테스팅

다음 단계를 따라 PC에서 ESP8266으로 RS-485를 통해 데이터를 보내어 테스트를 진행할 수 있으며 그 반대도 가능합니다:

아래와 같이 RS485-to-USB 케이블을 이용하여 ESP8266을 PC에 연결하세요:

ESP8266 NodeMCU RS485 to PC communication
  • Tera Term 또는 PuTTY와 같은 시리얼 터미널 프로그램을 설치하세요.
  • 시리얼 터미널 프로그램을 열고 시리얼 파라미터(COM 포트, 보레이트...)를 설정하세요.
  • 시리얼 터미널에서 몇 가지 데이터를 입력하여 ESP8266으로 전송하세요.
  • 성공하면, 시리얼 터미널에서 에코 데이터를 볼 수 있습니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, 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!