ESP8266 - 버튼으로 전자기 잠금장치 제어하기 | ESP8266 - Button Control Electromagnetic Lock

이 튜토리얼은 ESP8266과 버튼을 사용하여 전자 자물쇠를 제어하는 방법을 안내합니다. 버튼을 누르면 ESP8266이 일정 시간(예: 10초) 동안 문을 엽니다. 그 후에 문은 다시 잠깁니다.

우리는 쉬운 것에서 어려운 것으로 두 단계로 나아갈 것입니다.

준비물

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

버튼과 전자기 잠금에 관하여

만약 여러분이 전자기 잠금장치와 버튼(핀 배치, 작동 방식, 프로그래밍 포함)에 익숙하지 않다면, 다음 튜토리얼이 도움이 될 수 있습니다:

선연결

ESP8266 NodeMCU Button Electromagnetic Lock wiring diagram

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

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

ESP8266 코드 - 디바운싱 없이 버튼으로 전자 자물쇠 제어

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-button-control-electromagnetic-lock */ #define BUTTON_PIN D1 // ESP8266 핀이 버튼의 핀에 연결됨 #define RELAY_PIN D8 // ESP8266 핀이 릴레이의 핀에 연결됨 int prev_button_state; // 버튼의 이전 상태 int button_state; // 버튼의 현재 상태 void setup() { Serial.begin(9600); // 시리얼 모니터와 통신하기 위해 시리얼 초기화. pinMode(BUTTON_PIN, INPUT_PULLUP); // ESP8266 핀을 입력 풀업 모드로 구성 pinMode(RELAY_PIN, OUTPUT); // ESP8266 핀을 출력 모드로 구성 digitalWrite(RELAY_PIN, HIGH); // 문 잠금 button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // 마지막 상태 저장 button_state = digitalRead(BUTTON_PIN); // 새 상태 읽기 if (prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // 10초 동안 문을 잠금 해제 delay(10000); // 10 초 digitalWrite(RELAY_PIN, HIGH); // 문을 다시 잠금 } }

사용 방법

Arduino IDE에서 ESP8266을 시작하는 방법은 다음과 같습니다:

  • 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에 컴파일하고 업로드하세요.
  • 전기자판을 전자석 가까이 가져다 놓으세요.
  • 버튼을 한 번 누르세요.
  • 전기자판과 전자석 사이의 인력을 10초 동안 확인하세요.

코드 설명

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

※ NOTE THAT:

실제로 위에서 언급한 코드는 항상 올바르게 작동하지 않습니다. 제대로 기능하도록 하기 위해서는 버튼에 대해 디바운싱을 해야 합니다. 버튼을 위한 디바운싱은 막 시작하는 사람들에게는 까다로울 수 있습니다. 다행히도, ezButton 라이브러리가 훨씬 더 간단하게 만들어줍니다.

ESP8266 코드 - 디바운싱으로 버튼 제어 전자기 잠금장치

debouncing의 목적은 무엇인가요? ⇒ debouncing이 왜 필요한지 이해하려면 ESP8266 - 버튼 디바운스 튜토리얼을 참조하세요.

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

사용 방법

다이어그램에 표시된 대로 구성 요소를 연결하십시오.

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

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

올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하십시오.

ezButton 라이브러리를 설치하십시오. 지침은 How To를 참조하십시오.

Arduino IDE에서 코드를 열고 Upload 버튼을 클릭하여 ESP8266에 업로드하십시오.

암페어 플레이트를 전자석에 가까이 가져가고 버튼을 한 번 누르십시오.

암페어 플레이트와 전자석 사이의 인력을 10초 동안 확인하십시오.

※ NOTE THAT:

위의 코드에서는 지연 함수를 사용했습니다. 따라서 버튼의 디바운싱에 대해 걱정할 필요가 없습니다. 그럼에도 불구하고, 지연 함수를 사용하지 않고 더 많은 작업을 하고 싶으시다면 디바운싱 코드를 여전히 제공합니다. 자세한 정보는 How to use millis() instead of delay()를 확인해보세요.

동영상

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