ESP32 C3 Super Mini 도어 센서

도어 센서는 문이나 창문이 열렸는지 닫혔는지를 ESP32 C3 Super Mini에 알려 주는 작고 저렴한 부품입니다. 거의 모든 DIY 홈 보안 프로젝트의 핵심입니다. 이 튜토리얼에서는 ESP32 C3 Super Mini로 도어 센서를 배선하고 프로그래밍하는 방법을 단계별로 보여줍니다.

이 튜토리얼에서 배울 내용:

ESP32 C3 Super Mini - 도어 센서

필요한 하드웨어

1×ESP32 C3 Super Mini 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×문 센서 쿠팡 | 아마존
1×(옵션) DC 커넥터 전원 연결 잭 플러그 소켓 쿠팡 | 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

도어 센서 소개

도어 센서는 자석이 가까이 오거나 멀어질 때 회로를 열거나 닫는 자기 스위치입니다.

다른 이름:

  • 출입 센서
  • 접촉 센서
  • 창문 센서
  • 마그네틱 접점 스위치

주요 특징:

  • 매우 저렴하고 사용하기 쉽습니다
  • 센서 자체에는 전원 공급이 필요 없습니다
  • ESP32 C3 Super Mini에게는 간단한 버튼처럼 동작합니다
  • 마모되는 움직이는 부품이 없습니다
  • 문틀 안에 쉽게 숨길 수 있습니다

기술 사양:

  • 종류: 상시 개방(normally-open) 리드 스위치와 자석
  • 출력: 단순한 ON/OFF 접점 (전압 없음, 데이터 없음)
  • 동작 거리: 자석과 스위치 사이 약 15-25 mm
  • 로직 레벨: 3.3V 전용인 ESP32 C3 Super Mini 핀에 안전
  • 전선: 2가닥, 극성 없음

도어 센서 핀 배치

도어 센서는 두 개의 분리된 부분으로 이루어져 있습니다.

  • 자석: 움직이는 부분입니다. 전선이 없습니다.
  • 리드 스위치: 고정된 부분입니다. 전선이 2가닥 있습니다.
도어 센서 핀 배치
  • 전선 1: 극성이 없습니다. GND 또는 ESP32 C3 Super Mini 핀에 연결할 수 있습니다.
  • 전선 2: 극성이 없습니다. GND 또는 ESP32 C3 Super Mini 핀에 연결할 수 있습니다.

버튼과 마찬가지로 리드 스위치의 두 전선을 구분할 필요가 없습니다.

도어 센서의 작동 원리

자석과 리드 스위치는 문이 닫혔을 때 나란히 놓이도록 설치합니다.

  • 자석: 문이나 창문(움직이는 부분)에 부착합니다
  • 리드 스위치: 문틀(움직이지 않는 부분)에 부착합니다
  • 문 닫힘: 두 부분이 서로 가까이 있습니다
  • 문 열림: 두 부분이 서로 멀리 떨어져 있습니다
도어 센서 작동 원리

리드 스위치 내부에서 일어나는 일:

  • 자석이 가까움: 회로가 닫힙니다 (두 전선이 연결됨)
  • 자석이 멀리 있음: 회로가 열립니다 (두 전선이 연결되지 않음)

※ 주의:

ESP32 C3 Super Mini - 버튼과 마찬가지로, 리드 스위치에 연결되는 ESP32 C3 Super Mini 핀에는 반드시 풀업 또는 풀다운 저항을 사용해야 합니다. 그렇지 않으면 핀 상태가 무작위로 바뀝니다. 다행히 ESP32 C3 Super Mini에는 내장 풀업 저항이 있으므로 추가 부품이 필요 없습니다.

리드 스위치의 한 전선을 GND에, 다른 전선을 풀업 저항이 있는 ESP32 C3 Super Mini 입력 핀에 연결하면:

  • 자석이 리드 스위치 가까이 있을 때: 입력 핀은 LOW입니다
  • 자석이 리드 스위치에서 멀리 있을 때: 입력 핀은 HIGH입니다

