pátek 3. července 2020

GAMEPI20 s Raspbbery Pi OS Lite

Raspbbery Pi Zero mě dlouhodobě fascinuje. Je to malinkatý počítač s ohromujícím výkonem (vzhledem k rozměrům). Běží na tom Linux a dá se v tom programovat i v relativně pomalém, ale pohodlném Pythonu. Má to HDMI výstup a USB vstup a tak lze s trochou masochismu spustit i jako desktopový počítač s grafickým rozhraním. Jde to, ale dře to, protože má jen jedno jádro a 512 MB ram, použitelné to není. Ale při nastartování do textového rozhraní, s programy jako Vim, Midnight Commander a spol je RPi Zero vskutku velmi dobře použitelné.


Vyrábí se několik variant, ta nejlevnější stojí jen 150 Kč, ta s WiFi stojí 300 Kč. Má to malinkatou spotřebu, v idle režimu cca 0,3 W, při maximální zátěži sotva dosahuje 1 W. Spotřeba připojené klávesnice a myši může být větší, než samotného počítače. Také to má GPIO, což je takový ježek se spoustou binárních a analogových vstupů a výstupů a dlaších počítačových rozhraní a sběrnic jako SPI, I2C a podobně, takže k tomu jde připojit řada senzorů, displejů a tak podobně. Nádherná hračka to je.

Dlouhodobě mě láká z toho udělat něco použitelného, ale naráželo to u mě na jeden problém. A to vhodná krabička, která by všechy ty tlačítka, displeje a tak zapouzdřila. A tady přichází chvíle GAMEPI20.

GAMEPI20

Někoho napadlo z Raspberry Pi Zero udělat herní handheld pro hraní retro her. A tak dal do kupy pár tlačítek, displej, akumulátor a nabíjecí obvody a hlavně, celé to hezky zapouzdřil. Dá se to koupit po součástkách i celé složené a dá se to naládovat dvěma speciálními herními OS. Buď Retropie nebo RecalBox. Tohle všechno mě naprosto nezajímá, já v tom vidím něco jiného. Konečně je dostupné RPi Zero s displejem, ovládacími prvky, napájením a to celé v použitelném pouzdru. To všechno dohromady za 1500 Kč včetně RPi Zero, SD karty a akumulátoru. Není to žádný zázrak, ale funguje to.

To je cesta pro mě, jak si konečně z RPi Zero mohu udělat prakticky použitelné zařízení. Už dlouho si plánuji udělat programovatelný MIDI kontroler. Je to k nevíře, ale nic takového není na trhu k dispozici. A to co k dispozici je, je dost omezené a strašně drahé. Ano, hudebníci nejsou programátoři, a ty konfigurační klikátka nic neumí. Naprostá většina MIDI kontrolerů neumí poslat ani uživatelsky nastavenou SysEx zprávu na jednoduchý trigger, natož za nějakých konfigurvatelných podmínek. Takovéhle krabičky dělá jako jeden z mála MIDI Solutions, ale úplně obyčejný merger, který nedělá nic jiného, než že čte data ze dvou zařízení a posílá je sloučené na třetí stojí 2000 Kč. Jejich Event Procesor, který umí filtrovat zprávy, dělat nějaké základní transformace nebo poslat jednoduché příkazy stojí už 3500 Kč a neumí merge. Pokud potřebujete obojí, nezbude než koupit dvě krabičky. Na splitter další a na delay taky. To všechno mi přitom dokáže obstarat jedno RPi Zero. Mohu k němu připojit zařízení s MIDI komunikací přes USB i DIN, kde mám možnost buď použít USB/MIDI kabel, který bude zvyšovat latenci a nebo mohu DIN připojit přes optočleny na GPIO.

Abych mohl GAMEPI20 takto využít, potřeboval jsem na něj dostat standardní operační systém Raspbian Pi OS a rozchodit na něm hardwarovou nástavbu GAMEPI20. Nikde na to není žádný návod, tak jsem se nad tím trochu zapotil, ale podařilo se.

Instalace a konfigurace Raspbian Pi OS na GAMEPI20

Instalace Raspbian Pi OS

  • Instalace je jednoduchá a standardní ve světě RPi. 
  • Ideálně na novou kvalitní SD kartu nahrát poslední image Raspberry Pi OS Lite.
  • Na kartu ho nahrajeme pomocí Raspberry Pi Imager.
  • Rozmontujeme GAMEPI20, vyměníme v něm SD kartu a zase ho složíme.
  • Hotovo

