Raspberry Pi 4:
Zapínání, vypínání a reset jedním tlačítkem
(včetně signalizace stavu pomocí jedné LED)




Proti předchozím verzím umožňuje Raspberry Pi 4 vypnutí do stavu s velmi malým proudovým odběrem (jednotky mA).
Slouží k tomu pin Global_EN. Po přepnutí tohoto pinu do stavu "LOW" se vypne napájení procesoru.
Nastavením "HIGH" (5V, nebo odpojením vstupu) se zdroj pro procesor zapne.

Vedlejší pin s označením RUN slouží jako signalizace "POWER GOOD". V tomto popisu ale nebude použit.

 





V následujícím článku popíšu vypínání a zapínání RPi4 pomocí jednoho tlačítka, které je připojené přes ATtiny85.
Krátkým stiskem se provádí korektní ukončení systému, dlouhým stiskem se provádí jeho opětovné spuštění, nebo "trvdý" reset.
V popisovaném zapojení je ještě jedna informační LED.

Tato LED signalizuje různé fáze běhu RPi:
 - Když je RPi v úsporném režimu (vypnuté napájení procesoru), je LED zhasnutá.
 - Při náběhu systému, nebo při jeho ukončování LED bliká pomalu.
 - Když RPi naběhne do stavu, kdy je možné se k němu připojit přes SSH, zabliká rychle.
 - Při normálním běhu RPi LED svítí.

Zapojení využívá ještě tři GPIO piny na RPi:

GPIO14 je přepnutý do HIGH stavu od okamžiku zapnutí napájení až do ukončení systému (během startu se na pár sekund přepne do LOW, ale pak se zase vrátí do HIGH).
Vycházel jsem z tohoto článku, kde byl pin použit pro signalizaci korektně ukončeného systému. K pinu byla připojena LED a když zhasla, mohlo se vypnout napájení.

Druhý pin (v příkladech je použitý GPIO25) po zapnutí napájení začíná ve stavu LOW a po náběhu systému signalizuje několika impulzy dostupnost internetu. Pak se přepne do HIGH kde setrvá až do ukončení systému.

Poslední pin (GPIO7) je z pohledu RPi vstup. RPi ho 1x za sekundu testuje a když se na něm objeví alespoň na 2 sekundy stav LOW, zahájí se korektní ukončování systému.
 


Schéma


Software

ATtiny85

Zdroják  přeložený HEX
rpi4_onoff_tiny.ino rpi4_onoff_tiny.hex

Po naprogramování ATtiny je nutné přenastavit FUSE:

  LFuse = 0xE2
  HFuse = 0x5F
  EFuse = 0xFF

Je to z toho důvodu, že se pro signalizační LED používá pin PB5, který běžně funguje jako RESET.
Po přenastavení FUSE se ale zablokuje možnost nahrát do procesoru jiný program.
Odblokování je pak možné například pomocí "vysokonapěťového" resetu FUSE (popisuji zde).

Raspberry Pi

Zdroják skriptu
on_off.py


Zprovoznění:

Po přihlášení k RPi se založí složka "/home/pi/skripty" (pokud ještě není založená)


V této složce se vytvoří soubor "on_off.py" (buď ručně přes "nano /home/pi/skripty/on_off.py" ,
nebo přímým downloadem z mého webu):


Pak je třeba zajistit, aby se tento skript spustil hned po startu systému.
Jeden ze způsobů je editace souboru "/etc/rc.local":


Před poslední řádku "exit 0" doplnit příkaz:







Podle článku, ze kterého jsem čerpal informace o signalizaci vypnutého RPi, je nutné ještě povolit UART v konfiguračním souboru:  


... doplněním řádky:


Já jsem to ale měl už v defaultním nastavení zapnuté.

Po resetu a propojení s ATtiny už by to mělo začít fungovat.



Ukázkové video

Popis videa:
 - Po zapnutí napájení pomalu bliká signalizační info LED (systém v RPi nabíhá).
 - Když systém naběhne do stavu, kdy je dostupný internet, LED krátce rychle zabliká.
        (pokud by nebyl internet dostupný ani do 20 sekund od spuštění systému, k rychlému zablikání nedojde.)
 - Normálně běžící RPi je signalizováno trvalým svitem info LED (odběr RPi je asi 500mA).
 - Po krátkém stisku tlačítka se začne systém vypínat (pomalé blikání).
 - Po ukončení systému (před automatickým vypnutím napájení) ještě LED blikání trochu zrychlí.
 - Po vypnutí napájení LED zhasne (odběr RPi se sníží na jednotky mA - měřák na videu ukazuje 0mA).
 - Dlouhý stisk tlačítka RPi znova nastartuje.
 - ....
 -  Krátký stisk tlačítka RPi vypne.

Na testovacím plošňáku je vidět i signalizace průběžných logických úrovní na pinech GPIO7, Global_EN a GPIO14.
Na RPi se dá rozeznat i blikání zelené ACT LED při spouštění a vypínání systému.
ATtiny je stále pod napětím 5V, ale když se vypne napájení pro RPi, přepne se ATtiny do SLEEP režimu s minimálním odběrem.



 


úvodní strana webu AstroMiK.org

poslední úprava stránky 16.5.2020