[ Back ]
Saturday, January 09, 2021, 11:00
Tombol Power
Tombol power adalah salah satu fitur yang seharusnya ada dalam setiap piranti. Sayangnya tombol ini tidak tersedia pada mesin Kemuning. Untuk itu perlu disediakan cara agar bisa mematikan piranti tanpa cara paksa. Dengan mencabut asupan tenaga dari port micro usb.
Hanya diperlukan 2 komponen yaitu tombol
Tombol ini berjenis
Menggunakan kanal PG06 atau pin nomor 8 di header GPIO. Pin ini ditarik ke tegangan 3V3 lewat sebuah resistor 10KOhm. Saat tombol ditekan, kanal PG06 ini akan ditarik ke tegangan 0V.
Piranti lunak dibuat dengan skrip Python. Menggunakan library OPi.
Saya menggunakan Python v3, maka untuk menginstall library ini digunakan perintah,
# pip3 install --upgrade OPi.GPIO
/usr/local/bin/button.py
.
#!/usr/bin/env python3
import OPi.GPIO as GPIO # to install "pip3 install --upgrade OPi.GPIO"
import time
import subprocess
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
#Select GPIO pin to be used
InputPin = 8 #UART1_TX/PG06
LedOnPin = 10 #UART1_RX/PG07
GPIO.setup(InputPin, GPIO.IN)
GPIO.setup(LedOnPin, GPIO.OUT)
GPIO.output(LedOnPin, 1)
while True:
GPIO.wait_for_edge(InputPin, GPIO.FALLING)
GPIO.output(LedOnPin, 0)
print ("*** Shutdown sequence activated ***")
subprocess.call("/sbin/shutdown -h +1", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
GPIO.output(LedOnPin, 1)
time.sleep(2)
GPIO.wait_for_edge(InputPin, GPIO.FALLING)
GPIO.output(LedOnPin, 0)
print ("*** Shutdown sequence canceled ***")
subprocess.call("/sbin/shutdown -c", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
GPIO.output(LedOnPin, 1)
/sbin/shutdown -h +1
. Yaitu perintah untuk melakukan proses shutdown satu menit setelah tombol ditekan. Bila dalam waktu sebelum satu menit itu tombol ditekan lagi, maka proses shutdown akan dibatalkan dengan perintah /sbin/shutdown -c
./etc/rc.local
.
#!/bin/sh -e
#
# rc.local
#
/usr/local/bin/blink_led.py
/usr/local/bin/button.py
exit 0
Comments:
No comments yet.