라즈베리 파이 피코 도어 센서

이 가이드는 Raspberry Pi Pico와 도어 센서를 사용하여 문이나 창문이 열려 있는지 닫혀 있는지를 확인하는 방법을 보여줍니다. 우리는 도어 센서를 설정하고, 이를 Raspberry Pi Pico에 연결하며, 센서로부터 문의 상태를 감지하도록 Raspberry Pi Pico를 프로그래밍하는 방법을 배울 것입니다.

라즈베리 파이 피코 문 센서

준비물

1×라즈베리 파이 피코 W 아마존
1×라즈베리 파이 피코 (또는) 아마존
1×마이크로 USB 케이블 아마존
1×문 센서 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 라즈베리 파이 피코용 스크루 터미널 확장 보드 아마존
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

도어 센서에 대해

핀아웃

문 센서는 두 개의 구성 요소로 구성되어 있습니다.

  • 금속 커넥터 두 개가 있는 리드 스위치 1개
  • 자석 1개
문 센서 핀 배치

일반 스위치나 버튼처럼, 리드 스위치의 두 핀에 대해 걱정할 필요가 없습니다.

작동 원리

자석은 움직이는 문이나 창문에 부착되고, 리드 스위치는 고정된 문틀에 부착됩니다. 문이 닫히면 이 두 부품이 서로 가까워집니다.

  • 자석이 리드 스위치에 가까이 있을 때, 리드 스위치의 회로가 닫힙니다.
  • 자석이 리드 스위치에서 멀리 떨어져 있을 때, 리드 스위치의 회로가 열립니다.
문 센서 작동 원리핀 배치

※ 주의:

리드 스위치는 자체적으로 LOWHIGH 신호를 생성하지 않습니다. 단지 열리거나 닫힐 뿐입니다. 라즈베리 파이 피코에 연결하는 방식에 따라 핀이 LOW, HIGH로 읽히거나 부동 값(불안정함)을 가질 수 있습니다. 이러한 불안정한 부동 값을 피하기 위해 라즈베리 파이 피코의 핀에 풀업 또는 풀다운 저항을 연결해야 합니다.

리드 스위치의 한 핀을 GND에 연결하고 다른 핀을 풀업 저항이 있는 Raspberry Pi Pico의 입력 핀에 연결합니다. 이 저항은 내장형일 수도 있고 별도로 추가할 수도 있습니다.

  • 자석이 리드 스위치에 가까이 있을 때, Raspberry Pi Pico의 입력 핀이 LOW를 읽습니다.
  • 자석이 리드 스위치에 가까이 있지 않을 때, Raspberry Pi Pico의 입력 핀이 HIGH를 읽습니다.

이렇게:

  • 라즈베리 파이 피코의 입력 핀을 확인하여 문이 열려 있는지 닫혀 있는지 확인하세요:
    • 핀이 LOW이면 문은 닫혀 있습니다.
    • 핀이 HIGH이면 문은 열려 있습니다.
  • 문이 열리거나 닫히는 시점을 확인하려면 라즈베리 파이 피코의 입력 핀 상태 변화를 관찰하세요:
    • LOW에서 HIGH로 변경되면 문이 열리고 있음을 나타냅니다.
    • HIGH에서 LOW로 변경되면 문이 닫히고 있음을 나타냅니다.

선연결

라즈베리 파이 피코 문 센서 배선도

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

라즈베리 파이 피코 코드 - 문 열림 및 닫힘 상태 확인

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-door-sensor */ from machine import Pin import utime DOOR_SENSOR_PIN = 1 # The Raspberry Pi Pico pin connected to the door sensor (GP1) # Create a Pin object to handle the input from the door sensor # Input pull-up mode is activated by setting Pin.PULL_UP door_sensor = Pin(DOOR_SENSOR_PIN, Pin.IN, Pin.PULL_UP) while True: # Read the current state of the door sensor door_state = door_sensor.value() # Check if the door is open or closed based on the state if door_state == 1: print("The door is open") else: print("The door is closed") # Sleep for a short period to reduce output flooding utime.sleep(0.5)

자세한 사용 방법

