Sprzętowy przycisk do wyłączania Raspberry Pi

Sprzętowy przycisk do wyłączania Raspberry Pi

Na początkującego w świecie Raspberry Pi czeka wiele ciekawych projektów, które mimo że wydają się niewielkie, są bardzo ważne dla np. komfortu użytkowania tego komputera jednopłytkowego. W tym artykule omawiamy właśnie taki prosty projekt. Polega on na dodaniu fizycznego przycisku, który może zostać użyty do wyłączenia komputera. Tego rodzaju element ma wiele wartościowych zastosowań, więc przyda się nie tylko amatorom jako wprawka.

Komputery jednopłytkowe, takie jak Raspberry Pi, nie są na ogół wyposażone w przycisk zasilania, szczególnie taki, który pozwalałby na bezpieczne dla systemu operacyjnego wyłączanie systemu. Wiele osób, które dopiero co zaczęły korzystać z komputera jednopłytkowego wciąż szukać mogą przycisku zasilania. Rozwiązaniem jest odłączanie wtyczki microUSB lub zamontowanie na tej linii przełącznika. O ile pozwoli to wyłączyć minikomputer, to może doprowadzić do uszkodzenia karty SD czy systemu operacyjnego.

Poprawne wyłączanie Raspberry Pi

Komputer jednopłytkowy Raspberry Pi, jak każdy inny komputer, wymaga poprawnego zamknięcia systemu operacyjnego, przed odłączeniem od niego zasilania. Podczas tego procesu system operacyjny zamyka otwarte na karcie pamięci pliki, wyłącza uruchomione programy i procesy, aby na końcu zamknąć bezpiecznie samego siebie. Jeśli system nie przejdzie tej procedury, to pliki zapisane na karcie pamięci mogą ulec uszkodzeniu, co może doprowadzić do uszkodzenia samego systemu operacyjnego – przy kolejnym uruchomieniu powitać może nas Kernel Panic – krytyczny błąd jądra systemu spowodowany m.in. niemożnością wczytaniem jednego z plików systemowych.

Podczas poprawnej procedury wyłączania komputera Raspberry Pi musimy wydać systemowi odpowiednie polecenie, zanim odłączymy kabel zasilający. Jeśli korzystamy z interfejsu graficznego, naciskamy czerwony przycisk zasilania w prawej dolnej części menu. Z kolei w przypadku korzystania z linii komend (w systemie bez zainstalowanego systemu okien lub w przypadku zdalnego dostępu z pomocą SSH) wpisać musimy następujące polecenie:

sudo shutdown -h now

Spowoduje to poprawne wyłączenie systemu operacyjnego. Co jednak zrobić, gdy nie mamy dostępu do systemu, czy to fizycznie do klawiatury/myszki i monitora, czy poprzez SSH? Możemy stworzyć program, który będzie wydawał takie polecenie automatycznie.

Podłączanie przycisku

Rysunek 1. Opis funkcji poszczególnych pinów w 40-pinowym złączu rozszerzeń komputerów Raspberry Pi

Rysunek 2. Schemat podłączenia przycisku do komputera jednopłytkowego Raspberry Pi

W pierwszej kolejności musimy podłączyć do naszego komputera przycisk. Komputery z serii Raspberry Pi wyposażone są w 40-pinowe złącze, na którym wyprowadzone jest wiele użytecznych linii procesora, między innymi linie GPIO – cyfrowe linie wejścia/wyjścia ogólnego przeznaczenia. W naszym projekcie skorzystamy z tego rodzaju linii. Na rysunku 1 zaprezentowano opis funkcji poszczególnych pinów złącza rozszerzeń. Na pomarańczowo zaznaczono piny GPIO, jakie wykorzystać można w swoich projektach. Znaczna część z nich obsługuje także alternatywne funkcje, takie jak interfejsy komunikacyjne SPI czy I2C.

W naszym projekcie wykorzystamy linię GPIO18, która wyprowadzona jest na pinie 12 złącza rozszerzeń. Linia ta jest wygodna do wykorzystania, ponieważ zaraz obok niej znajduje się pin podłączony do masy (na 14 pinie złącza). Przycisk podłączmy tak, jak pokazano na diagramie na rysunku 2. Pin GPIO18 musi mieć skonfigurowane wewnętrzne podciągnięcie go do poziomu wysokiego. W ten sposób pin domyślnie znajdować będzie się w stanie wysokim, a po zwarciu z masą, w stanie niskim.

Skrypt obsługujący przycisk

Teraz musimy stworzyć skrypt, który obsługiwać będzie nasz przycisk i będzie wydawał systemowi, w momencie naciśnięcia przycisku, komendę wyłączającą komputer. Skrypt napisany zostanie w języku Python. Aby stworzyć skrypt i rozpocząć jego edycję w terminalu wpisujemy kolejno:

mkdir Scripts
cd Scripts
touch shutdown_pi.py
nano shutdown_pi.py

Spowoduje to utworzenie folderu Scripts, a w nim pustego pliku shutdown_pi.py, który następnie otworzymy w edytorze tekstowym nano. Teraz możemy wpisać do pliku skrypt. Treść pliku zaprezentowano na listingu 1. Teraz nie pozostało nam nic innego, jak uruchomić napisany skrypt. W terminalu wpisujemy zatem komendę:

sudo python shutdown_pi.py

Teraz, skrypt będzie działał w tle. W momencie naciśnięcia przycisku wyśle on do systemu komendę, która go wyłączy, a my będziemy mogli odłączyć prąd. Po ponownym podłączeniu zasilania komputer automatycznie uruchomi się. Musimy jeszcze sprawić, że napisany przez nas skrypt także automatycznie uruchomi się wraz ze startem systemu operacyjnego.

Dodanie skryptu do startupu

Aby skrypt uruchamiał się automatycznie przy każdym starcie systemu operacyjnego na Raspberry Pi musimy dodać odpowiednią komendę, która uruchomi go, do startupu, czyli zestawu komend, które uruchamiane są przy starcie systemu. W tym celu z pomocą programu nano edytujemy plik:

sudo nano /etc/rc.local

Komendę uruchamiającą skrypt dodać musimy w tym pliku w przedostatniej linii, która zamyka zawartą w pliku instrukcję warunkową (if). Dodajemy tam komendę:


sudo python /home/pi/Scripts/shutdown_pi.py &

Pamiętajmy o zachowaniu dużych i małych liter – system Linuks zwraca na to uwagę. Dodanie znaczka & na końcu linii sprawi, że skrypt uruchomiony zostanie w tle. Po dodaniu tego wpisu możemy zresetować komputer, co spowoduje automatyczne uruchomienie systemu. Teraz możemy wyłączyć Raspberry Pi przyciskiem w dowolnym momencie.

Nikodem Czechowski

http://bit.ly/31jL9o0

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2019
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio kwiecień 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje marzec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna marzec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich kwiecień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów