Digitální střepiny


Drobnosti, které se někomu můžou hodit

Vlastní vyhledávání Googlem na stránkách cestuji.info

Google


Digitální střepiny - stránka zaměřená na drobné rady z oblasti výpočetní techniky


Raspberry Pi - podpora GPIO s nainstalovaným OpenELEC

Rozhodl jsem se vytvořit si malé multimediální centrum založené na Raspberry Pi 2 model B. Vyzkoušel jsem si tři distribuce, které obsahují Kodi (dříve XBMC). Byly to XBIAN, OpenELEC a OSMC. Nejvíce mi vyhovovala distribuce OpenELEC, protože rychle startuje.
Chtěl jsem si ještě doplnit vypínací tlačítko. Našel jsem na internetu návod, ale tam uváděná RPi.GPIO knihovna na mém Raspberry 2 nechtěla fungovat s chybovou hláškou, že je určena jenom pro Raspberry Pi (asi vadí verze 2).
Po dalším hledání jsem zjistil, že na konci února 2015 byla RPi.GPIO knihovna dopněna do neofifiálních doplňků pro OpenELEC. Tím pádem je situace jednoduchá.

Krok 1: nainstalovat do OpenELEC knihovnu neoficiálních doplňků
OpenElec6: Systém / Nastavení / Doplňky / Instalovat z repozitáře / OpenElec Add-ons (Official) / Zdroj doplňků a zde povolitt OpenElec Add-ons (Unofficial).

Návod s obrázky pro starší verze je zde: http://unofficial.addon.pro/, obrázky jsou trochu nelogicky dole na stránce pod prázdnou šedou plochou :). Návod je pro OpenELEC 4, ale v OpenELEC 5 je postup stejný. Uvidíte červené varování, že se jedná o Unofficial repository, tedy nabádají ke zvýšené opatrnosti.

Krok 2: povolit doplněk RPi.GPIO
Openelec 6: Systém / Nastavení / Doplňky / Instalovat z repozitáře / OpenElec Add-ons (Unofficial) / Doplňky programů a zde povolit RPi.GPIO.

Starší verze: V grafickém rozhraní OpenELEC se přesuňte do Systém / Dopňky / Získat dopňky, klikněte na volbu Unofficial OpenELEC (RPi2/arm) Add-ons, kterou jsme nainstalivali v kroku 1. Zde zvolte Doplňky knihoven a povolte RPi.GPIO.

Knihovna RPi.GPIO je nainstalována na cestu
/storage/.kodi/addons/python.RPi.GPIO/lib
, jak jsem se dozvěděl v OpenELEC fóru.

EDIT: pokud jste používali Openelec 5 a přecházíte na Openelec 6, obnovíte konfiguraci ze zálohy a doplněk RPi.GPIO se nezobrazí, zkuste aktualizovat neoficiální repozitář. Pokud je tlačítko pro aktualizaci zašedlé (toho jsem si všiml u verze 6.0.3), repozitář odinstalujte a znova nainstalujte.

A od tohoto okamžiku je možné začít programovat GPIO na Raspberry Pi. Nezapomeňte na začátku programu uvést cestu ke knihovně RPi.GPIO:
import sys
sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')


Pokud jste při instalaci OpenELEC nebo dodatečně povolili SSH, můžete se přihlásit pomocí SSH třeba programem putty.exe. Jméno je root, heslo openelec.
Příklad programu, který jsem použil:

#!/bin/sh
# shutdown script pro Raspberry Pi
# Hlida, zda se na GPIO17 objevi nizka uroven a pokud ano, 
# Raspberry se uspi.
# Na GPIO27 je mozno pres odpor pripojit LED diodu, ktera 
# zhasne v okamziku,
# kdy je zahajeno vypinani. 
# Je mozno ji nechat treba zablikat, jak jsem videl 
# v nekterych navodech na internetu,
# ale to jsem nedelal  

import sys
sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')

import RPi.GPIO as GPIO
import os
import time

# pouzijeme cislovini podle GPIO 
# (podle toho, jak to ma ocislovane Broadcom) 
GPIO.setmode(GPIO.BCM)

# nastavime GPIO27 jako vystup 
# a nastavime na nem logickou 1, dioda sviti
GPIO.setup(27, GPIO.OUT)
GPIO.output(27, True)