아래 지시사항을 한 단계씩 따라 주십시오:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하십시오.
  • Raspberry Pi Pico에 MicroPython 펌웨어가 설치되어 있는지 확인하십시오.
  • Raspberry Pico를 처음 사용하는 경우, 자세한 지침은 라즈베리 파이 피코 - 시작하기 튜토리얼을 참조하십시오.
  • 제공된 다이어그램에 따라 Raspberry Pi Pico를 도어 센서에 연결하십시오.
  • USB 케이블을 사용하여 Raspberry Pi Pico를 컴퓨터에 연결하십시오.
  • 컴퓨터에서 Thonny IDE를 실행하십시오.
  • Thonny IDE에서 도구 옵션을 통해 MicroPython (Raspberry Pi Pico) 인터프리터를 선택하십시오.
  • 인터프리터 탭에서 드롭다운 메뉴에서 MicroPython (Raspberry Pi Pico)를 선택하십시오.
  • 올바른 포트가 선택되었는지 확인하십시오. Thonny IDE가 포트를 자동으로 감지하지만, 수동으로 선택해야 할 수도 있습니다(예: Windows에서는 COM3, Linux에서는 /dev/ttyACM0).
  • 위의 코드를 복사하여 Thonny IDE의 편집기에 붙여넣으십시오.
  • 다음 단계를 따라 스크립트를 Raspberry Pi Pico에 저장하십시오:
    • 저장 버튼을 클릭하거나 Ctrl+S 키를 사용합니다.
    • 저장 대화상자에서 두 개의 섹션(이 컴퓨터와 Raspberry Pi Pico)이 나타납니다. Raspberry Pi Pico를 선택하십시오.
    • 파일 이름을 main.py로 저장하십시오.
  • 녹색 실행 버튼을 클릭하거나 F5 키를 눌러 스크립트를 실행하십시오. 스크립트가 실행됩니다.
  • 자석을 리드 스위치 가까이 가져갔다가 멀리 이동시키십시오.
  • Thonny 하단의 쉘에서 메시지를 확인하십시오.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot 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
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

스크립트의 이름을 main.py로 지정하고 Raspberry Pi Pico의 루트 디렉터리에 저장하면, Pico가 전원이 켜지거나 리셋될 때마다 자동으로 실행됩니다. 이는 전원 투입 후 즉시 실행되어야 하는 독립 실행형 응용 프로그램에 유용합니다. 만약 스크립트의 이름을 main.py 외의 다른 이름으로 지정하면, Thonny의 셸에서 수동으로 실행해야 합니다.

Raspberry Pi Pico 코드 - 문 열림 및 문 닫힘 이벤트 감지

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-door-sensor */ from machine import Pin import utime DOOR_SENSOR_PIN = 1 # The Raspberry Pi Pico pin connected to the door sensor (GP1) # Set up the door sensor pin with input pull-up mode door_sensor = Pin(DOOR_SENSOR_PIN, Pin.IN, Pin.PULL_UP) # Read the initial state of the door sensor door_state = door_sensor.value() prev_door_state = door_state # Initialize previous state to the current state while True: # Update the previous state prev_door_state = door_state # Read the new state of the door sensor door_state = door_sensor.value() # Check for state change from LOW to HIGH (door opening) if prev_door_state == 0 and door_state == 1: print("The door opening is detected") # Add actions here such as turning on an alarm, light, or sending a notification # Check for state change from HIGH to LOW (door closing) elif prev_door_state == 1 and door_state == 0: print("The door closing is detected") # Add actions here such as turning off an alarm, light, or sending a notification # Sleep for a short period to debounce the sensor utime.sleep(0.1)
  • 제공된 MicroPython 코드를 복사하여 Thonny의 편집기에 붙여넣으세요.
  • 코드를 Raspberry Pi Pico에 저장하세요.
  • 스크립트를 실행하려면 초록색 실행 버튼을 클릭하거나 F5를 누르세요.
  • 리드 스위치 근처에 자석을 대었다가 멀리 이동시키세요.
  • Thonny 하단의 Shell에서 메시지를 확인하세요.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The door closing is detected The door opening is detected
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

관련 튜토리얼