Kemuning

[ Back ]

Saturday, January 09, 2021, 11:00

Tombol Power

[image] 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 tactile dan sebuah resistor 10KOhm. Yang saya cabut dari sebuah board display entah piranti apa. Tentu kabel secukupnya.

Tombol ini berjenis Normaly Open, koneksi terbuka saat tidak ditekan.

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


Berikut adalah skrip yang dimaksud. Disimpan sebagai /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)


Disini digunakan kanal PG07 seperti telah dijelaskan di posting sebelumnya. Berfungsi sebagai umpan balik saat tombol ditekan. Agar kita tahu bahwa informasi sudah sampai ke prosesor, ketika tombol ditekan.

Perulangan utama dijalankan untuk selalu menunggu perubahan yang terjadi pada kanal PG06. Ketika terdeteksi pertama kali tombol ditekan, maka akan dijalankan perintah /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.

Agar skrip ini dijalankan saat awal mesin menyala, maka ditambahkan di file /etc/rc.local.


#!/bin/sh -e
#
# rc.local
#

/usr/local/bin/blink_led.py
/usr/local/bin/button.py
exit 0


Selamat mencoba.

Comments:

No comments yet.

 
Your comment:
Name: E-mail or Homepage:  

login | Original script by Alex 2003