따라서 코드에서는:

  • 핀이 LOW: 문이 닫혀 있습니다
  • 핀이 HIGH: 문이 열려 있습니다
  • 핀이 LOW에서 HIGH로 바뀜: 문이 열리는 중입니다
  • 핀이 HIGH에서 LOW로 바뀜: 문이 닫히는 중입니다

도어 센서와 ESP32 C3 Super Mini 간의 배선도

도어 센서를 ESP32 C3 Super Mini에 연결하는 데는 전선 두 가닥만 있으면 됩니다.

  • 참고: ESP32 C3 Super Mini는 3.3V에서만 동작합니다. GPIO 핀에 5V 신호를 절대 넣지 마세요.
  • 참고: 리드 스위치에는 극성이 없으므로 두 전선을 서로 바꿔도 됩니다.
  • 참고: 문이 닫혔을 때 자석과 리드 스위치의 거리를 약 15 mm 이내로 유지하세요.
  • 참고: GPIO8이나 GPIO9는 사용하지 마세요. 부트 스트래핑 핀입니다.
ESP32 C3 Super Mini 도어 센서 배선도

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

도어 센서 핀 ESP32 C3 Super Mini 핀
리드 스위치 전선 1 GPIO7
리드 스위치 전선 2 GND

도어 센서 프로그래밍 방법

ESP32 C3 Super Mini에서 도어 센서를 프로그래밍하는 데는 두 개의 함수만 필요합니다.

  • pinMode() 함수를 사용하여 핀을 내장 풀업이 있는 입력으로 설정합니다. 예: GPIO7
pinMode(7, INPUT_PULLUP);
  • digitalRead() 함수를 사용하여 핀의 상태를 읽습니다:
int door_state = digitalRead(7);
  • 팁: INPUT_PULLUP은 ESP32 C3 Super Mini 내부의 저항을 켜므로 추가 저항이 필요 없습니다.

ESP32 C3 Super Mini 코드 - 문 열림/닫힘 상태 확인

첫 번째 예제는 시리얼 모니터에 문 상태를 반복해서 출력합니다.

이 코드가 하는 일:

  • GPIO7을 내부 풀업 저항이 있는 입력으로 설정합니다
  • 루프마다 도어 센서 상태를 읽습니다
  • 핀이 HIGH이면 "The door is open"을 출력합니다
  • 핀이 LOW이면 "The door is closed"를 출력합니다
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-door-sensor */ #define DOOR_SENSOR_PIN 7 // The ESP32 C3 SuperMini pin connected to door sensor's pin int door_state; void setup() { Serial.begin(115200); // Initialize the Serial to communicate with the Serial Monitor. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode } void loop() { door_state = digitalRead(DOOR_SENSOR_PIN); // read state if (door_state == HIGH) { Serial.println("The door is open"); } else { Serial.println("The door is closed"); } }

빠른 단계

  • ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
  • 부품 연결: 위의 배선도를 따릅니다. 리드 스위치를 GPIO7과 GND에 연결합니다.
  • 보드 연결: USB Type-C 케이블로 ESP32 C3 Super Mini를 컴퓨터에 연결합니다.
  • Arduino IDE 열기: 컴퓨터에서 소프트웨어를 실행합니다.
  • 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인합니다.
  • 포트 선택: Tools > Port에서 보드의 COM 포트를 선택합니다.
  • 코드 복사: 위 코드를 Arduino IDE에 붙여넣습니다.
  • 코드 업로드: Arduino IDE에서 Upload 버튼을 클릭합니다.
  • 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
  • 테스트: 자석을 리드 스위치 가까이 가져간 다음, 멀리 떨어뜨립니다.
  • 결과 확인: 시리얼 모니터를 확인합니다. 아래 출력과 같이 보입니다.
  • 전문가 팁: 상태가 전혀 바뀌지 않으면 자석을 더 가까이 가져가세요. 대부분의 리드 스위치는 약 15 mm 이내여야 합니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
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
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

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

