Table of Contents

Hardkernel ODROID-U3

Jednodeskový počítač podobný 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ů.

Protože navíc rozteč montážních děr v desce ODROID přímo nepasuje do rozteče děr na základní desce MLAB, tak byla navržena mechanická redukce tisknutelná na 3D tiskárně.

Připravený adaptér pro ODROID-U3 s vyjmutým odroidem.  Použití mechanického a elektronického adaptéru pro odroid v konstrukci MLAB.

Zdrojové soubory k oběma částem adaptéru jsou v MLAB svn repositáři. Tisková data jsou také na 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í:

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í I2C z ODROIDU na MLAB moduly je zobrazena na následující fotografii.

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 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í

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. 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 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) 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)