Udělejte si herní konzoli z Raspberry Pi s pomocí RetroPie

Dalším využitím mikropočítače Raspberry Pi může být retro herní konzole. Co budeme potřebovat:

  • Raspberry Pi (nejlépe verzi 3 nebo 4 kvůli výkonu)
  • Gamepady – třeba tyhle levné z Alíka
  • HDMI kabel pro připojení k TV

Použijeme software RetroPie, který obsahuje emulátory pro mnoho konzolí – NES, SNES, Sega, PlayStation, GameBoy, Nintendo 64 a mnoho dalších. Od těch opravdu retor jako je Atari až po PlayStation.

Pokud máte nové Raspberry, můžete si stáhnout přímo hotové image a nahrát jej na SD kartu. Já ale nechtěl přijít o svůj Raspbian, takže jsem se vydal cestou manuální instalace podle oficiálního návodu. Bacha, pro verzi Pi 4 musíte (zatím) použít trochu odlišný návod – soubory stáhnout přes Git, přepnout se na správnou větev a spustit instalaci – návod. Instalace trvá celkem dlouho.

V konfiguraci si budete moci zvolit, že má systém nabootovat rovnou do RetroPie. Případně, RetroPie (respektive hezký frontend EmulationStation) spustíte z konzole (klidně přes SSH) příkazem:

emulationstation

ROM soubory (hry) si můžete postahovat někde na internetu :) Stačí je pak nahrát (samozřejmě nejdřív rozbalit – a je jedno jestli tam nahrajete samotné soubory, nebo i nadřazenou složku) do příslušné složky např. u mě /home/pi/RetroPie/roms. Já je tam nahrávám přes Sambu, můžete ale zvolit i flashku – tady je oficiální návod.

Výběr konzole – pod ním se vždy ukáže počet dostupných her
No není to paráda? :)

Jak s pomocí OctoPrintu ovládat 3D tiskárnu

Při 3D tisku máte 3 možnosti:

  • Tisknout přímo z počítače – počítač musí být ale zapnutý, nesmí se uspat, nesmí spadnout program provádějící tisk atd.
  • Tisknout z SD karty – tiskárna pak pracuje samostatně, stačí jí k provozu jen elektřina.
  • Tisk z připojeného mikro počítače = serveru = Raspberry Pi – počítač běží nonstop, komunikuje s tiskárnou a my jej ovládáme buď přes lokální síť nebo vzdáleně.

Právě o poslední možnosti bude dnešní článek – použijeme Raspberry Pi (B+ .. na výkonu celkem záleží) a open-source aplikaci OctoPrint.

Instalace OctoPrintu

Doporučený způsob je stáhnout si image operačního systému OctoPi (upravený Raspbian), nahrát ho na SD kartu. Tím pádem máte vše připraveno.

Moc se mi ale nelíbí, že bych měl nahradit svůj vyladěný systém zcela novým a začínat odznovu. Pustil jsem se tedy do manuální instalace. Není složitá, její kroky jsou popsány v tomto návodu.

Jak to vypadá

OctoPrint ovládáme pomocí webového rozhraní:

  • Přímo na raspberry tedy skrz http://127.0.0.1:5000
  • Na lokální síti skrz http://raspberrypi:5000
  • Vzdáleně – trochu složitější, buď přes port-forwarding (ale s tím opatrně, nechcete aby vám někdo cizí ovládal tiskárnu), přes službu typu pitunnel.com nebo vzdálenou plochu – VNC – RealVNC je dostupné zdarma a přizpůsobené přesně pro Raspberry.
Program se připojí k tiskárně, nahrajete gcode soubor a spustíte tisk
Můžete sledovat proces tisku, ovládat hlavu, teplotu atd

Připojíme si kameru?

Vyhrabal jsem hodně starou webkameru s rozlišením 640×480. Nainstaloval jsem program fswebcam a světe div se, kamera fungovala i bez ovladačů. Můžete si ji nastavit v OctoPrintu a on vám pak bude sám dělat timelapse videa. Jedno takové (v opravdu ubohé kvalitě :)) jsem natočil i já.

