Bezdotykowy interfejs IR w systemach embedded
| TechnikaBezkontaktowy interfejs użytkownika to atrakcyjna i interesująca alternatywa dla bardziej tradycyjnych dotykowych rozwiązań, konstruowanych zazwyczaj w oparciu o zestaw mechanicznych, pojemnościowych lub rezystancyjnych przycisków. Technologia IR pozwala na detekcję szeregu prostych gestów z wykorzystaniem taniego i prostego w konstrukcji układu. Szczególnego znaczenia technologia ta nabiera w sytuacji przeciwdziałania rozprzestrzenianiu się globalnej pandemii oraz implementacji związanych z tym zabezpieczeń. Układy emisji i detekcji światła z zakresu podczerwieni pozwalają na dość łatwą i niedrogą konstrukcję tego typu rozwiązania.
Z pomocą czujnika oraz diod IR możliwe jest zbudowanie bezdotykowego interfejsu zdolnego do detekcji podstawowych gestów wykonywanych w odległości do kilkudziesięciu centymetrów od panelu – przesuwania dłonią oraz palcami w różnych płaszczyznach.
Rozwój technologii produkcji zintegrowanych układów detekcji IR znacząco ułatwił projektowanie tego typu rozwiązań. Dwie podstawowe metody wykorzystywane przy tego typu projektach to pomiar położenia oraz pomiar przesunięcia obiektów. Podejście oparte na pomiarze położenia zakłada rozpoznawanie gestów na podstawie oszacowanej na podstawie pomiarów lokalizacji obiektu. Drugie z rozwiązań nie wymaga bezpośredniego pomiaru położenia, skupiając się na analizie zmian kształtu sygnału z czujnika w czasie, wykrywając w ten sposób rodzaj oraz kierunek gestu.
Obie metody pozwalają na osiąganie podobnych rezultatów, umożliwiając implementację takich funkcjonalności, jak np. przewijanie ekranu, przewracanie stron w czytnikach e-booków czy obsługa GUI systemów przemysłowych.
Wymagania sprzętowe
Pomimo faktu, że interfejsy bezdotykowe IR przeznaczone są zwykle do rozpoznawania gestów ludzkiej dłoni, nic nie stoi na przeszkodzie, aby tę samą technologię wykorzystać do detekcji ruchów innych obiektów. Przewidywany rodzaj oraz rozmiar wykrywanych obiektów determinuje wymagania co do sprzętowej części projektu systemu.
Bardzo ważnym czynnikiem jest zdolność obiektu do odbijania sygnału IR w kierunku detektora. W przypadku ludzkiej dłoni zdolność ta, ze względu na kształt oraz rozmiar obiektu, jest dość duża. Pozwala to na skuteczną detekcję gestów z odległości sięgającej kilkudziesięciu centymetrów od czujnika. Efektywne wykrywanie gestów pojedynczego palca, ze względu na znacząco mniejszy rozmiar oraz bardziej okrągły kształt obiektu, możliwe jest już tylko na dystansie rzędu kilku do kilkunastu centymetrów.
Podstawową zasadą podczas projektowania systemu rozpoznawania gestów z wykorzystaniem wielu diod LED jest zapewnienie całkowitego pokrycia obszaru pracy systemu sygnałem IR. W przeciwnym razie w obszarze pracy systemu pojawią się tzw. martwe punkty – miejsca, dla których wykrycie umieszczonego w nich obiektu nie będzie możliwe. Obecność martwych punktów może znacząco obniżyć efektywność pracy systemu i pogorszyć skuteczność wykrywania gestów.
Aby wyeliminować ryzyko powstania martwych punktów, należy przeprowadzić analizę pokrycia przestrzeni pracy systemu sygnałem IR. W tym celu konieczna jest znajomość charakterystyk promieniowania wykorzystanych w systemie diod LED, ich położenia oraz przewidywanej minimalnej odległości obiektu od detektora. Zazwyczaj korzystnie jest rozmieścić diody we wzajemnej odległości zbliżonej do rozmiarów wykrywanego obiektu. Przykładowo, jeśli zadaniem systemu ma być detekcja ruchu dłoni w prawo/lewo, odległość pomiędzy dwiema diodami powinna być zbliżona do typowej szerokości dłoni. Jeśli charakterystyka promieniowania diod jest zbyt wąska do zapewnienia pokrycia sygnału w wymaganym obszarze, konieczne może się okazać umieszczenie pomiędzy nimi dodatkowego emitera.
Kolejnym z zadań stojących przed projektantem systemu jest dobór odpowiedniej wartości prądu zasilania diod IR. Większy prąd zasilania przekłada się na wyższą moc promieniowanego sygnału i w konsekwencji większy zasięg. Oznacza to jednak wzrost zużycia energii elektrycznej, co generalnie nie jest zjawiskiem pożądanym, szczególnie w systemach zasilanych bateryjnie. Wyższa moc oznacza również konieczność odprowadzenia większej ilości ciepła rozpraszanego na elementach systemu, co z kolei przełożyć się może na wzrost rozmiarów oraz kosztów elementów układu chłodzenia.
Detekcja gestów na podstawie pomiaru położenia obiektu
Algorytm rozpoznawania gestów na podstawie pomiaru położenia obiektu składa się z trzech zasadniczych kroków. Pierwszy z nich to przekształcenie danych z detektora IR na wartość reprezentującą odległość obiektu od czujnika. Drugi to wykorzystanie danych na temat odległości do obliczenia położenia obiektu w przestrzeni. Ostatni etap to śledzenie zmian położenia obiektu i wykrywanie zdarzenia wystąpienia gestu oraz rozpoznawanie jego rodzaju.
Sygnał wyjściowy detektora IR jest wprost proporcjonalny do natężenia światła IR padającego na czujnik. Sygnał IR docierający do detektora w przeważającej części pochodzi od diody IR będącej częścią systemu, odbijając się od umieszczonego w pobliżu czujnika obiektu. Natężenie odbieranego sygnału wzrasta w miarę zbliżania się obiektu do detektora oraz maleje wraz z jego oddalaniem się. Na podstawie mierzonej wartości natężenia z dość dobrą dokładnością ocenić można zatem odległość obiektu (np. dłoni) od źródła sygnału IR (diody LED). Najprostszym i jednocześnie skutecznym sposobem na wyznaczenie zależności pomiędzy dystansem obiektu a natężeniem sygnału jest dokonanie empirycznych pomiarów. Odczytanie dużej liczby wyników dla wielu różnych odległości pozwala na wykreślenie dokładnej charakterystyki pracy systemu, umożliwiającej konwersję wskazań czujnika na wartość liczbową reprezentującą odległość obiektu od systemu.
W systemie składającym się z wielu nadajników każda z diod LED cechować się będzie nieco inną charakterystyką pracy, konieczne będzie zatem wykreślenie zależności odległości od natężenia odbieranego sygnału dla każdego z nadajników indywidualnie. W przypadku układu składającego się z dwóch LED, do wykreślania charakterystyki każdej z nich najlepiej wykorzystać obiekt umieszczony w połowie dystansu pomiędzy diodą a odbiornikiem IR, tak jak pokazano na rysunku 2.
Kolejnym krokiem jest oszacowanie pozycji wykrytego obiektu w przestrzeni. W tym celu skorzystać można z równania opisującego punkt przecięcia dwóch okręgów lub płaszczyzny przecięcia dwóch sfer. Promień każdego z okręgów równy jest odległości zmierzonej za pomocą detektora dla każdej z diod. Odległość ta opisuje dystans pomiędzy obiektem a środkiem odcinka wyznaczanego przez detektor oraz diodę. Jeśli diody i detektor położone są w jednej osi, skorzystać można z równania dotyczącego okręgów, w pozostałych przypadkach znacznie dokładniejsze będzie przybliżenie za pomocą sfer.
Metodykę wyznaczania położenia obiektu przedstawiono schematycznie na rysunku 3. Odcinki D1 oraz D2 reprezentują odległość do obiektu zmierzoną na podstawie sygnału pochodzącego od każdej z diod, są też jednocześnie promieniami wykreślonych okręgów. Punkt przecięcia okręgów wyznacza położenie obiektu. Bardziej szczegółowo sytuacja ta zobrazowana jest na rysunku 4. Wartości A oraz B oznaczają położenie obiektu wzdłuż osi wyznaczanej przez diody oraz detektor IR.
W celu wykrycia oraz rozpoznawania gestów algorytm klasyfikujący musi śledzić zmiany położenia obiektu, ze szczególnych uwzględnieniem punktu startowego, punktu końcowego oraz czasu przejścia pomiędzy nimi. Pozwala to na określenie kierunku gestu oraz rozróżnienie jego typu – np. pomiędzy wolnym a szybkim przesunięciem dłoni.
Detekcja gestów na podstawie pomiaru przemieszczenia obiektu
Druga z opisywanych metod na żadnym z etapów nie wymaga obliczania położenia obiektu w przestrzeni. Zamiast tego analizie poddaje się zmiany przebiegu sygnału docierającego do detektora od każdej z diod. Wartość maksymalna sygnału osiągana jest zawsze w momencie, kiedy obiekt znajduje się dokładnie nad daną diodą LED. Wykorzystując wiedzę tę, można z bardzo dobrą dokładnością identyfikować poszczególne gesty – jeśli dłoń przesuwana jest wzdłuż osi wyznaczanej przez dwie diody, kierunek ruchu określić można poprzez obserwację kolejnokolejności zmian sygnału pochodzącego od obu nadajników. Przykładowo, gdy ruch wykonywany jest od strony prawej do lewej, jako pierwszy maksimum osiąga sygnał pochodzący od prawej diody.
Na rysunku 5 przedstawiono system składający się z trzech diod. W przypadku przesuwania dłonią w lewo, przechodzi ona kolejno nad diodami D2, D3 oraz D1. Zadaniem algorytmu klasyfikującego jest identyfikacja ekstremum (maksimum) sygnału pochodzącego od każdej z diod, rejestracja czasu wystąpienia tego zdarzenia oraz opcjonalnie obliczenie kierunku zmian sygnału (sygnał malejący lub narastający).
Układ z rysunku 5 jest w stanie wykrywać gesty w płaszczyźnie prawo–lewo oraz góra–dół. W przypadku przesuwania dłoni w górę sygnał z D3 osiąga maksimum jako pierwszy, następnie zaś zaczyna opadać, podczas gdy równocześnie osiągana jest wartość maksymalna D2 oraz D1. Na rysunku 6 przedstawiono przebiegi sygnałów rejestrowanych przez system z rysunku 5 dla czterech podstawowych gestów. Analiza sekwencji zmian sygnału pochodzącego od różnych diod pozwala jednoznacznie zidentyfikować kierunek gestu.
Wady i zalety obu rozwiązań
Metoda oparta na wyznaczaniu położenia obiektu umożliwia implementację bardziej rozbudowanego interfejsu użytkownika. Przykładowo, do szybkiego przewijania tekstu wykorzystać można gest zawieszenia dłoni w określonym punkcie obszaru pracy systemu, co jest szybsze i łatwiejsze niż wykonanie kilkunastu gestów przesuwania dłoni.
Główną wadą tego podejścia jest ograniczona dokładność wyznaczania położenia obiektu. Algorytm zakłada, że charakterystyka promieniowania diody LED jest dookólna, podczas gdy w rzeczywistości jest ona znacznie bardziej zbliżona do stożka, w dodatku o niejednorodnym rozkładzie natężenia światła wewnątrz obszaru pracy. Nie uwzględnia się również różnic w kształcie wykrywanych obiektów, co może spowodować znaczące przekłamanie otrzymywanych wyników. System nie będzie na przykład w stanie rozróżnić dłoni od nadgarstka – jeśli zatem podczas gestu dłoni nadgarstek znajdzie się w polu detekcji systemu, prawdopodobnie silnie zaburzy to otrzymywane wyniki. Samodzielna implementacja metody opartej na wyznaczaniu położenia sprawdzi się jedynie w przypadku systemów o małej wymaganej rozdzielczości, korzystających z mniej niż dziesięciu diod IR. Rozwiązanie to nie sprawdzi się raczej jako bezkontaktowy substytut ekranu dotykowego.
Metoda oparta na analizie zmian kształtu sygnału wyjściowego detektora IR świetnie sprawdza się w przypadku systemów niewymagających dostarczania informacji o pozycji obiektu. Identyfikacja gestów odbywa się z bardzo dobrą dokładnością, również w przypadku obiektów charakteryzujących się odmiennych kształtem. Brak informacji o położeniu obiektu ogranicza jednak liczbę możliwych do rozpoznania gestów, co może uniemożliwić implementację niektórych bardziej zaawansowanych funkcji sterowania.
Połączenie obu metod
W celu usprawnienia pracy systemu możliwe jest połączenie obu opisanych metod. Korzystają one z dokładnie takich samych zasobów sprzętowych, zatem fuzja taka wymaga jedynie odpowiednich modyfikacji oprogramowania przetwarzającego dane z czujników. Wiąże się to z koniecznością zapewnienia odpowiednio większej mocy obliczeniowej, dla obecnej generacji systemów mikroprocesorowych nie jest to jednak zbyt poważny problem.
Przykładowa implementacja
Na rysunku 6 przedstawiono schemat przykładowego obwodu do detekcji gestów, skonstruowanego w oparciu o jeden z dostępnych na rynku zintegrowanych modeli detektorów IR. System składa się z czujnika, trzech diod LED oraz mikroprocesora. Układ detektora wyposażony jest w trzy wyjścia przeznaczone do podłączenia emiterów sygnału IR. Wbudowany w czujnik obwód generowania oraz przełączania sygnału steruje pracą diod, sekwencyjnie załączając każdą z nich, co pozwala na odebranie oraz wykreślenie przebiegu sygnału odbitego generowanego osobno przez każdą z diod.
Mikrokontroler może sterować pracą detektora oraz odczytywać odbierany sygnał za pomocą interfejsu I²C. Wartość odebranego sygnału dla każdej z diod zapisywana jest w osobnym 16-bitowym rejestrze. Cykliczny odczyt tych wartości pozwala śledzić zmiany sygnału i zasilać algorytm detekcji i klasyfikacji gestów.
Podsumowanie
Diody LED oraz detektor IR mogą zostać wykorzystane do stworzenia prostego i niedrogiego systemu zdolnego do wykrywania i rozpoznawania gestów z odległości do kilkudziesięciu centymetrów. Rozwiązanie to może świetnie sprawdzić się przy konstrukcji nowoczesnych interfejsów użytkownika, stanowiąc ciekawą alternatywę dla klasycznych urządzeń wykorzystujących przyciski. Technologia ta jest stosunkowo prosta w implementacji, nie wymaga angażowania dużej mocy obliczeniowej ani kosztownych zasobów sprzętowych. Dodatkowym atutem rozwiązań bezdotykowych jest ich sterylność, szczególnie ważna w czasach zwiększonej uwagi poświęcanej sprawom higieny i walce z globalną pandemią.
Damian Tomaszewski