# nastavime GPIO17 jako vstup 
#a aktivujeme na nem pull up rezistor na 3.3V, 
# tedy lze pouzit tlacitko, 
# ktere spoji tento vstup se zemi bez 
# externich rezistoru
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# smycka, ktera kazde pul sekundy 
# kontroluje uroven napeti na GPIO17 a ceka 
# na nizkou uroven, v takovem pripade 
# zhasne LED na GPIO27 a Raspberry vypne.
while True:
    	if not (GPIO.input(17)):
                GPIO.output(27, False)
                os.system("shutdown -h now")
    	time.sleep(.5)



Tento kód jsem uložil na cestu /storage/downloads/ do souboru shutdown.py. Adresář downloads jsem si vytvořil.
POZOR na správné odstavce (počty mezer) na začátku posledních čtyřech řádků.

Zajistit automatické spouštění tohoto skriptu je možné v souboru /storage/.config/autostart.sh:
Tento soubor je možné vytvořit třeba přes SSH:
echo "#!/bin/sh" > /storage/.config/autostart.sh
(Nemusíte to do okna terminálu vypisovat ručně, stači to odtud zkopírovat pomocí CTRL+C a kliknout do okna SSH terminálu PRAVÝM tlačítkem myši).

Následně souboru přiřadíme právo spouštění:
chmod +x /storage/.config/autostart.sh

a otevřeme editor nano
nano /storage/.config/autostart.sh

a v něm napíšeme:
#!/bin/sh
(
 python /storage/downloads/shutdown.py & 
)&

Stáhnout autostart.sh a shutdown.py v zip archivu

Vypínací tlačítko Raspberry Pi
Nejjednodušší zapojení vypínacího tlačítka a LED diody s OpenELECmůže vypadat takto POZOR, po aktualizacích mi přestalo toto zapojení v Kodi 5.0.8 fungovat a co jsem testoval, nefunguje ani s Openelec 6.0.3:
Vypínací tlačítko Raspberry Pi s OpenELEC bez externích rezistorů
Toto jednoduché zapojení vypínacího tlačítka bez externích rezistorů předpokládá, že je softwarově aktivovaný rezistor (50 kiloohmů) uvnitř Raspberry Pi příkazem
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
tedy tak, jak je uvedeno v příkladu programu výše.


Po aktualizacích, které se mi nahrály do OpenElec 5.0.8 dne 19.11.2016, přestal příkaz pull_up_down=GPIO.PUD_UP fungovat, proto jsem musel doplnit externí rezistor mezi GPIO17 a 3.3V (hodnota není kritická, může to být třeba třeba 10 kiloohmů):
Vypínací tlačítko Raspberry Pi s OpenELEC s externím rezistorem
Výše uvedený skript není nutné upravovat.

Rezistor u LED diody bude mít velikost třeba 270 Ohmů, velikost můžete vyzkoušet, závisí na použité barvě LED diody a požadovaném jasu. Napětí na výstupu je 3.3V, maximální povolený proud z jednoho výstupu je 16 mA, tedy rezistor pro LED diodu můžete v případě potřeby zmenšit i na 100 ohmů. Některé modré a bílé LED diody nemusí svítit nebo budou svítit málo, protože pro plný jas potřebují napětí až 3.5V, které není k dispozici.

Technické parametry GPIO na Raspberry Pi jsou uvedeny například na této stránce: http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/gpio-pin-electrical-specifications



Poznámka: miniaturní multimediální centrum, kde jsem použil toto vypínací tlačítko, jsem zabudoval i s 2,5" HDD do plastové krabičky KP 76 M (Z112), lze ji zakoupit třeba na krabicky.cz. Výrobcem je firma http://www.maszczyk.pl. Nechápu, proč se u nás prodává pod označením KP 76 M, když originální označení vylisované na krabičce je Z-112. U výrobce je k dispozici jak dobře čitelný výkres, tak 3D IGS model http://www.maszczyk.pl/pl/offer/view/161/701/z-112.
Uvažoval jsem i o krabičce KP 11 (Z-1A), která je větší, díly by nebyly tak namačkané, ale nevyhovovalo mi rozmístění šroubků na uchycení HDD do víka. 3D IGS model + výkresy jsou opět u výrobce http://www.maszczyk.pl/pl/offer/view/37/88/obudowy-z-panelem-z-1a.

Fotky pro inspiraci a pár slov o konstrukci je zde: http://forum.zive.cz/viewtopic.php?style=2&f=920&t=1228635&st=0&sk=t&sd=a&start=53

Krabička KP 09 P, KP 09 P, ekvivalent je Z-2W, 3D IGS model a výkres je http://www.maszczyk.pl/pl/offer/view/37/91/obudowy-z-panelem-z-2w

Na začátek stránky
Zpět na Digitální střepiny

Spřátelené stránky: Konstrukční kancelář ACR, Katalog katalogů