RPi 4: Thêm nút tắt/mở

EEPROM phiên bản 2020-05-15 đặt mặc định WAKE_ON_GPIO=1

Khi đó, sudo halt (shutdown) sẽ đưa RPi 4 vào trạng thái tiêu thụ điện ít nhất nhưng vẫn nhận biết một số thành phần trên board mạch, như GPIO.

Nối đất GPIO 3 (pin 5) sẽ khiến RPi khởi động (boot).

Nếu chúng ta dùng một nút bấm nối với GPIO 3 và GROUND để khởi động thì chúng ta cũng muốn dùng nút này để tắt máy.

Chúng ta tạo script /path/to/shutdown.py để làm việc này

#!/usr/bin/python
# shutdown.py
import time, subprocess
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
        GPIO.wait_for_edge(5, GPIO.FALLING)
        print("Power off detected")
        time.sleep(3)
        ret = GPIO.input(5)
        if ret == 0:
                print("Shutting down")
                subprocess.call("sudo shutdown -h now", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        else:
                print("Press 3 seconds to shutdown")

Đặt thuộc tính thực thi cho script

sudo chmod +x /path/to/shutdown.py

Cho crontab gọi script khi khởi động

crontab -e
@reboot /path/to/shutdown.py
  • Khi RPi đang chạy, bấm và giữ nút 3 giây để tắt máy
  • Khi RPi đang sleep, bấm nút để mở máy

Chú thích:

  1. EEPROM phiên bản trước 2020-05-15 đặt mặc định WAKE_ON_GPIO=0

Có thể đặt lại tham số cấu hình WAKE_ON_GPIO=1 (bài trước) hoặc cập nhật pi-eeprom

2. Khác với RPi 3, board mạch RPi 4 có EEPROM để thiết kế boot từ USB. Tuy nhiên ngay cả khi không cần boot từ USB, vẫn có thể dùng EEPROM cho mục đích khác như tạo nút khởi động, đặt ip tĩnh, …

Nút bấm và jack cắm
Nối và hàn
Cố định bằng keo silicone
Bọc màng co cho gọn đẹp
Lắp vào RPi, thêm miếng mút để bấm êm hơn

Comments Off on RPi 4: Thêm nút tắt/mở

Filed under Software

Comments are closed.