첫 번째 코드는 상태를 알려 줍니다. 두 번째 코드는 상태가 바뀌는 순간을 알려 줍니다.

이 코드가 하는 일:

  • 이전 루프의 문 상태를 저장합니다
  • GPIO7에서 새로운 문 상태를 읽습니다
  • 문이 열리기 시작할 때(LOW에서 HIGH로) 메시지를 한 번 출력합니다
  • 문이 닫히기 시작할 때(HIGH에서 LOW로) 메시지를 한 번 출력합니다
  • 경보, 조명, 알림을 추가할 수 있는 깔끔한 위치를 제공합니다
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-door-sensor */ #define DOOR_SENSOR_PIN 7 // The ESP32 C3 SuperMini pin connected to door sensor's pin int door_state; // current state of door sensor int prev_door_state; // previous state of door sensor void setup() { Serial.begin(115200); // Initialize the Serial to communicate with the Serial Monitor. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { prev_door_state = door_state; // save the last state door_state = digitalRead(DOOR_SENSOR_PIN); // read new state if (prev_door_state == LOW && door_state == HIGH) { // state change: LOW -> HIGH Serial.println("The door-opening event is detected"); // TODO: turn on alarm, light or send notification ... } else if (prev_door_state == HIGH && door_state == LOW) { // state change: HIGH -> LOW Serial.println("The door-closing event is detected"); // TODO: turn off alarm, light or send notification ... } }

빠른 단계

  • ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
  • 같은 배선 유지: 리드 스위치는 그대로 GPIO7과 GND에 연결합니다.
  • 코드 복사: 위 코드를 Arduino IDE에 붙여넣습니다.
  • 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인합니다.
  • 코드 업로드: Arduino IDE에서 Upload 버튼을 클릭합니다.
  • 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
  • 테스트: 자석을 리드 스위치 가까이 가져간 다음, 멀리 떨어뜨립니다.
  • 결과 확인: 변화가 있을 때마다 한 줄만 출력됩니다.
  • 전문가 팁: 코드에서 // TODO 주석을 찾아보세요. 그곳에 부저나 LED 코드를 추가하면 됩니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
The door-closing event is detected The door-opening event is detected The door-closing event is detected The door-opening event is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

라인별 코드 설명

위의 ESP32 C3 Super Mini 코드에는 라인별 설명이 포함되어 있습니다. 코드의 주석을 읽어 보세요!

응용/프로젝트 아이디어

ESP32 C3 Super Mini에서 도어 센서를 활용하는 재미있는 방법입니다.

  • 문 경보기: 외출 중에 문이 열리면 부저를 울립니다.
  • 출입 카운터: 오늘 문이 몇 번 열렸는지 셉니다.
  • 자동 조명: 수납장 문이 열리는 순간 LED 스트립을 켭니다.
  • 냉장고 감시기: 냉장고 문이 너무 오래 열려 있으면 알려 줍니다.
  • 우편함 알림: 우편함 뚜껑이 열리면 메시지를 보냅니다.
  • 창문 모니터: 잠자리에 들기 전에 모든 창문을 확인합니다.

도전해 보기

도어 센서와 ESP32 C3 Super Mini로 다음 작은 프로젝트를 연습해 보세요.

  • 쉬움: 문이 열려 있는 동안 GPIO3의 LED를 켜 보세요.
  • 쉬움: 루프마다가 아니라 문 상태가 바뀔 때만 출력해 보세요.
  • 보통: 문이 열릴 때마다 세 번 울리는 부저를 추가해 보세요.
  • 보통: 문이 열린 횟수를 세어 시리얼 모니터에 합계를 출력해 보세요.
  • 어려움: 문이 열리면 타이머를 시작하고, 30초 후에도 열려 있으면 경보를 울려 보세요.
  • 어려움: ESP32 C3 Super Mini의 WiFi를 사용하여 문이 열릴 때마다 휴대폰 알림을 보내 보세요.

댓글

관련 튜토리얼