Držák na kameru z Thinkdiverse
Noční 3D tisk – timelapse video vytvořené OctoPrintem

Jak připojit teploměr LM75 k Raspberry Pi

Už jsme si ukázali, jak měřit teplotu procesoru a nechat si posílat emailové notifikace při překročení teploty.

Nyní si ukážeme, jak k Raspberry připojit externí teploměr LM75A. Je to modul vyrobený přímo k připojení k Raspberry.

Hardware zapojení

Jednoduše ho zasuneme do Raspberry tímto stylem. I když v praxi budete chtít použít prodlužovací jumper kabely abyste neměřili teplotu hned u procesoru ale někde v místnosti.

Softwarové nastavení LM75

A budeme pokračovat softwarově. Nejprve si povolíme I2C rozhraní.

sudo raspi-config

Pak si nainstalujeme i2c tools:

sudo apt-get -y install i2c-tools 

A tímto šíleným příkazem si můžeme zobrazit teplotu:

i2cget -y 1 0x48 0x00 w |awk '{printf("%0.1f C\n",(a=((("0x"substr($1,5,2)substr($1,3,1))*0.0625)+0.1) )>128?a-256:a)}'

Inspiroval jsem se v tomto článku. Osobně jsem si tento příkaz dal do cronu, který mi aktuální teploty vypisuje do html stránky na webserver. Díky tomu (a díky port forwardingu) se můžu kdykoliv podívat, jakou teplotu mám na bytě.

Jak stahovat torrenty na Raspberry Pi

Pokud Raspberry používáte jako server, udělat si z něj torrentového klienta/server se přímo nabízí – je stále online a můžeme tedy stahovat dnem i nocí.

Instalace a konfigurace programu Transmission

Je to jednoduché, nainstalujeme si program Transmission. Vše budeme dělat přes konzoli, takže i pokud nemáte nainstalované desktopové prostředí a ovládáte Raspberry přes SSH, ničemu to nevadí.

sudo apt-get install transmission-daemon

Po instalaci se rovnou spustí jako služba. Dočasně ho vypneme příkazem:

sudo systemctl stop transmission-daemon

A začneme konfigurovat. Otevřeme si konfiguračí JSON soubor v oblíbeném editoru nano:

sudo nano /etc/transmission-daemon/settings.json

Uděláme pár změn:

  • Změníme položku “download-dir” tak aby byla v naší sdílené složce /home/pi/share.
  • Můžeme si změnit přihlašovací jméno a heslo – “rpc-username” a “rpc-password”. Po uložení souboru se heslo automaticky zahashuje.
  • “rpc-whitelist-enable” dáme na false – jsme na lokální síti, nebudeme omezovat přístup do našeho programu

Soubor uložíme kombinací Ctrl + X, pak Y. No a máme hotovo.

PS. Já osobně jsem si vytvořil ještě podsložku downloads, tedy /home/pi/share/downloads. A té jsem změnil práva tak, aby do ní mohl Transmission zapisovat. Práva jsem dal velkorysé, opět – jsme na lokální síti.

chmod 777 -R /home/pi/share/downloads

A co teď?

Nyní nám na Raspberry běží torrentový klient Transmission. Ovládat jej budeme přes webové rozhraní. Na počítači nebo na mobilu vyťukáme adresu našeho Raspberry v lokální síti:

http://raspberrypi:9091/transmission/

Vyplníme zvolené jméno a heslo a jsme tam. Torrent spustíte kliknutím na první tlačítko, zadáte jeho url a je to. Na obrázku vidíte jak naprosto legálně stahuji linuxovou distribuci. Co jste si mysleli??

Jak si udělat monitoring teploty na Raspberry Pi

Nechcete přece, aby vám začal Raspberry hořet, že?

V tomto článku si vytvoříme jednoduchý bashový skript, který budeme spouštět cronem a když teplota Raspberry překročí určitou mez, pošle nám o tom email. Je to spíš pro zajímavost, než že by to mělo reálný užitek :)

Odesílání emailů

