ESP8266 - 버튼 - 릴레이 | ESP8266 - Button - Relay

이 튜토리얼은 ESP8266과 버튼을 사용하여 릴레이를 제어하는 방법을 지시합니다. 릴레이를 솔레노이드 잠금장치, 전구, LED 스트립, 모터 또는 액추에이터 등에 연결함으로써, 버튼으로 그것들을 제어할 수 있습니다. 우리는 두 가지 다른 애플리케이션을 배우게 될 것입니다:

애플리케이션 1 - 릴레이 상태가 버튼 상태와 동기화됩니다. 자세히:

응용 프로그램 2 - 버튼을 누를 때마다 릴레이 상태가 토글됩니다. 보다 구체적으로:

애플리케이션 2에서는 버튼이 제대로 작동하는지 확인하기 위해 버튼을 디바운스 처리할 필요가 있습니다. 버튼의 디바운스 처리 여부에 따라 ESP8266 코드를 사용할 때 릴레이의 동작 방식이 어떻게 달라지는지 비교함으로써 그 중요성을 알아보겠습니다.

준비물

1×ESP8266 NodeMCU Amazon
1×Micro USB Cable Amazon
1×Push Button Amazon
1×(Optional) Panel-mount Push Button Amazon
1×Relay Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) Solenoid Lock Amazon
1×(Optional) 12V Power Adapter Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×(Optional) 5V Power Adapter for ESP8266 Amazon
1×(Optional) ESP8266 Screw Terminal Adapter Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

릴레이와 버튼에 대하여

릴레이 및 버튼(핀배열, 작동 방법 및 프로그래밍 포함)에 익숙하지 않다면 다음 튜토리얼이 도움이 될 수 있습니다:

선연결

ESP8266 NodeMCU Button relay wiring diagram

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

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

애플리케이션 1 - 릴레이 상태가 버튼 상태와 동기화됩니다

ESP8266 코드

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-button-relay */ #define BUTTON_PIN D1 // ESP8266의 D1 핀이 버튼의 핀에 연결됩니다 #define RELAY_PIN D7 // ESP8266의 D7 핀이 릴레이의 핀에 연결됩니다 void setup() { Serial.begin(9600); // 시리얼 모니터와 통신하기 위해 시리얼을 초기화합니다. pinMode(BUTTON_PIN, INPUT_PULLUP); // ESP8266 핀을 입력 풀업 모드로 설정합니다 pinMode(RELAY_PIN, OUTPUT); // ESP8266 핀을 출력 모드로 설정합니다 } void loop() { int button_state = digitalRead(BUTTON_PIN); // 새 상태 읽기 if (button_state == LOW) { Serial.println("버튼이 눌리고 있습니다"); digitalWrite(RELAY_PIN, HIGH); // 켜기 } else if (button_state == HIGH) { Serial.println("버튼이 눌리지 않았습니다"); digitalWrite(RELAY_PIN, LOW); // 끄기 } }

사용 방법

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

ESP8266을 처음 사용하는 경우 Arduino IDE에서 ESP8266 환경 설정 방법 튜토리얼을 확인하세요.

도표에 표시된 대로 구성요소를 연결하세요.

USB 케이블을 사용하여 컴퓨터에 ESP8266 보드를 연결하세요.

컴퓨터에서 Arduino IDE를 엽니다.

올바른 ESP8266 보드를 선택하세요. 예를 들어 (NodeMCU 1.0 (ESP-12E Module)) 및 해당 COM 포트입니다.

USB 케이블로 컴퓨터에 ESP8266을 연결하세요.

Arduino IDE를 실행하고, 올바른 보드와 포트를 선택하세요.

코드를 복사하고 Arduino IDE에서 엽니다.

Arduino IDE에서 Upload 버튼을 클릭하여 코드를 컴파일하고 ESP8266에 업로드합니다.

Arduino IDE Upload Code
  • 버튼을 누르고 몇 초간 계속 누르세요.
  • 릴레이 상태의 변화를 확인하세요.

버튼 상태와 동기화된 릴레이 상태를 볼 수 있습니다.

코드 설명

소스 코드의 주석에 포함된 줄별 설명을 확인해 보세요!

