====== Hardkernel ODROID-U3 ======
{{ :cs:modules:arm:odroid-u3.jpg?direct&300 |}}
Jednodeskový počítač podobný [[cs:odroid-x2]]. Na rozdíl od něj se však ještě vyrábí a prodává. Na konektorech je vyvedeno I²C, SPI, UART a dva IO porty. Které jsou ale bohužel vyvedeny na nekompatibilní hřebínky s metrickou roztečí 2mm. Tento problém je vyřešen destičkou plošného spoje, která slouží jako elektrický MLAB adaptér. Navíc lze touto deskou i obejít napájení přes problematický válcový konektor, který byl zrojem výpadků.
{{ :cs:modules:arm:u3rev05boarddetail.jpg?direct&700 |}}
Protože navíc rozteč montážních děr v desce ODROID přímo nepasuje do rozteče děr na [[cs:base1621|základní desce MLAB]], tak byla navržena mechanická redukce tisknutelná na 3D tiskárně.
{{:cs:modules:arm:odroid:odroidu3_mlab_adapter_without_odroid.jpg?300|Připravený adaptér pro ODROID-U3 s vyjmutým odroidem.}} {{:cs:modules:arm:odroidu3_mlab_adapter.jpg?350| Použití mechanického a elektronického adaptéru pro odroid v konstrukci MLAB.}}
Zdrojové soubory k oběma částem adaptéru jsou v [[http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FARM%2FODROID-U3%2FCAD%2F#_Modules_ARM_ODROID-U3_CAD_|MLAB svn repositáři]]. Tisková data jsou také na [[http://www.thingiverse.com/thing:688467|Thingiverse]].
===== I²C na odroid-U3 =====
ODROID má 8mi pinový konektor, na kterém jsou vyvedeny GPIO piny. Použitý konektor má na rozdíl od MLAB standardů metrickou rozteč pinů 2mm. Navíc je od výroby osazen dutinkovou lištou, která je naletována ze spodní strany PCB. Pro použití ve stavebnici MLAB je potřeba tuto lištu vyletovat a nahradit ji hřebínkovým konektorem s příslušnou roztečí vyvedeným nahoru od desky. Vyletovaná dutinková lišta se v takovém případě použije jako protikus na který budou naletovány kablíky zakončené standardními MLAB dutinkami.
Po naletování kablíků na dutinkovou lištu je vhodné je zafixovat tavným lepidlem. Rozložení pinů na 8mi pinovém konektoru ODROIDU-U3 je následující:
{{ :cs:modules:arm:u3_connectors.png?600 |}}
PORT #1
^ PIN ^ Signal ^ Note ^
| 1 | GPIO 199 | I2C SCL 1.8V !|
| 2 | 1.8V | |
| 3 | GPIO 200 | I2C SDA 1.8V ! |
| 4 | UART RX | 1.8V ! |
| 5 | GPIO 204 | 1.8V ! |
| 6 | UART TX | 1.8V ! |
| 7 | GND | |
| 8 | 5V | |
Výsledná realizace připojení [[cs:i2c|I2C]] z ODROIDU na MLAB moduly je zobrazena na následující fotografii.
{{:cs:modules:arm:odroidu3_mlab_i2c_connection.jpg?300|Připojení I²C na odroid-U3}}
Na této desce je I²C na IO portech softwarově emulováno driverem v kernelu. Proto při samotném zavedení ovladače i2c-dev neuvidíme port i2c-4, který právě přísluší 8mipinovému konektoru na desce.
odroid@odroid:~$ sudo modprobe i2c-dev
odroid@odroid:~$ sudo i2cdetect -l
i2c-0 i2c s3c2410-i2c I2C adapter
i2c-1 i2c s3c2410-i2c I2C adapter
i2c-2 i2c i2c-gpio2 I2C adapter
i2c-3 i2c s3c2410-i2c I2C adapter
i2c-7 i2c s3c2410-i2c I2C adapter
i2c-8 i2c s3c2410-i2c I2C adapter
odroid@odroid:~$
Pro přístup k němu je potřeba ještě do jádra zavést modul i2c_gpio_custom, který softwarově začne emulovat I2C na GPIO pinech. To uděláme pomocí příkazu:
sudo modprobe i2c_gpio_custom bus0=4,200,199
kde parametry jsou číslo sběrnice, a čísla IO pinů, které budou použity pro vyvedení SDA(200) a SCL(199). Následně již můžeme přistupovat k rozhraní i2c-4.
odroid@odroid:~$ sudo i2cdetect -l
i2c-0 i2c s3c2410-i2c I2C adapter
i2c-1 i2c s3c2410-i2c I2C adapter
i2c-2 i2c i2c-gpio2 I2C adapter
i2c-3 i2c s3c2410-i2c I2C adapter
i2c-4 i2c i2c-gpio4 I2C adapter
i2c-7 i2c s3c2410-i2c I2C adapter
i2c-8 i2c s3c2410-i2c I2C adapter
odroid@odroid:~$
Další použití I²C se již neliší od [[cs:i2c|standardního přístupu v linuxu.]]
Pokud chceme I2C poustet automaticky, upravime /etc/modules .
i2c_gpio_custom bus0=4,200,199
i2c-dev
==== Pymlab ====
python setuptools jsou v baliku pro ARM aktualne poskozeny proto pri pokusu o instalaci pomoci
$ sudo python setup.py develop
Obdrzime chybovou hlasku: ImportError: No module named pkg_resources
Řešením je nainstalovat novou verzi setuptools mimo repozitáře ubuntu tímto příkazem z účtu roota:
curl https://bootstrap.pypa.io/ez_setup.py | python
===== SPI rozhraní =====
[[http://cs.wikipedia.org/wiki/Serial_Peripheral_Interface|SPI]] je vyvedeno na GPIO konektoru 2 a to na následujících pinech.
PORT #2
^ PIN ^ Signal ^ Note ^
| 1 | SCLK | GPB[4]|
| 2 | nSS | GPB[5]|
| 3 | MOSI | GPB[7]|
| 4 | MISO | GPB[6]|
Pro použití rozhraní je ale potřeba do jádra zavést ovladače pro SPI periférii.
sudo modprobe spi-s3c64xx
sudo modprobe spidev
Po zavedení těchto modulů by mělo vzniknout nové systémové zařízení /dev/spidev1.0. Toto rozhraní lze pak použít pro přímé ovládání připojených zařízení například Python skripty. [[http://tightdev.net/SpiDev_Doc.pdf|Návod k používání pythonu pro ovládání SPI]].
===== Spuštění aplikací po nabootování =====
Pro některé aplikace tohoto typu počítače je potřeba aby po jeho zapnutí se automaticky spustila zvolená grafická aplikace. V tomto případě budeme předpokládat použití základní instalace Lubuntu s display managerem lightdm a grafickým prostředím openbox.
Grafické prostředí je zvoleno posledním prostředím ze kterého se dotyčný uživatel odhlásil před spuštěním.
V tomto případě jde o použití počítače k automatickému přehrávání videa po startu.
==== Automatické přihlášení do grafického prostředí ====
Po nabootování musí dojít k automatickému přihlášení uživatele pod kterým bude spuštěná aplikace běžet. K tomu musíme vytvořit nový konfigurační soubor ///etc/lightdm/lightdm.conf.d/lightdm.conf// Obsah tohoto souboru pak bude například:
[SeatDefaults]
autologin-user=odroid
autologin-user-timeout=0
Podrobnější vysvětlení možností nastavení jsou popsány na [[https://wiki.ubuntu.com/LightDM|Ubuntu wiki]]. Následně pak potřebujeme zajistit, aby pod tímto uživatelem byly spuštěny potřebné aplikace.To se zařídí vytvořením dalšího konfiguračního souboru (/usr/share/xsessions/video.desktop) [[https://wiki.ubuntu.com/CustomXSession|podle návodu]]. Jeho obsah je například následující:
[Desktop Entry]
Name=Video
Comment=Log in using the Openbox window manager and play videos from Videos folder.
Exec=/etc/X11/Xsession
Tento soubor zajistí spuštění skriptu //.xsession// z domovského adresáře uživatele, který se přihlásí do grafického prostředí. Ten může vypadat například takto:
#!/usr/bin/env bash
mplayer --fs --loop=0 ~/Videos/* &
lxterminal &
exec openbox-session
V tomto případě bude spuštěno okno terminálu //lxterminal//. A následně video přehrávač //mplayer// přehrávající všechna videa v adresáři //Videos// v domovské složce.
Nezapomeňte skriptu //.xsession// nastavit práva pro spouštění (chmod +x ~/.xsession)