W Internecie znaleźć można dużą ilość projektów dedykowanych dla Raspberry Pi - od bardzo prostych dla początkujących do niezmiernie skomplikowanych, dla osób ze sporym doświadczeniem. Poniżej opisany zostanie projekt, który jest relatywnie prosty, jednakże dosyć zaskakujący i przydatny - chodzi tutaj o fizyczny przycisk, jaki umieścić można np. na obudowie komputera, który pozwoli na bezpieczne zamknięcie systemu i wyłączenie komputera.
W Raspberry Pi nie ma przycisku włączającego i wyłączającego komputer - uruchamia się on od razu po podaniu mu zasilania. O ile włączanie nie jest problemem, to wyłączanie już tak - proste odcięcie go od zasilania, o ile jest skuteczne to jest także niebezpieczne dla systemu - spowodować może uszkodzenie systemu plików i w konsekwencji nawet reinstalację systemu operacyjnego. Nie jest to także zbyt 'zdrowe' dla karty pamięci w komputerze, która jest dosyć awaryjnym jego elementem.
W poniższym tutorialu krok po kroku opisano co trzeba zrobić, aby możliwe było bezpieczne wyłączanie systemu, bez konieczności korzystania z np. myszki czy klawiatury. Jest to idealne rozwiązanie dla systemów pracujących bez monitora etc jako np. serwery czy zdalne sensory itp.
Co jest potrzebne
* Oczywiście Raspberry Pi, autor wykorzystał model B+
* Przycisk monostabilny (np. microswitch)
* Dwa kabelki
* Lutownica
Układ zrealizować można także np. na płytce stykowej lub w inny sposób łącząc przycisk z pinami GPIO 'Maliny', więc lutownica okazać się może zbędna. Jeśli jednak chcemy przycisk lutować przydadzą się też szczypce itp.
Dokładny model wykorzystanego komputera jest tutaj bez większego znaczenia, podobnie jak rodzaj wykorzystanego przycisku. Ma on za zadanie zewrzeć pin komputera i nic więcej, więc możemy użyć dowolny mechaniczny przycisk, jaki nam się podoba.
Konfiguracja Raspberry Pi
Na początku musimy oczywiście zainstalować na RPi system operacyjny, jeśli jeszcze go nie mamy. Domyślnym systemem operacyjnym na ten komputer jest Raspbian OS. Instalujemy go na 'Malinie' w najnowszej wersji, bądź też - jeśli już mamy go zainstalowanego - aktualizujemy do najnowszej wersji, zanim przejdziemy do dalszych kroków. Jeśli nie wiecie jak zainstalować Raspbiana, to pomoc znaleźć można na forum, lub pod poniższymi linkami:
https://embeddedcode.wordpress.com/2013/07/10/the-geek-getting-started-guide-to-the-raspberry-pi/
https://www.raspberrypi.org/help/noobs-setup/
https://www.raspberrypi.org/help/quick-start-guide/
Następnie podłączamy do komputera mysz, klawiaturę i monitor i włączamy go do zasilania. Już po chwili będziemy mogli się zalogować. Następnie wyłączamy komputer i przechodzimy do kolejnego kroku.
Montaż przycisku
Teraz podłączamy do komputera przycisk. Autor połączył do z kabelkami na płytce prototypowej i następnie podłączył je do wyprowadzeń komputera. Gdzie je podłączyć? Spójrzmy na poniższy obrazek, który objaśnia gdzie znajdują się które wyprowadzenia GPIO.
Niektóre z pinów GPIO mają dodatkowe funkcje, takie jak interfejsy UART, I²C czy SPI. Tych pinów nie chcemy używać, ponieważ można dla nich znaleźć lepsze i ciekawsze zastosowania. W swojej konstrukcji autor wykorzystał pin oznaczony GPIO18, głównie dlatego, że znajduje się on blisko pinu masy i pomogło to w elegancki sposób poprowadzić kable od przycisku. Drugi kabel, jak można się domyślić, podłączany jest do masy. Dzięki temu w momencie zwarcia (naciśnięcia przycisku) pin GPIO18 zwarty zostaje do masy.
Pisanie skryptu w Pythonie
Aby nasz przycisk działał jak chcemy musimy go odpowiednio oprogramować. W tym celu wykorzystamy Pythona, który jest językiem niezmiernie popularnym, szczególnie na platformie Raspberry Pi.
Aby w systemie był porządek w pierwszej kolejności tworzymy katalog Scripts a w nim pusty plik o nazwie shutdown_pi.py. Aby wykonać te czynności wpisujemy w konsoli:
Następnie musimy edytować zawartość pliku z skryptem, w tym celu skorzystamy z wbudowanego edytora nano, ale wykorzystać można dowolny inny (np. vim). W konsoli wpisujemy:
W pliku piszemy następujący skrypt:
Zapisujemy skrypt do pliku i wychodzimy z edytora.
Pisząc skrypt w Pythonie warto zwrócić uwagę, że w języku tym nie wykorzystuje się żadnego rodzaju nawiasów (jak np. {} w C itp) do ograniczania bloków kodu - tutaj tą rolę pełnią wcięcia (cztery spacje). Pilnujmy tej konwencji, jeśli chcemy aby program działał poprawnie.
Teraz, musimy tylko uruchomić skrypt, aby działa w tle i czekał na naciśnięcie przycisku. Jako że skrypt ma mieć niskopoziomowy dostęp do sprzętu konieczne jest uruchomienie go z prawami roota, w tym celu korzystamy z komendy sudo. Wpisujemy w konsoli, będąc w katalogu z plikiem komendę:
W tym momencie, jeśli naciśniemy przycisk komputer powinien w bezpieczny sposób wyłączyć się. Jeśli tak się nie dzieje, warto sprawdzić poprawność skryptu oraz podłączenia przycisku do komputera.
Automatyczne uruchamianie skryptu
Po ponownym włączeniu komputera skrypt nie będzie działał. Musimy sprawić jednak aby automatycznie uruchamiał się przy każdym uruchomieniu Raspberry Pi. W tym celu w konsoli wpisujemy:
W ten sposób edytować możemy plik w którym zawarte są wszystkie komendy, jakie automatycznie uruchamiają się podczas startu Raspbiana. W ostatniej linii dodajemy znaną nam komendę:
Warto zwrócić uwagę, że system rozróżnia duże i małe litery, więc trzeba uważać. Znak & na końcu linii informuje system, że skrypt ten ma działać w tle - nie będziemy w ogóle widzieć, że został uruchomiony.
Teraz możemy zrestartować nasz komputer. Po kolejnym ponownym uruchomieniu skrypt będzie już uruchomiony automatycznie i w tle. Teraz możemy wprowadzać dodatkowe modyfikacje do skryptu. Możemy skonfigurować komputer tak, że przed wyłączeniem będzie on wysyłał komendy po sieci lub realizował inne czynności.
Dalsze kroki
Teraz pozostaje nam tylko poprawa ergonomii układu. Przycisk na płytce prototypowej nie jest najlepszym rozwiązaniem; można przykleić go gdzieś odrobiną kleju na gorąco, lub zastosować inne rozwiązanie, aby działał on wygodniej.
Finalnie - jeśli macie dostęp do np. drukarki 3D - możecie zaprojektować i wyprodukować własną, dedykowaną obudowę do Raspberry Pi, w której znajdzie się także miejsce na przycisk do bezpiecznego wyłączania komputera.
Źródło: https://www.element14.com/community/docs/DOC-78055/l/adding-a-shutdown-button-to-the-raspberry-pi-b#jive_content_id_Step_3_Writing_a_Python_Script
W Raspberry Pi nie ma przycisku włączającego i wyłączającego komputer - uruchamia się on od razu po podaniu mu zasilania. O ile włączanie nie jest problemem, to wyłączanie już tak - proste odcięcie go od zasilania, o ile jest skuteczne to jest także niebezpieczne dla systemu - spowodować może uszkodzenie systemu plików i w konsekwencji nawet reinstalację systemu operacyjnego. Nie jest to także zbyt 'zdrowe' dla karty pamięci w komputerze, która jest dosyć awaryjnym jego elementem.
W poniższym tutorialu krok po kroku opisano co trzeba zrobić, aby możliwe było bezpieczne wyłączanie systemu, bez konieczności korzystania z np. myszki czy klawiatury. Jest to idealne rozwiązanie dla systemów pracujących bez monitora etc jako np. serwery czy zdalne sensory itp.
Co jest potrzebne
* Oczywiście Raspberry Pi, autor wykorzystał model B+
* Przycisk monostabilny (np. microswitch)
* Dwa kabelki
* Lutownica
Układ zrealizować można także np. na płytce stykowej lub w inny sposób łącząc przycisk z pinami GPIO 'Maliny', więc lutownica okazać się może zbędna. Jeśli jednak chcemy przycisk lutować przydadzą się też szczypce itp.
Dokładny model wykorzystanego komputera jest tutaj bez większego znaczenia, podobnie jak rodzaj wykorzystanego przycisku. Ma on za zadanie zewrzeć pin komputera i nic więcej, więc możemy użyć dowolny mechaniczny przycisk, jaki nam się podoba.
Konfiguracja Raspberry Pi
Na początku musimy oczywiście zainstalować na RPi system operacyjny, jeśli jeszcze go nie mamy. Domyślnym systemem operacyjnym na ten komputer jest Raspbian OS. Instalujemy go na 'Malinie' w najnowszej wersji, bądź też - jeśli już mamy go zainstalowanego - aktualizujemy do najnowszej wersji, zanim przejdziemy do dalszych kroków. Jeśli nie wiecie jak zainstalować Raspbiana, to pomoc znaleźć można na forum, lub pod poniższymi linkami:
https://embeddedcode.wordpress.com/2013/07/10/the-geek-getting-started-guide-to-the-raspberry-pi/
https://www.raspberrypi.org/help/noobs-setup/
https://www.raspberrypi.org/help/quick-start-guide/
Następnie podłączamy do komputera mysz, klawiaturę i monitor i włączamy go do zasilania. Już po chwili będziemy mogli się zalogować. Następnie wyłączamy komputer i przechodzimy do kolejnego kroku.
Montaż przycisku
Teraz podłączamy do komputera przycisk. Autor połączył do z kabelkami na płytce prototypowej i następnie podłączył je do wyprowadzeń komputera. Gdzie je podłączyć? Spójrzmy na poniższy obrazek, który objaśnia gdzie znajdują się które wyprowadzenia GPIO.
Niektóre z pinów GPIO mają dodatkowe funkcje, takie jak interfejsy UART, I²C czy SPI. Tych pinów nie chcemy używać, ponieważ można dla nich znaleźć lepsze i ciekawsze zastosowania. W swojej konstrukcji autor wykorzystał pin oznaczony GPIO18, głównie dlatego, że znajduje się on blisko pinu masy i pomogło to w elegancki sposób poprowadzić kable od przycisku. Drugi kabel, jak można się domyślić, podłączany jest do masy. Dzięki temu w momencie zwarcia (naciśnięcia przycisku) pin GPIO18 zwarty zostaje do masy.
Pisanie skryptu w Pythonie
Aby nasz przycisk działał jak chcemy musimy go odpowiednio oprogramować. W tym celu wykorzystamy Pythona, który jest językiem niezmiernie popularnym, szczególnie na platformie Raspberry Pi.
Aby w systemie był porządek w pierwszej kolejności tworzymy katalog Scripts a w nim pusty plik o nazwie shutdown_pi.py. Aby wykonać te czynności wpisujemy w konsoli:
Kod: Bash
Następnie musimy edytować zawartość pliku z skryptem, w tym celu skorzystamy z wbudowanego edytora nano, ale wykorzystać można dowolny inny (np. vim). W konsoli wpisujemy:
Kod: Bash
W pliku piszemy następujący skrypt:
Kod: Python
Zapisujemy skrypt do pliku i wychodzimy z edytora.
Pisząc skrypt w Pythonie warto zwrócić uwagę, że w języku tym nie wykorzystuje się żadnego rodzaju nawiasów (jak np. {} w C itp) do ograniczania bloków kodu - tutaj tą rolę pełnią wcięcia (cztery spacje). Pilnujmy tej konwencji, jeśli chcemy aby program działał poprawnie.
Teraz, musimy tylko uruchomić skrypt, aby działa w tle i czekał na naciśnięcie przycisku. Jako że skrypt ma mieć niskopoziomowy dostęp do sprzętu konieczne jest uruchomienie go z prawami roota, w tym celu korzystamy z komendy sudo. Wpisujemy w konsoli, będąc w katalogu z plikiem komendę:
Kod: Bash
W tym momencie, jeśli naciśniemy przycisk komputer powinien w bezpieczny sposób wyłączyć się. Jeśli tak się nie dzieje, warto sprawdzić poprawność skryptu oraz podłączenia przycisku do komputera.
Automatyczne uruchamianie skryptu
Po ponownym włączeniu komputera skrypt nie będzie działał. Musimy sprawić jednak aby automatycznie uruchamiał się przy każdym uruchomieniu Raspberry Pi. W tym celu w konsoli wpisujemy:
Kod: Bash
W ten sposób edytować możemy plik w którym zawarte są wszystkie komendy, jakie automatycznie uruchamiają się podczas startu Raspbiana. W ostatniej linii dodajemy znaną nam komendę:
Kod: Bash
Warto zwrócić uwagę, że system rozróżnia duże i małe litery, więc trzeba uważać. Znak & na końcu linii informuje system, że skrypt ten ma działać w tle - nie będziemy w ogóle widzieć, że został uruchomiony.
Teraz możemy zrestartować nasz komputer. Po kolejnym ponownym uruchomieniu skrypt będzie już uruchomiony automatycznie i w tle. Teraz możemy wprowadzać dodatkowe modyfikacje do skryptu. Możemy skonfigurować komputer tak, że przed wyłączeniem będzie on wysyłał komendy po sieci lub realizował inne czynności.
Dalsze kroki
Teraz pozostaje nam tylko poprawa ergonomii układu. Przycisk na płytce prototypowej nie jest najlepszym rozwiązaniem; można przykleić go gdzieś odrobiną kleju na gorąco, lub zastosować inne rozwiązanie, aby działał on wygodniej.
Finalnie - jeśli macie dostęp do np. drukarki 3D - możecie zaprojektować i wyprodukować własną, dedykowaną obudowę do Raspberry Pi, w której znajdzie się także miejsce na przycisk do bezpiecznego wyłączania komputera.
Źródło: https://www.element14.com/community/docs/DOC-78055/l/adding-a-shutdown-button-to-the-raspberry-pi-b#jive_content_id_Step_3_Writing_a_Python_Script
Kod: text
Fajne? Ranking DIY