Nejprve si nainstalujeme ssmtp abychom mohli odesílat emaily:

sudo apt-get install ssmtp
sudo apt-get install mailutils

Upravíme konfiguraci. Já například využívám UPC internet, takže mě stačí zadat jejich veřejný, zdarma dostupný SMTP server. Plus hostname, z toho budou emaily chodit. Tuto doménu si pak ve vašem emailu dáte na whitelist aby emaily z Pi nepadaly do spamu.

sudo nano /etc/ssmtp/ssmtp.conf
mailhub=smtp.dkm.cz
hostname=vase-domena.cz

Skript pro měření teploty procesoru

Založíme si soubor temperature.sh a jeho obsah bude následovný. Je to pečlivě vypiplaný kus skriptu, který jsem splácal metodou pokus omyl. Bash není má silná stránka.

#!/bin/bash

val=$(vcgencmd measure_temp | egrep -o '[0-9]*' | head   -1 |  bc -l)
max=60

if [ "$val" -gt "$max" ]; then
    echo "$val" | mail -s "RPI - Teplota" vas@email.cz
fi

Dáme mu práva na spouštění:

chmod +x temperature.sh

A můžeme otestovat (doporučuju snížit teplotu třeba na 30 kvůli testování):

sh temperature.sh

Pravidelná kontrola cronem

Budeme jej spouštět cronem každých 5 minut. Editaci cronu spustíme tímto příkazem:

crontab -e
*/5 * * * * sh /home/pi/temperature.sh

Tak a je to :)

Jak si udělat media server z Raspberry Pi

Dnes si ukážeme, jak si udělat media server ve vaší lokální síti. Použijeme k tomu Raspberry Pi a software MiniDLNA.

Instalaci Raspberry jsem popsal už v prvním článku ze série Raspberry.

Jak se k Raspberry připojit přes Sambu a nahrát si do ní soubory (třeba film) jsem popsal v druhém článku.

Nyní si ukážeme instalaci MiniDLNA serveru. Abychom mohli média z Raspberry sdílet v naší síti a přehrávat si je třeba na Xboxu, mobilu, notebooku nebo chytré televizi.

Instalace MiniDLNA

MiniDLNA je open source program využívající protokol UPnP. Jeho instalace je primitivní:

sudo apt-get update 
sudo apt-get upgrade 
sudo apt-get install minidlna

Konfigurace MiniDLNA

V minulém díle jsme si vytvořili v Raspberry složku /home/pi/share, kterou nyní využijeme jako zdroj médií. Otevřeme si konfigurační soubor:

Otevřeme si konfigurační soubor v editoru “nano”:

sudo nano /etc/minidlna.conf

A na konec souboru můžeme psát vlastní nastavení. Pozor dejte na řádek media_dir – to bude ta naše slavná sdílená složka.

inotify=yes
media_dir=/home/pi/share
merge_media_dirs=yes

Uložíme pomocí Ctrl+X a následně Y.

A jsme ready

MiniDLNA nastartujeme jako službu tímto příkazem.

sudo service minidlna start

Ještě se ujistíme aby se služba automaticky nastartovala při zapnutí Raspberry.

sudo update-rc.d minidlna defaults

Tak a je to. Nyní máme v lokální síti funkční media server, ke kterému můžeme přistupovat odkudkoli. Například pokud máme Xbox One nebo počítač s Windows 10, použijeme aplikaci Films & TV (Filmy a TV pořady). Přepneme se na “Servery médií” a uvidíme média na Raspberry.

Jak si udělat sdílené úložiště z Raspberry Pi

Dnes si ukážeme, jak si udělat sdílený disk ve vaší lokální síti. Použijeme k tomu Raspberry Pi a software Samba.

Připojení k Raspberry

Instalaci jsem popsal už v minulém článku.

Nastartujeme příkazovou řádku (cmd) a připojíme se příkazem:

ssh pi@raspberrypi

Instalace Samby

Použijeme Sambu – tím pádem budeme moci z Windows přistupovat do souborového sytému Raspberry.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install samba samba-common-bin

