푸쉬스위치를 통해 라즈베리파이의 전원을 관리할 일이 생겼습니다.
라즈베리파이는 usb 전원을 상시로 연결해 놓고, 푸쉬스위치를 통해 on / off 하도록 파이썬으로 작성하였습니다.
참고 #1 : http://cafe.naver.com/raspigamer/7890
참고 #2 : https://github.com/gilyes/pi-shutdown
참고#1의 철들계획없음 님의 글에서는 푸쉬버튼으로 on/off/reset 및 LED제어까지 작업하셨으나,
저는 on/off만 필요하여 약간 코드를 수정하여 적용하여 보았습니다.
푸쉬스위치는 GPIO의 5번과 6번(GND)에 연결하였습니다.
제가 가진 푸쉬스위치에는 릴레이가 달려있어서, 버튼을 누르고 2초 정도 후에 푸쉬가 인식됩니다.
코드에서 shutdownSeconds는 2초로 잡아뒀기 때문에
켜져 있는 상태에서는 4초 정도 누르고 있으면 shotdown 을 수행합니다.
꺼져 있는 상태에서는 2초 정도 누르고 있으면 라즈베리파이가 가동합니다.
#!/usr/bin/python import RPi.GPIO as GPIO from subprocess import call from datetime import datetime import time btnPin = 5 shutdownSeconds = 2 GPIO.setmode(GPIO.BOARD) GPIO.setup(btnPin, GPIO.IN) prevInput = -1 pressTime = None def getPressTime(): elapsed = 0 if pressTime is not None: elapsed = (datetime.now() - pressTime).total_seconds() return elapsed while True: input = GPIO.input(btnPin) if input == 0: if prevInput == -1 or prevInput == 1: pressTime = datetime.now() elif prevInput == 0: if getPressTime() >= shutdownSeconds: call(['shutdown', '-h', 'now'], shell=False) break prevInput = input time.sleep(1)
Notice

핑백: EmulationStation 및 AttractMode 초기 설정 - Kimstar 3.0