Projekt Operačního programu Praha – Adaptabilita
Mezinárodní spolupráce při rozvoji magisterského a doktorského programu na ČVUT-FEL v Praze číslo projektu: CZ.2.17/3.1.00/36036
Odborný výstup ze zahraniční stáže na: Pukyong National University (Jižní Korea) 8. 7. 2014 - 9. 9. 2014
Jakub Staněk student studijního programu KME – Mgr.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond
1
VLC dveřní zámek Jakub STANĚK Katedra telekomunikační techniky, České vysoké učení technické, Technická 2, 166 27 Praha
[email protected]
Abstrakt. V zahraničí se často vyskytují zámky
světla
dveří, které se odemykají zadáním číselného
šestnáctibitového klíče. Po jeho ověření na
kódu, který ale lze lehce odpozorovat. Pro
přijímací straně komunikačního řetězce je možné
přenos kódu lze využít LED mobilního telefonu.
dané zařízení identifikovat.
Tím dosáhneme nejen lepšího zabezpečení, ale i rychlejšího a pohodlnějšího odemykání.
jsem
v této
práci
využil
k přenosu
V Korejské republice je velmi rozšířené zabezpečení
dveří
pomocí
číselného
kódu
(klíče). U takového systému je v blízkosti dveří
Klíčová slova
instalováno
zařízení
kterého
klíč
je
s číselníkem,
vložen.
To
pomocí
s sebou
nese
Visible light communication (VLC), dveřní
bezpečností
zámek, Android, Diferenční pulzně polohová
odpozorování klíče při jeho zadávání. Přenos
modulace (DPPM)
klíče
rizika,
pomocí
především
mobilního
snadnost
telefonu
je
tedy
bezpečnější, ale může být i pohodlnější a
1.
rychlejší.
Úvod Visible light communication (VLC) je způsob
komunikace pomocí viditelného světla o vlnové délce přibližně mezi 380 a 780 nm.
Největší
výhodou je bezpečnost – prostor, ve kterém je informace
přenášena, je
okem viditelný a
Ke komunikaci touto metodou lze využít zařízení, které nosíme stále u sebe – mobilní telefon. Vetšina moderních mobilních telefonů má
také
jednu
Diferenční pulzně polohová
modulace Diferenční (DPPM)
je
komunikaci.
omezený neprůsvitnými překážkami.
s fotoaparátem
1.1
či
více
přisvětlovacích LED. Tohoto zdroje viditelného
interferencím systémy
pulzně
polohová
modulace
běžně
využívána
v optické
Z důvodu
náchylnosti
k vnějším
je
její
nevhodné.
použití Na
mimo
rozdíl
od
optické pulzně
polohové modulace (PPM) nepotřebuje zdroj hodinového taktu. Rozdíl mezi jednotlivými stavy je dán rozdílnou dobou mezi jednotlivými pulzy.
J. STANĚK, VLC DVEŘNÍ ZÁMEK
2
Z toho plyne jedna z vlastností této modulace –
v oddílu
(partition)
doba přenosu určitého počtu bitů je závislá na
standardně uživatel nemá oprávnění zápisu. Ten
jejich hodnotě.
je
získán
„System“,
procesem
do
kterého
nazývaným
root.
Oprávněním zápisu do tohoto oddílu uživatel získává větší kontrolu na svým zařízením,
Mobilní aplikace
2.
protože může měnit systémové soubory a
Naprogramoval jsem aplikaci pro mobilní zařízení
s operačním
Android,
nebo směrnicí řečeno jinak (jako např. směrnicí
kamerou a přisvětlovací LED. Aplikace využívá
Evropského parlamentu a Rady 1999/44/ES),
DPPM, ve které dibit 00 trvá dvojnásobek
končí po tomto zákroku uživateli na výrobek
měnitelného času, dibit 01 trvá čtyřnásobek, dibit
záruční lhůta. Tento proces také nemusí být
10
natolik jednoduchý, aby ho zvládl běžný uživatel.
trvá
systémem
hodnoty souborů kernelu. Pokud není zákonem
sedminásobek
a
dibit
11
trvá
desetinásobek zmíněného času. Poměr těchto časů jsem zvolil experimentálně, jako kompromis mezi dobou přenosu celého klíče a schopností
Příjem a ověření klíče
4.
jednotlivé symboly rozeznat na přijímací straně.
Na vstupu přijímacího řetězce je fotodioda
Úspěšnost demodulace signálu přijímačem je
TSL252R připojená k Arduino Uno. To je open-
závislá na přesnosti časování při modulaci
source deska založená na mikrokontroleru AVR
aplikací.
ATmega328
Nejlepších
výsledků
jsem
dosáhl
použitím třídy Handler.
od
firmy
Atmel.
K indikaci
úspěšného ověření vyslaného klíče je k Arduinu připojena RGB LED.
Potlačení viditelného blikání
3.
Uživatelé
by
mohli
mít
nedůvěru
v bezpečnost používání naší aplikace, pokud by se přenos klíče projevoval viditelným blikáním. Pokud
bylo
k ovládání
LED
použito
API
operačního systému Android, jednotlivé stavy nesměly být kratší než 20 ms, aby byly správně identifikovány na přijímací straně. Tato doba je příliš dlouhá na to, aby blikání, způsobené rozsvěcením a zhasínáním LED, nebylo okem viditelné.
Nyní popíšu program, který jsem napsal pro běh na mikrokontroleru. Po připojení desky s Arduinem
k napájení
proběhne
základní
nastavení požadovaných vlastností, vstupů a výstupů. Nejprve jsou určeny výstupní piny s připojenou RGB LED. Tyto piny jsou pouze dva, protože je připojena pouze červená a zelená
LED.
Poté
je
nastaven
prescaler
analogově digitálního převodníku (ADC) na hodnotu 128. To znamená, že při frekvenci mikrokontroleru 16 MHz bude frekvence cyklů ADC 16 MHz/128 = 125 kHz. Jeden převod
Změna stavu LED je také možná zápisem
analogové hodnoty na digitální trvá 13 cyklů.
do speciálního souboru kernelu. Problémem
Z toho vyplývá, že každý převod ADC trvá
tohoto přístupu je fakt, že se soubor nachází
3
104 µs.
ADC
je
potřeba
k získání
úrovně
osvětlení z fotodiody.
k době pulzu. Pokud je doba za pulzem kratší než průměr, je rozdíl mezi průměrnou hodnotou
V dalším kroku je výsledná hodnota z ADC
a dobou odečten od doby pulzu.
zarovnána z původních 10 bitů na 8 bitů, aby se
Po rozpoznání začátku vysílání, tj. kdy
nám jednodušeji četla. To si můžeme dovolit,
výsledná hodnota z ADC překročí definovanou
poněvadž nepotřebujeme vysokou přesnost –
hranici, se spustí dva časovače. Oba mají
stačí nám rozlišit stav zapnuté a vypnuté LED.
nastaven prescaler na hodnotu 256 a běží tedy
Důležitou součástí kódu je zapnutí interruptů a
se stejnou periodou 16 µs. Osmibitový registr
jejich použití. Poté je po každém převodu
prvního časovače, který měří doby mezi pulzy, je
analogově
aktivován
příliš malý na to, aby uchoval dobu větší než
interrupt kód. Díky tomu se vyhodnocování
255*16 µs = 4080 µs. Proto je implementován
úrovně osvětlení provádí pouze, když je třeba –
interrupt po jeho přetečení, který zaznamená
po získání nové hodnoty z ADC.
uloženou hodnotu před její ztrátou. Druhý
digitálního
Z popisu
převodníku
diferenční
pulzně
polohové
modulace plyne, že k demodulaci vyslaného signálu potřebujeme měřit dobu mezi pulzy nebo dobu jednotlivých pulzů. Zvolil jsem druhou variantu, aby doba, po kterou je LED rozsvícená, byla delší než doba, po kterou je zhaslá. Díky
priorit
a
plánování
procesů
v operačním systému Android nepočítá s během aplikací v reálném čase. Z tohoto důvodu je dosažení přesnosti ovládání LED v jednotkách milisekund velmi obtížné. Proto jsem vytvořil algoritmus pro alespoň částečnou kompenzaci takto
vzniklých
nepřesností
při
pulzů. Po jeho přetečení je aktivován interrupt kód, který signalizuje, že bylo přijato méně bitů, než má očekávaný klíč (tj. časovač není zastaven přijetím posledního dibitu). Následně zastaví oba časovače, zavolá metodu pro uvedení všech proměnných do původního stavu
tomu je blikání pro oko méně viditelné. Systém
časovač s šestnáctibitovým registrem měří dobu
demodulaci
signálu. Pro funkčnost tohoto algoritmu je zapotřebí měřit dobu mezi jednotlivými pulzy. Za ideálních podmínek by tyto doby měly být stejně dlouhé. Pro každý pulz jsou tyto dvě doby (jedna před pulzem a druhá po něm) porovnávány s jejich celkovou průměrnou hodnotou. Pokud je
a tuto činnost signalizuje zablikáním červené LED. Po přijetí správného počtu pulzů začíná ověření
přijatého
klíče.
Po
kompenzaci
nepřesností se doby pulzů převedou do bitové reprezentace. Nejprve je určena doba nejdelšího pulzu. Díky tomuto kroku je vyhodnocování závislé pouze na poměru dob pulzů jednotlivých dibitů a ne na jejich absolutních hodnotách. Na druhou stranu je v každém vysílání potřeba přenosu
dibitu
11,
který
je
reprezentován
nejdelším pulzem. Z maximální doby pulzu se určují porovnávací úrovně pro všechny dibity.
doba před pulzem delší než průměr, je rozdíl
Po demodulaci se přijatý klíč porovná
mezi touto dobou a průměrnou dobou přičten
s klíčem referenčním. Pokud se shodují, rozsvítí
J. STANĚK, VLC DVEŘNÍ ZÁMEK
4
se zelená LED, pokud jsou rozdílné, rozsvítí se červená LED.
Závěr
5.
Použití
diferenční
pulzně
polohové
modulace je závislé na přesném časování zapnutí a vypnutí LED. Pokud chceme přenos uskutečnit bez viditelného blikání, je zapotřebí jednotlivé stavy měnit s přesností na jednotky milisekund. Taková přesnost je při použití API operačního
systému
Android
nedosažitelná.
Použitím jiného způsobu modulace, který je méně závislý na měření času, jsem byl schopen dosáhnout požadovaného výsledku. Použití VLC pro odemykání dveří vylepšuje hlavní vlastnost zámků – zabezpečení. V práci jsem se zabýval nejrozšířenějším operačním systémem pro mobilní telefony. Telefony s jiným OS jsem neměl k dispozici, takže nemohu říct, jak by se na nich popsaný algoritmus choval v praxi.
Jakub Staněk