Konfigurace Samby

Vytvoříme si složku /home/pi/share, která bude sdílená.

mkdir /home/pi/share

Otevřeme si konfigurační soubor v editoru “nano”

sudo nano /etc/samba/smb.conf

A na konec souboru můžeme psát vlastní nastavení. Hlavně definici sdílené složky – její cestu, název atd.

[share]
path = /home/pi/share
writeable=Yes
create mask=0777
directory mask=0777
public=no

Uložíme pomocí Ctrl+X a následně Y.

Samba uživatel

Vytvoříme si Samba uživatele, pro jednoduchost ho nazveme pi (stejně jako defaultně vytvořený unixový uživatel na Raspberry). Zeptá se nás to na heslo tak si nějaké zvolíme.

sudo smbpasswd -a pi

Sambu restartujeme:

sudo service smbd restart

Jdeme se připojit

Nyní ve Windows průzkumníku zadáme cestu (a nebo se tam proklikáme přes Síť):

\\RASPBERRYPI\pi

Vyplníme uživatelské jméno, které jsme si vytvořili (pi) a zvolené heslo. A jsme tam, v domovské složce Raspberry (/home/pi/share).

Jak si udělat webový server z Raspberry Pi

Raspberry je malinký počítač, který můžete využít ke spoustě věcí. My si ukážeme, jak si na něm postavit vlastní webový server. Nebude mít žádné grafické rozhraní, ovládat ho budeme jako správní nerdové přes příkazovou řádku.

Moje krásné Raspberry Pi 3B+ v krabičce z 3D tiskárny

Instalace Raspbianu

Pokud už Raspbian (speciálně upravená verze Linuxu) nainstalovaný máme, zkontrolujeme jen, že máme povolené SSH. Pokud ne tak:

  • Stáhneme si Raspbian Lite a rozbalíme ho. Získáme tím .img soubor.
  • Dále si stáhneme Win32 Disk Imager a stažený .img soubor “vypálíme” na Micro SD kartu.
  • Na kartě vzniknou dva oddíly a na tom s názvem “boot” vytvoříme prázdný textový soubor (bez přípony) s názvem “ssh”. Tím povolíme SSH připojení.
  • Kartu můžete vyndat z počítače a vložit do Raspberry, které už máme připojené ethernetovým kabelem k síti (ke stejné jako jsme my na velkém počítači) a do elektriky.

Připojení k Raspberry

Nastartujeme příkazovou řádku (cmd) a připojíme se příkazem:

ssh pi@raspberrypi

Výchozí heslo je “raspberry”. Předpokládám, že máte novou verzi Windows 10, které mají integrovaného ssh klienta, jinak použijte třeba Putty. A jsme tam!

Instalace Apache

Jako webový server použijeme Apache2 – nehynoucí klasiku. Trojicí příkazů systém zaktualizujeme a nainstalujeme Apache:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2

A máme v podstatě hotovo!

Testujeme

Nyní se z našeho velkého počítače podíváme, jestli webový server běží. Přejdeme na adresu http://raspberrypi/ a pokud vidíme tohle, tak jo!

Několik tipů na závěr

Obsah defaultní stránky webserveru upravíme (v jednoduchém editoru nano) příkazem:

sudo nano /var/www/html/index.html 

Editor zavřete (a uložíte změny) stisknutím kombinace Ctrl + X a pak Y.

Pokud bychom chtěli mít webserver dostupný i z venkovního internetu, je to taky celkem jednoduché, ale pozor na bezpečnost. V podstatě musíte na routeru nastavit “port forwarding”, čili budete otevírat určité porty (v našem případě port 80) venkovnímu internetu. Nastavení se liší u každého routeru. Pak budete moci k Raspberry přistupovat odkudkoli, pokud budete znát IP svého routeru. Případně si na něj můžete nasměrovat doménu.

Doporučuji si změnit výchozí heslo. Můžete tak udělat pomocí utilitky:

sudo raspi-config

Bezpečnost webového serveru je široké téma. Doporučuji nainstalovat fail2ban.