ESP32 - 문 센서 | ESP32 - Door Sensor

문 (또는 출입 센서, 접촉 센서, 창문 센서로도 알려져 있음) 센서는 보안을 위해 특히 많은 종류의 응용 프로그램에서 널리 사용됩니다. 이 센서는 출입구(예: 문, 창문 ...)를 감지/모니터링하는데 사용됩니다. 이 튜토리얼은 문 센서와 ESP32를 사용하는 방법을 안내합니다.

준비물

1×ESP-WROOM-32 Dev Module 쿠팡 | Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×Door Sensor Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Recommended) ESP32 Screw Terminal Adapter 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

문 센서 정보

도어 센서 핀배열

문 센서는 두 가지 구성 요소가 있습니다:

  • 하나의 자석
  • 두 개의 전선이 있는 하나의 리드 스위치
Door Sensor Pinout

스위치/버튼처럼, 리드 스위치의 두 전선을 구분할 필요가 없습니다.

문 센서 작동 방식

문/창문에 자석과 리드 스위치가 다음과 같이 설치됩니다:

  • 자석은 움직이는 부분입니다. 문/창문에 부착해야 합니다.
  • 리드 스위치는 고정된 부분입니다. 문틀에 부착해야 합니다.

문이 닫혔을 때 두 구성 요소가 접촉합니다.

  • 자석에 가까울 때 리드 스위치 회로가 닫힙니다.
  • 자석에서 멀리 떨어져 있을 때 리드 스위치 회로가 열립니다.
Door Sensor how it works

※ NOTE THAT:

버튼처럼, 리드 스위치에 연결된 ESP32 핀에는 반드시 풀업 또는 풀다운 저항을 사용해야 합니다.

아래와 같이 리드 스위치를 연결한다면: 한 전선을 GND에 연결하고, 다른 하나를 풀업 저항이 있는 ESP32의 입력 핀에 연결하면:

  • 자석이 리드 스위치에 가까울 때 ESP32의 입력 핀은 LOW입니다.
  • 자석이 리드 스위치에서 멀어질 때 ESP32의 입력 핀은 HIGH입니다.

그래서:

  • ESP32의 입력 핀이 LOW이면 문이 닫힙니다.
  • ESP32의 입력 핀이 HIGH이면 문이 열립니다.
  • ESP32의 입력 핀이 LOW에서 HIGH로 변경되면 문이 열리고 있습니다.
  • ESP32의 입력 핀이 HIGH에서 LOW로 변경되면 문이 닫히고 있습니다.

문 센서와 ESP32 간의 배선도

ESP32 Door Sensor Wiring Diagram

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

ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.

문 센서 프로그래밍 방법

pinMode() 함수를 사용하여 ESP32 핀을 디지털 입력 모드로 초기화합니다. 예를 들어, GPIO19 핀

pinMode(19, INPUT_PULLUP);

ESP32 핀의 상태를 digitalRead() 함수를 사용하여 읽습니다.

int doorState = digitalRead(19);

ESP32 코드 - 문 열림 및 닫힘 상태 확인

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-door-sensor */ #define DOOR_SENSOR_PIN 19 // ESP32 핀 GPIO19가 문 센서의 핀에 연결됨 int doorState; void setup() { Serial.begin(9600); // 시리얼 초기화 pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // ESP32 핀을 입력-풀업 모드로 설정 } void loop() { doorState = digitalRead(DOOR_SENSOR_PIN); // 상태 읽기 if (doorState == HIGH) { Serial.println("The door is open"); } else { Serial.println("The door is closed"); } }

사용 방법

  • ESP32를 처음 사용하는 경우, Arduino IDE에서 ESP32 환경 설정하는 방법을 참조하세요.
  • 위의 코드를 복사하여 Arduino IDE에 붙여넣으세요.
  • Arduino IDE에서 Upload 버튼을 클릭하여 ESP32 보드에 코드를 컴파일하고 업로드하세요.
  • 자석을 리드 스위치에 가깝게 옮긴 다음, 리드 스위치에서 멀어지게 옮기세요.
  • 시리얼 모니터에서 결과를 확인하세요. 아래와 같이 보입니다:.
COM6
Send
The door is open The door is open The door is closed The door is closed The door is closed The door is closed The door is closed The door is open The door is open
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP32 코드 - 문 열림 및 문 닫힘 이벤트 감지

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-door-sensor */ #define DOOR_SENSOR_PIN 19 // ESP32 핀 GPIO19가 문 센서의 핀에 연결됨 int currentDoorState; // 현재 문 센서의 상태 int lastDoorState; // 이전 문 센서의 상태 void setup() { Serial.begin(9600); // 시리얼 초기화 pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // ESP32 핀을 입력 풀업 모드로 설정 currentDoorState = digitalRead(DOOR_SENSOR_PIN); // 상태 읽기 } void loop() { lastDoorState = currentDoorState; // 마지막 상태 저장 currentDoorState = digitalRead(DOOR_SENSOR_PIN); // 새 상태 읽기 if (lastDoorState == LOW && currentDoorState == HIGH) { // 상태 변경: LOW -> HIGH Serial.println("The door-opening event is detected"); // TODO: 알람 켜기, 불 켜기 또는 알림 보내기 ... } else if (lastDoorState == HIGH && currentDoorState == LOW) { // 상태 변경: HIGH -> LOW Serial.println("The door-closing event is detected"); // TODO: 알람 끄기, 불 끄기 또는 알림 보내기 ... } }
  • 위의 코드를 복사한 후 아두이노 IDE에 붙여넣으세요.
  • 아두이노 IDE에서 Upload 버튼을 클릭하여 ESP32 보드에 코드를 컴파일하고 업로드하세요.
  • 자석을 리스위치에 가까이 가져간 다음 리드 스위치에서 멀어지게 하세요.
  • 시리얼 모니터에서 결과를 확인하세요. 아래와 같습니다:.
COM6
Send
The door-closing event is detected The door-opening event is detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

동영상

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