Konfigurace OS

  • Připojíme k PIGAME20 monitor přes mini HDMI konektor a klávesnici. Na to je vcelku užitečný tento usb hub, který má vstupní micro usb konektor a také poskytuje ethernet rozhraní.
  • Připojíme napájení a už to stratuje. 
  • Přihlásíme se jako uživatel 'pi' s heslem 'raspberry'
  • Kdo chce, nastaví autologin přes utilitu raspi-config
  • Kdo nechce, změní si tamtéž defaultní heslo
  • Zaktualizujeme systém příkazy 
    • sudo apt update
    • sudo apt full-upgrade (může trvat desítky minut)
  • Dále v raspi-config nastavíme
    • rozhraní SSH na ON
    • rozhraní SPI na ON
    • klávesnici na CZ kdo chce
    • WiFi kdo chce
  • Font v konzoli příkazem sudo dpkg-reconfigure console setup (utf-8, Guess..., TerminusBold, 8x16)
  • Hotovo

Instalace software

Pomocí příkazu sudo apt install xyz doporučuji doinstalovat balíčky:
  • mc
  • vim
  • fbi
  • python3-pip
  • python3-rpi.gpio
  • python3-pygame

Konfigurace displeje 2" 320x240 na GAMEPI20

Displej jsem si nakonfiguroval jako nezávislý na HDMI, tj na připojeném monitoru mohu mít jiný obraz, než na displeji na GAMEPI20. Nevýhodou tohoto řešení je, že grafika na displeji není akcelerovaná. Pro mé potřeby, kdy displej má jen informativní účel to nevadí. Alternativní řešení je nastavit HDMI na velikost displeje a propojit framebufery HDMI a displeje. Na HDMI je grafika akcelerovaná, tam se vypočítá a pak se kopíruje do framebufferu displeje. Nevýhodou je, že si uživatel na monitoru dost drasticky omezí rozlišení.

Do /etc/modules doplnit 3 řádky:
  • spi-bcm2835
  • flexfb
  • fbtt_device 
Do /etc/modprobe.d/fbtft.conf doplnit 2 řádky:
  • options fbtft_device name=flexfb gpios=reset:27,dc:25,cs:8,led:24 speed=96000000 bgr=1 fps=60 custom=1 height=240 width=320
  • options flexfb setaddrwin=0 width=320 height=240 init=-1,0x11,-2,120,-1,0x36,0xA0,-1,0x3A,0x05,-1,0x21,-1,0x2A,0x00,0x01,0x00,0x3F,-1,0x2B,0x00,0x00,0x00,0xEF,-1,0xB2,0x0C,0x0C,0x00,0x33,0x33,-1,0xB7,0x35,-1,0xBB,0x1F,-1,0xC0,0x2C,-1,0xC2,0x01,-1,0xC3,0x12,-1,0xC4,0x20,-1,0xC6,0x0F,-1,0xD0,0xA4,0xA1,-1,0xE0,0xD0,0x08,0x11,0x08,0x0C,0x15,0x39,0x33,0x50,0x36,0x13,0x14,0x29,0x2D,-1,0xE1,0xD0,0x08,0x10,0x08,0x06,0x06,0x39,0x44,0x51,0x0B,0x16,0x14,0x2F,0x31,-1,0x29,-3
A restartovat RPIGAME20 příkazem sudo reboot.
Po nastartování by měl existovat nový soubor /dev/fb1. Pokud neexistuje, něco je špatně. Napovědět by mohl příkaz dmesg.

Funkčnost displeje vyzkoušíme příkazem:
sudo fbi -noverbose -T 1 -a -d /dev/fb1 testovaci-obrazek.jpg

Třeba tento je pěkný a na GAMEPI20 vypadá hezky:



Hotovo

P. S. Po povolení SSH a připojení k ethernetu nebo konfiguraci WiFi je možno se k RPI přihlásit z jiného počítače přes ssh příkazem ssh -l pi <ip adresa GAMEPI20>. Z jiného počítače se bude snadněji kopírovat obsah fbtft.conf.

Žádné komentáře:

Okomentovat