Spisu treści:
- Krok 1: Projekt
- Krok 2: Jak to działa
- Krok 3: Budowa prototypu demonstracyjnego
- Krok 4: Programowanie ATTiny85
Wideo: Zbuduj lepszy przycisk zasilania Raspberry Pi: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Bardzo łatwo jest zrobić przycisk wyłączania lub wyłączania Raspberry. W Internecie jest wiele takich projektów, a kilka tutaj w Instructables, ale żaden z nich (który widzę) nie powie ci, kiedy Twoje Pi faktycznie się wyłączyło, a zatem można bezpiecznie wyciągnąć zasilanie. W rzeczywistości nawet nie przyznają, że naciśnięcie przycisku było widziane.
Istnieją również projekty ponownego uruchomienia Pi, które zostało zamknięte, ale nie dają one żadnej wizualnej informacji zwrotnej.
Ale kto potrzebuje takiego przycisku? Jeśli jesteś trochę frajerem jak ja, a nawet początkującym nerdem, zawsze możesz zalogować się do swojego Pi lokalnie lub przez sieć i wpisać sudo shutdown -h teraz. Ale jeśli tworzysz projekt dla nietechnicznych użytkowników, to po prostu nie wystarczy. To prawda, że prawie zawsze możesz uciec, po prostu ciągnąc za przewód zasilający, ale pamiętaj, że prawie zawsze mówiłem! Wszystkim prędzej czy później kończy się szczęście. Miałem przy sobie kartę SD tylko w zeszłym tygodniu, chociaż nigdy się nie dowiem, czy to naprawdę z powodu nagłej utraty zasilania.
W moim przypadku musiałem dodać przycisk zasilania do Pi, którego używamy jako sekwencer midi do nagrywania i odtwarzania hymnów i piosenek w kościele, gdy nie mamy dostępnego żywego pianisty. Zawsze mogę wpisać polecenie wyłączenia, ale muszę go oduczyć, gdy mnie tam nie ma.
Moim zamiarem tutaj nie jest danie Ci gotowego produktu, wraz z pięknie wydrukowanym w 3D etui, jak wiele innych Instruktażów. Każdy będzie miał dla niego inny użytek lub będzie chciał włączyć go do własnego projektu. Raczej skonfiguruję ci technologię, którą możesz dodać do swojego projektu, niezależnie od tego, czy będzie to centrum multimedialne, urządzenie IoT, czy cokolwiek innego.
(Na filmie demonstruję to z Pi Zero v1.2 i monitorem, który zrobiłem z przerobionego ekranu laptopa i kontrolera z Dalekiego Wschodu.)
Krok 1: Projekt
Oto, co zrobi dla ciebie mój przycisk zasilania:
- Gdy Pi działa, dioda LED świeci się w sposób ciągły. Jeśli zostanie wyłączony ręcznie, dioda LED zgaśnie tylko wtedy, gdy można bezpiecznie odłączyć zasilanie.
- Podczas pracy, jeśli naciśniesz przycisk przez co najmniej sekundę, zostanie zainicjowane wyłączenie, a dioda LED będzie migać przez ćwierć sekundy co sekundę, aż będzie można bezpiecznie odłączyć zasilanie.
- Od stanu wyłączenia (jeśli zasilanie nie zostało odłączone), naciśnięcie przycisku uruchamia jego uruchamianie i miga diodę LED przez ćwierć sekundy co sekundę, aż do uruchomienia. (Może potrwać trochę dłużej, zanim wszystkie usługi, takie jak ssh i vnc, zostaną uruchomione).
Komponenty są bardzo tanie. Wszystko czego potrzebujesz to:
- ATTiny85 (chip kompatybilny z Arduino)
- 3 oporniki: 2 x 330Ω i 1 x 10kΩ
- 1 LED - proponuję zielony lub niebieski, ale to Twój wybór
- Płytka stykowa i przewody połączeniowe lub stripboard, lub jakkolwiek chcesz to zbudować.
Krok 2: Jak to działa
Podobnie jak w przypadku wszystkich przycisków zasilania Pi, ten przełącza pin GPIO do stanu niskiego, aby zasygnalizować żądanie wyłączenia programu pomocniczego działającego na Pi. Użyłem GPIO4 (pin 7) ale możesz użyć dowolnego innego pinu.
Jedynym sposobem na stwierdzenie, że Pi zakończyło zamknięcie, jest obserwacja pinu 8 TxD, który następnie spada. Zależy to od włączonej konsoli szeregowej, którą jest domyślnie. W rzeczywistości TxD będzie regularnie wznosić się i opadać, gdy jest używany jako konsola szeregowa, ale nigdy nie spadnie o więcej niż około 30 ms na raz, nawet przy najwolniejszej wspólnej szybkości transmisji. Nadal może być używany do konsoli szeregowej, ponieważ po prostu pasywnie go oglądamy.
Aby zrestartować, musimy na chwilę wyciągnąć SCL1 (pin 5) w dół. Ten pin jest używany przez dowolne urządzenia I2C (w tym mój interfejs midi), ale po zainicjowaniu bootowania zostawiamy go w spokoju.
Większość złożoności znajduje się w szkicu Arduino, który ładujemy do ATTiny85. Wprowadza to "maszynę stanów" - bardzo użyteczny i potężny sposób kodowania każdego problemu, który może być reprezentowany przez kilka "stanów". Pralka działa w ten sam sposób. Stany reprezentują etapy cyklu zmywania, a każdy z nich określa, co maszyna powinna robić w danym momencie (silniki lub pompy, które mają zostać uruchomione, zawory, które należy otworzyć lub zamknąć) oraz jakie wejścia czujników (temperatura, poziom wody, zegary) określić, kiedy przejść do następnego stanu i który następny stan wybrać.
Szkic dłoni jest moim pierwszym szkicem diagramu stanów, pokazującym wszystkie przejścia stanów. To jest tylko po to, aby pokazać, jak możesz wstępnie zaplanować swoje stany i przejścia między stanami - może to nie być całkowicie dokładne, jak to było przed rozpoczęciem debugowania.
W naszym przypadku mamy 6 stanów, które nazwałem OFF, BOOT REQUEST, BOOTING, RUNNING, SHUTDOWN REQUEST i SHUTTING DOWN. (Po WYŁĄCZENIU przełącza się z powrotem na WYŁ.) Są one identyfikowane przez komentarze w szkicu, a dla każdego kolejne komentarze mówią, co powinien robić i jakie zdarzenia przeniosą go do innego stanu.
Program pomocniczy działający na Pi jest nieco bardziej skomplikowany niż w przypadku większości przycisków zamykania. Reaguje na długi niski impuls na pinie GPIO, inicjując wyłączenie, ale sam reaguje również na krótki impuls, przez krótki czas obniżając pin GPIO. W ten sposób ATTiny85 może stwierdzić, że jest uruchomiony, a więc może przejść ze stanu URUCHAMIANIA do stanu PRACY.
Krok 3: Budowa prototypu demonstracyjnego
W celach demonstracyjnych możesz wykonać prototyp na płytce stykowej bez lutowania, jak pokazano, ale dałem ci również schemat, dzięki czemu możesz opracować własny układ za pomocą stripboardu lub niestandardowej płytki drukowanej, być może część szerszego projektu.
Krok 4: Programowanie ATTiny85
Do tego kroku dołączony jest szkic Arduino i program pomocniczy. W folderze szkiców Arduino utwórz folder o nazwie PiPwr i skopiuj do niego plik PiPwr.ino. Uruchamiając Arduino IDE, znajdziesz je teraz w swoim szkicowniku.
Istnieje kilka sposobów programowania ATTiny85. Jeśli masz zainstalowany bootloader, możesz użyć płytki rozwojowej ATTiny85 kosztującej tylko kilka funtów. To łączy się z komputerem przez port USB. Użyłem Hidiota, który jest zasadniczo taki sam, ale z obszarem prototypowania.
W Arduino IDE w menu Plik - Preferencje dodaj
digistump.com/package_digistump_index.json
do adresów URL menedżera tablic dodatkowych.
W menu Narzędzia - Tablica powinieneś teraz zobaczyć kilka opcji Digispark. Wybierz Digispark (domyślnie - 16,5 MHz).
Jeśli twój ATTiny85 nie ma bootloadera (lub nie wiesz), możesz dostać programator AVR ISP za kilka funtów. Lub możesz użyć Arduino Uno lub tańszego Pro Mini lub Nano jako programatora. Google dla "arduino as isp attiny85" (bez cudzysłowów) dla instrukcji.
Jeśli chcesz zmodyfikować szkic, znajdziesz go w pełni skomentowany i, miejmy nadzieję, łatwy do naśladowania. Do debugowania znacznie łatwiej jest użyć Arduino Pro Mini lub Nano. Odkomentuj serial.begin() w Instalatorze i instrukcje print w loop(), aby zobaczyć kroki, przez które przechodzi przy użyciu monitora szeregowego. W źródle znajdują się alternatywne definicje pinów, zakomentowane, dla Uno, Pro Mini lub Nano.
Na swoim Raspberry Pi skopiuj plik shutdown_helper.py do folderu /etc/local/bin i ustaw go jako wykonywalny za pomocą polecenia
sudo chmod +x /usr/local/bin/shutdown_helper.py
Teraz edytuj plik /etc/rc.local swoim ulubionym edytorem. (Musisz to zrobić jako root.) Przed ostatnią linią (exit 0) wstaw linię
nohup /usr/local/bin/shutdown_helper.py &
Uruchom ponownie, a program pomocniczy uruchomi się automatycznie.
Zalecana:
Dodaj przycisk zasilania do instalacji LibreELEC na Raspberry Pi: 6 kroków
Dodaj przycisk zasilania do instalacji LibreELEC na Raspberry Pi: Poniżej dowiemy się, jak dodać przycisk zasilania do LibreELEC działającego na Raspberry Pi. Użyjemy PowerBlock, aby nie tylko dodać przycisk zasilania, ale także diodę LED stanu, która wskazuje stan zasilania twojej instalacji LibreELEC
Przycisk zasilania Raspberry Pi: 3 kroki
Przycisk zasilania Raspberry Pi: Jeśli jesteś podobny do mnie, być może przeszukiwałeś Internet w poszukiwaniu najlepszego rozwiązania, aby bezpiecznie włączać i wyłączać Raspberry Pi jednym naciśnięciem przycisku. Chociaż istnieje wiele rozwiązań, większość z nich wymaga pobrania skryptu Pythona i sprawienia, aby
Dotykowy przycisk zasilania dla Raspberry Pi: 3 kroki
Dotykowy przycisk zasilania dla Raspberry Pi: Odkąd wydrukowałem i zacząłem używać tego etui do mojego Retropie, zawsze wyobrażałem sobie, jak zrobić przycisk zasilania. Pomysł polegał na zmianie projektu, aby zrobić przycisk przenoszenia, a następnie przesunąć przełącznik. W końcu wpadłem na inny pomysł, w którym nie musiałem zmieniać obudowy
Przycisk zasilania Super Ghetto na moim Oneplus One (powinien działać na wszystkim): 3 kroki
Przycisk zasilania Super Ghetto na moim Oneplus One (powinien działać na wszystkim): Problem: Wszystkie przyciski w moim telefonie są zepsute. Wymiana ich jest tylko tymczasowym rozwiązaniem, ponieważ moja tylna pokrywa jest zepsuta i nigdzie nie mogę znaleźć zamiennika, który nie przekracza ceny używanego OPO, ale pomyślałem, dlaczego nie uaktualnić, jeśli
Zewnętrzny przycisk zasilania do ESC: 3 kroki (ze zdjęciami)
Zewnętrzny przycisk zasilania do ESC: Buduję elektryczną deskorolkę i muszę dodać zewnętrzny przełącznik do mojego ESC, aby móc umieścić całą moją elektronikę w tej samej obudowie. Lista części: -Pushbutton-wires-shrinktube (opcjonalnie)-hotglue (opcjonalnie)-ESC (banggood: https://goo.gl/4n8kzB)