애플리케이션 2 - 버튼 토글 릴레이

ESP8266 코드 - 디바운싱 없이 버튼으로 릴레이 토글하기

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-button-relay */ #define BUTTON_PIN D1 // ESP8266 핀 D1이 버튼의 핀에 연결됨 #define RELAY_PIN D7 // ESP8266 핀 D7이 릴레이의 핀에 연결됨 int relay_state = LOW; // 릴레이의 현재 상태 int button_state; // 버튼의 현재 상태 int last_button_state; // 버튼의 이전 상태 void setup() { Serial.begin(9600); // 시리얼 통신을 시작하여 시리얼 모니터와 통신 pinMode(BUTTON_PIN, INPUT_PULLUP); // ESP8266 핀을 입력 풀업 모드로 설정 pinMode(RELAY_PIN, OUTPUT); // ESP8266 핀을 출력 모드로 설정 button_state = digitalRead(BUTTON_PIN); } void loop() { last_button_state = button_state; // 마지막 상태 저장 button_state = digitalRead(BUTTON_PIN); // 새 상태 읽기 if (last_button_state == HIGH && button_state == LOW) { Serial.println("버튼이 눌렸습니다"); // 릴레이 상태 토글 relay_state = !relay_state; // 토글된 상태에 따라 릴레이 제어 digitalWrite(RELAY_PIN, relay_state); } }

코드 설명

ESP8266 코드 위의 주석 라인에서 설명을 찾을 수 있습니다.

코드에서 relay_state = !relay_state 표현식은 다음 코드와 동일합니다:

if(relay_state == LOW) relay_state = HIGH; else relay_state = LOW;

사용 방법

  • 아두이노 IDE에서 코드를 복사하고 열어보세요.
  • ESP8266에 코드를 업로드하세요.
  • 출시 버튼을 여러 번 눌러보세요.
  • 릴레이 상태의 변화를 확인하세요.

버튼을 누를 때마다 릴레이가 켜지거나 꺼지는 것을 알아차릴 수 있지만, 항상 같지는 않을 수 있습니다. 때로는 버튼을 한 번 누르는 것만으로도 여러 번 빠르게 전환되거나 전혀 전환되지 않을 수도 있습니다(맨눈으로 볼 수 없을 정도로 매우 빠르게 두 번 전환함).

이 문제를 해결하려면 버튼에 대해 디바운스 처리를 해야 합니다.

ESP8266 코드 - 디바운싱을 사용하여 버튼으로 릴레이를 토글합니다

버튼 디바운싱은 초보자에게 도전적일 수 있습니다. 다행히도, ezButton 라이브러리가 쉽게 만들어줍니다.

디바운싱이 왜 필요한가요? 자세한 정보는 ESP8266 - 버튼 디바운스 튜토리얼을 참조하세요.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-button-relay */ #include <ezButton.h> #define BUTTON_PIN D1 // ESP8266의 핀 D1이 버튼의 핀에 연결됨 #define RELAY_PIN D7 // ESP8266의 핀 D7이 릴레이의 핀에 연결됨 ezButton button(BUTTON_PIN); // 핀 7을 위한 ezButton 객체 생성 int relay_state = LOW; // 릴레이의 현재 상태 void setup() { Serial.begin(9600); // 시리얼 모니터와 통신을 위해 시리얼을 초기화합니다. pinMode(RELAY_PIN, OUTPUT); // ESP8266 핀을 출력 모드로 구성 button.setDebounceTime(50); // 디바운스 시간을 50 밀리초로 설정 } void loop() { button.loop(); // loop() 함수를 먼저 호출해야 함 if (button.isPressed()) { Serial.println("The button is pressed"); // 릴레이의 상태를 토글 relay_state = !relay_state; // 토글된 상태에 따라 릴레이 제어 digitalWrite(RELAY_PIN, relay_state); } }

사용 방법

  • EzButton 라이브러리를 설치하세요. 지침은 방법을 참조하세요.
  • 코드를 복사하고 Arduino IDE로 열어주세요.
  • Arduino IDE에서 Upload 버튼을 클릭하여 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!