Haptyczne wąsy czuciowe

Haptyczne wąsy czuciowe

Karnawał jest doskonałym okresem na przebieranki, a dzięki temu, także na eksperymenty z nietypowymi projektami elektronicznymi. Zaprezentowany projekt w pewnym sensie pozwala zamienić się w kota. Elektroniczne wibrysy, czyli włosy czuciowe, występujące u ssaków, m.in. kotów, psów i gryzoni, mogą być oryginalnym uzupełnieniem przebrania oraz interesującym eksperymentem naukowym.

Zaprezentowany projekt jest kolejnym z serii sensorów haptycznych, opracowanych przez Nicholasa Gonyea. Eksperymentowanie z urządzeniami tego rodzaju ma kilka celów. Z jednej strony system taki może zapewniać zupełnie nowe zmysły, nieznane dotychczas ludziom, i może być początkiem nowego wynalazku. Z drugiej strony, jak wskazuje autor, takie rozwiązanie ma posłużyć do lepszego zrozumienia zachowań kotów, czy innych zwierząt z wibrysami. Finalnie, taki sensor może pomóc np. ludziom niewidomym, którzy muszą zastępować wzrok innymi sensorami, najczęściej dotykiem.

Układ działa, jako wzmacniacz sensoryczny, w tym przypadku dotykowo-dotykowy, tj. wzmacniający bodziec dotykowy i przekazujący go do użytkownika także w postaci zmysłu dotyku. Tego rodzaju sprzężenie nazywa się haptycznym (ze starogreckiego ἁπτικός haptikós, czyli „dotykalny” lub „dotykowy”). Przykładami interfejsów haptycznych, jakie nas otaczają, są np. telefony komórkowe, które mają funkcję wibrowania.

Opis układu

Układ składa się z dwóch zestawów czujników ugięcia (w sumie jest ich osiem, po cztery na stronę). Odbierają one informacje dotykowe wynikające ze zgięcia sensora, znajdującego się u podstawy naszego elektronicznego wibrysa, przy kontakcie z obiektami w bezpośrednim otoczeniu użytkownika systemu. Początkowa informacja o napięciu/rezystancji sensora mierzona przez każdy czujnik jest następnie przetwarzana na informację o kącie zgięcia sensorów. Te informacje są następnie konwertowane na wyjście proporcjonalne w postaci impulsów prostokątnych o modulowanej szerokości (PWM), które sterują natężeniem wibracji elementów haptycznych, umieszczonych na twarzy użytkownika. Elementy te tworzą tak zwany wyświetlacz haptyczny. Składa się on z macierzy silników prądu stałego z niecentrycznymi masami (niesymetryczne dyski na osiach), które wibrują, gdy silnik pracuje. Im kręci się szybciej, tym wibracje są bardziej intensywne.

Każdy czujnik ma własny mikrokontroler w postaci SparkFun ProMini 3,3 V/8 MHz, który wykonuje konwersję wartości i steruje efektorem haptycznym. W każdym ProMini działają dwie pętle (takie podejście było konieczne, aby złagodzić problemy z zakłóceniami EMI powodowanymi przez silnik). Jedna funkcja służy do pozyskiwania danych z wąsów, podczas gdy druga wysyła sygnał PWM do wyświetlacza haptycznego.

Dwa wyświetlacze wibracyjne dostarczają bodźców dotykowych na czoło użytkownika (lokalizacja efektorów może być inna, zależnie od preferencji). Każdy silnik umieszczony w każdym z dwóch wyświetlaczy jest połączony z własnym wąsem (ustawione są w tej samej orientacji, co wąsy na twarzy), i wibruje w taki sposób, aby odzwierciedlać kąt zgięcia wąsa. Intensywność wibracji jest proporcjonalna do kąta zgięcia wąsa. Dzięki zjawiskom substytucji/wzmacniania sensorycznego bardzo prawdopodobne jest to, że po pewnym okresie treningu każdy może rozszerzyć swój wcześniej istniejący aparat somatosensoryczny o sferę tych nowych wyrostków przypominających wąsy, tak jak robią to osoby niewidome wykorzystując substytucję sensoryczną dotykowo-wzrokową (np. przy użyciu laski). Używając tego modułu odpowiednio często jest nawet prawdopodobne, że kora somatosensoryczna – SS (pośrednicząca przy stymulacji receptorów skóry na czole) może z czasem rozwinąć nową „reprezentację wąsów” mieszczącą się gdzieś w tym obszarze mózgu. Ten rodzaj poszerzenia sensorycznego został już zaprezentowany w wielu badaniach (np. wzbogacanie sensoryczne dla niewidomych – wzmocnienie czuciowe poprzez dotyk za pomocą wyświetlacza wibracyjnego noszonego wokół talii).

Budowa wąsów

Opracowanie odpowiednich sensorów do wąsów, było kluczowe dla powodzenia całego projektu. Muszą one być wystarczająco elastyczne, aby naśladować prawdziwe wąsy, a jednocześnie wystarczająco sztywne, aby sensor powracał do prostej, niewygiętej pozycji. W tym celu zastosowano 100-milimetrowy jednokierunkowy sensor zginania firmy Flexpoint Sensor Systems (fotografia 1).

Fotografia 1. 100-milimetrowy jednokierunkowy sensor zginania firmy Flexpoint Sensor Systems

Do nóżek sensora przylutowana jest następnie wtyczka JST, która pozwala na podłączenie sensora do dalszej części układu. Następnie, sensor zginania łączony jest z paskiem polistyrenu o długości ok 355 mm, szerokości 2 mm i grubości ok 0,75 mm za pomocą kleju silikonowego. Następnie na całość nałożona jest rurka termokurczliwa. Podstawa uformowana jest z masy plastycznej – kleju formowalnego Sugru.

Przejdźmy przez szczegółowy opis kroków budowy tych sensorów:

Lutujemy 3-wyprowadzeniową wtyczkę JST z krótkimi przewodami do sensora zgięcia. Usuwamy środkowy pin złącza JST (fotografia 2). Potrzebne jest około 15 mm przewodu pomiędzy wtyczką. Lutowane połączenia zabezpieczamy koszulkami termokurczliwymi.

Fotografia 2. Wtyczka JST z krótkimi przewodami przylutowana do sensora zgięcia

Do sensora przyklejamy, za pomocą elastycznego kleju silikonowego, paski z elastycznego polistyrenu. Pasek musi być mocno przytwierdzony do całej powierzchni sensora.

Za pomocą masy Sugru (lub podobnej) należy uformować wokół podstawy czujnika, paska i wtyczki wzmacniający element, upewniając się, że obejmuje on wszystkie te elementy. Należy pamiętać również, aby umieścić masę na tyle wysoko, aby w pełni zabezpieczyć pasek, ale nie za wysoko, aby nie ograniczać swobodę ruchu/zginania czujnika. Z masą, taką jak Sugru, nie należy się śpieszyć. Po nałożeniu nie ma się, co śpieszyć – typowo mamy około 30...45 minut, aż masa zacznie twardnieć. Zanim w pełni stwardnieje należy upewnić się, że wtyczka jest dobrze dopasowana do strony gniazda złącza JST (fotografia 3).

Fotografia 3. Za pomocą masy Sugru uformowano wokół podstawy czujnika, paska i wtyczki wzmacniający element

Powyższe operacje powtarzamy jeszcze siedem razy (lub dowolną inną liczbę razy, w zależności od tego, ile chcemy mieć wąsów w systemie). Należy przyłożyć dużą wagę do staranności i powtarzalności budowy każdego czujnika, gdyż znacznie uprości to potem kalibrację sensorów.

Okablowanie efektorów haptycznych

Kiedy wąsy są gotowe, należy zamontować je w jakiś sposób na specjalnym hełmie, który służy do ich noszenia, wraz z elektroniką. Autor zaprojektował specjalne, zakrzywione ramie z punktem mocowania sensorów na końcu. Komponent zaprojektowany został w programie Adobe Illustrator i wykonany z przeźroczystego akrylu o grubości ok. 1,6 mm za pomocą plotera laserowego. Po wycięciu wąsy zostały osadzone w części uchwytu za pomocą masy w Sugru.

Aby sprawić, że sposób mocowania będzie pozwalał na większą elastyczność, w ramieniu dodano wycięcie, w części, którą montuje się do hełmu. Przez wycięcie przekłada się dwie śruby, które służą do montażu do hełmu. Element, do którego przymocowane są sensory, można w ten sposób przesuwać, względem hełmu, jak pokazano na fotografii 4.

Fotografia 4. Element, do którego przymocowane są sensory

Aby zbudować ten element należy:

Do jednej strony płaskiej taśmy kablowej przylutować skręcone przewody, które następnie podłączone zostaną do modułu sterującego.

Gniazda JST dla złącz, znajdujących się na końcach wąsów, zostają przylutowane na drugim końcu taśmy.

Wszystkie połączenia lutowane należy zabezpieczyć koszulkami termokurczliwymi.

Autor wykorzystał w swoim systemie 4 wąsy na stronę, co oznacza, że taśma musi mieć 8 przewodów. Jeśli chcemy skorzystać z innej liczby wąsów w systemie, należy dobrać inną taśmę.

Akrylowy element, po wycięciu, można wygiąć korzystając z ciepła opalarki, aby lepiej dostosować do kształtu twarzy. Należy wygiąć ten płaski element tak, aby miejsce montażu sensorów dotykało twarzy (fotografia 5).

Fotografia 5. Akrylowy element, po wycięciu i uformowaniu z użyciem opalarki

Wiązka przewodów umieszczana jest na akrylowym ramieniu i tymczasowo zabezpieczana taśmą. Następnie za pomocą masy Sugru należy ułożyć złącza JST dla wibrysów na części ramienia w kształcie dysku. Instalując ten element należy upewnić się, że po podłączeniu, wąsy nie będą na siebie nachodzić.

Po wyschnięciu kleju Sugru, można przymocować całość do wybranego hełmu, jak opisano powyżej.

Elektronika i montaż układu

Konfiguracja wyświetlacza haptycznego w systemie jest dosyć prosta. Efektory zainstalowane są w hełmie w taki sposób, że dotykają czoła w podobnym układzie, w jakim rozłożone są wąsy czuciowe. Na tym samym hełmie zainstalowana jest również sterująca systemem elektronika i źródło zasilania – bateria 5 V. Montaż całego układu jest relatywnie prosty. Wystarczy po kolei, realizować opisane poniżej kroki.

W pierwszej kolejności musimy przygotować efektory haptyczne – silniki wibracyjne. Do silników tych lutujemy skręcone przewody, które następnie zakańczamy przewodami z 2-pinowym złączem JST. Wszystkie połączenia lutowane trzeba zabezpieczyć rurką termokurczliwą. Finalnie, na silniku wibracyjnym montowany jest samoprzylepny rzep (strona z haczykami), jak pokazano na fotografii 6. Te czynności powtarzamy tyle razy, ile jest sensorów i silników.

Fotografia 6. Silnik wibracyjny przygotowany do zamontowania w kasku

Druga strona naklejek z rzepem montowana jest na kasku (fotografia 7).

Fotografia 7. Efektory haptyczne zamontowane po wewnętrznej stronie kasku

W jego górnej części montowany jest akumulator, jak pokazano na fotografii 8. Obok baterii montowany jest rozdzielacz zasilania – prosta płytka, która rozdziela zasilanie z USB na wymaganą ilość linii (każdy z ośmiu modułów z mikrokontrolerem).

Fotografia 8. Akumulator zamontowany w górnej części kasku

Każdy sensor wyposażony jest w osobny mikrokontroler. Moduł sterujący jednym wąsem składa się z modułu SparkFun Arduino Pro Mini, Pro Mini Protoshield, tranzystora BC337, diody prostowniczej 1N4001, rezystora 220 Ω, rezystora 10 kΩ i zestawu złącz, zgodnie z dalszym opisem w kolejnych krokach.

W pierwszej kolejności lutujemy dwa 8-pinowe złącza żeńskie do modułu ProMini, a następnie kątowe złącze męskie z sześcioma pinami, jak pokazano na fotografii 9.

Fotografia 9. Dwa 8-pinowe złącza żeńskie dolutowane do modułu ProMini

Po drugiej stronie modułu montujemy rzep, który pozwoli następnie zamontować moduł na hełmie.
Do płytki Pro Mini Protoshield lutujemy dwa rzędy goldpinów po cztery piny, jak pokazano na fotografii 10a. Na płytce tej instalowany jest także tranzystor do sterowania silnikiem wibracyjnym, dioda zabezpieczająca przed szpilkami napięcia z silnika (uzwojenie silnika generuje je w momencie zatrzymywania się) oraz konieczne złącza – dla silnika i dla modułu zasilania. Autor nie udostępnił schematu tego urządzenia, jednakże połączenia opisanych elementów powinny być oczywiste dla każdego, mającego do czynienia z elektroniką.

Fotografia 10. Płytkę Pro Mini Protoshield rozbudowujemy o dwa rzędy goldpinów po cztery styki

Jedyne, co musimy wiedzieć, to to, że sensor podłączamy do pinu A0, a silnik do pinu 5 (przez tranzystor sterujący). Jeśli chcemy podłączyć te elementy do innych pinów mikrokontrolera, pamiętajmy o wprowadzeniu tych zmian w kodzie, pokazanym w dalszej części artykułu. Na fotografii 10b pokazano gotową płytkę.

Powtórz powyższy montaż kolejne siedem razy, aby umieć łącznie osiem modułów z elektroniką, po jednym dla każdej płytki z mikrokontrolerem.

Do płytki dystrybucyjnej zasilania dołączamy dwa fragmenty odciętego przewodu USB z wtyczką USB-A, którą podłączymy następnie do powerbanka. Do wyjść z płytki dystrybucyjnej dołączamy z kolei osiem przewodów z złączami JST z dwoma pinami, które posłużą do zasilenia poszczególnych płytek z mikrokontrolerem. Płytki rozdzielające dla zasilania montowane są finalnie na rzep na kasku, jak pokazano na fotografii 11.

Fotografia 11. Płytki rozdzielające zasilanie montowane na rzep

Po obu stronach kasku, montowane są po cztery moduły z mikrokontrolerami, także na rzepach. Finalnie łączymy ze sobą wszystkie wejścia i wyjścia (sensory i silniki).

Na fotografii 12 pokazana jest gotowa konstrukcja urządzenia. Teraz wystarczy do każdego z mikrokontrolerów załadować firmware, aby nasze haptyczne wąsy ożyły.

Fotografia 12. Gotowa konstrukcja urządzenia – wszystkie komponenty zamontowane na kasku

Oprogramowanie

Finalnym elementem systemu jest oprogramowanie. Przed wgraniem do układu, musimy zaopatrzyć się w płytkę/moduł konwertera USB-UART, np. taki z układem z rodziny FTDI. Arduino ProMini nie ma takiego konwertera na pokładzie. W samym kodzie także trzeba wprowadzić kilka zmian i wartości kalibracyjnych, osobno dla każdego wąsa. Opisane poniżej czynności powtarzamy dla każdego z mikrokontrolerów, kontrolujących pojedynczą parę sensor – efektor. Poszczególne wartości – unikalne dla każdego sensora, wprowadzane są do kodu, pokazanego na listingu 1.

Listing 1. Firmware mikrokontrolera, znajdującego się w każdym wąsie

// Zmierzone napięcie zasilania – linia 3,3 V
const float VCC = 3.33;
// Zmierzona rezystancja opornika 10k
const float R_DIV = 10000.0;

// Parametry kalibracyjne
// Zmierzona rezystancja prostego sensora
float STRAIGHT_RESISTANCE = 60000.0;
// Zmierzona rezystancja zgiętego sensora
float BEND_RESISTANCE = 90000.0;
// Kąt zgięcia sensora
float BEND_ANGLE = 90.0;
// Pin podłączenia sensora
int sen = A0;
// Pin podłączenia silnika
int mtr = 5;

void setup(){
 pinMode(sen, INPUT);
 pinMode(mtr, OUTPUT);
 Serial.begin(115200);
}

void loop(){
   // Odczyt z ADC
   int flexADC = analogRead(0);
   // Wyznaczenie napięcia
   float flexV = flexADC * VCC / 1023.0;
   // Wyznaczenie rezystancji
   float flexR = R_DIV * (VCC / flexV – 1.0);
   Serial.println("Resistance: " + String(flexR) + " ohms");
   // Mapowanie wartości rezystancji na kąt
   float angle = map(flexR, STRAIGHT_RESISTANCE, BEND_RESISTANCE, 0.0, BEND_ANGLE);
   Serial.println("Bend: " + String(angle) + " degrees");
   // Mapowanie wartości kąta na siłę wibracji
   float FWD_intensity = map(angle, 5.0, 80.0, 30.0, 130.0);
   Serial.println("Forward Intensity: " + String(FWD_intensity));
     if (angle > 5.0){
       analogWrite(mtr, FWD_intensity);
     }else{
       analogWrite(mtr, 0);
     }
   delay(500);
}

W pierwszej kolejności, korzystając z multimetru, mierzymy napięcie zasilania na każdym z wąsów (VCC), jak i rezystancję opornika 10 kΩ w układzie. Wartości te wprowadzane są następnie w odpowiednie miejsca w kodzie. Następnie należy sprawdzić pozostałe zmienne, w szczególności te, które kontrolują wejścia i wyjścia z układu (np. mtr, flexADC itp.). Po przygotowaniu oprogramowania można podłączyć wszystkie obwody do zasilania, podłączyć moduł FTDI (podłączony do USB komputera) do pierwszego ProMini i przesłać do mikrokontrolera skompilowany kod.

Po tym przystępujemy do kalibracji układu. Gdy będzie on gotowy do pracy, zobaczymy na monitorze portu szeregowego, wydrukowane wartości: Resistance (opór), Bend (zgięcie) i Forward Intensity (intensywność). Każdy wąs jest unikalny i będzie miał nieco inny opór bazowy, dlatego wartości te będą różne. Ustawiamy zmienną STRAIGHT_RESISTANCE na dowolny opór nieugiętego wąsa, zgodnie z tym, co widzimy na ekranie z monitorem portu szeregowego. Następnie zmienną BEND_RESISTANCE ustawiamy na wartość równą STRAIGHT_RESISTANCE + 30000,0. Zmienna ta ma odzwierciedlać rezystancję wyjściową czujnika ugięcia przy zgięciu go o 90 stopni. Ponieważ nasze wąsy nie zbliżają się do takiego zgięcia (przynajmniej w typowych sytuacjach), dodanie po prostu 30000,0 Ω do rezystancji bazowej działa dostatecznie dobrze. Można jednak ustawić inną oporność podczas zgięcia, w zależności od potrzeby. Można oczywiście wstawić tutaj także zmierzoną rezystancję sensora przy arbitralnie dobranym kącie. Kąt ten, przy którym zmierzono rezystancje, wpisać należy w zmiennej BEND_ANGLE.

Po wprowadzeniu danych kalibracyjnych do kodu, można go ponownie skompilować i wgrać do układu. Jeśli wszystko ustawiono poprawnie, gdy wąs jest rozprostowany, przez port szeregowy wydrukowany zostanie kąt zgięcia 0 stopni (mniej więcej). Analogicznie, wyświetlany powinien być każdy inny kąt, o jaki zgięty zostanie sensor.

Działanie oprogramowania jest bardzo proste. Po zmierzeniu napięcia i wyliczeniu rezystancji przeprowadzane są dwie różne funkcje mapowania. Pierwsza odwzorowuje zmierzoną rezystancję na kąt zgięcia, a druga odwzorowuje kąt zgięcia na natężenie wibracji z silnika (sterowanego przez PWM). Po przetestowaniu urządzenia konieczne może być zmodyfikowanie drugiej funkcji mapowania, aby uzyskać odpowiedni wynik. Parametry zgięcia są początkowo ustawione na 5,0 i 80,0, a parametry wyjściowe silnika na 30,0 i 130,0.

Te wartości działały w przypadku autora, ale to bardzo osobnicze preferencje. Wszystko poniżej 5,0 stopni na dolnym końcu powoduje problemy, ponieważ czujnik waha się w przybliżeniu ±3,0 stopni wokół zera cały czas. Wszystko powyżej 80,0 stopni jest z kolei niepotrzebne, ponieważ czujnik rzadko wygina się poza ten kąt.

Silnik wibracyjny, jaki użył autor, ma próg zadziałania na poziomie około 40,0 jednostek PWM (tj. nie będzie wyczuwalnie wibrował, dopóki wyjście PWM nie osiągnie około 40,0). Rozpoczęcie zakresu od 30,0 pozwala nieco buforować początkowy poziom wibracji. Górny zakres ustawiono na 130,0, ponieważ ten poziom jest więcej niż wystarczający dla pełnej wyczuwalności.

Obecna wersja oprogramowania, jak pisze autor, nie jest ostateczna. Kolejna wersja miałaby być rozbudowana o ciągłą samokalibrację czujnika ugięcia. Obecnie, gdy używane wąsy są w użyciu, opór może znacznie zmieniać się poza początkowo ustawioną wartość. Może to prowadzić do zmniejszenia czułości wąsów. Dodanie ciągłej samokalibracji może pozwolić na wyeliminowanie tego szkodliwego zjawiska. Na razie jednak, od czasu do czasu może być konieczna ponowna kalibracja wąsów.

Podsumowanie

Jako, że ludzie nie są wyposażeni w tego rodzaju zmysł, jakiekolwiek realne zastosowanie tych sensorów wymaga nauki i treningu. Jednak z uwagi na ogromną plastykę mózgu, nauczenie się, jak korzystać z takich wąsów nie jest niemożliwe. Taki sensor może być elementem ciekawego przebrania karnawałowego, jak i pomocą dla osób np. niewidomych lub niedowidzących. Spektrum zastosowań tego rodzaju rozwiązania jest szerokie i nawet, jeżeli jego realne użycie jest problematyczne, to sama idea działania, tj. wykorzystanie czuciowych elementów mechanicznych i sprzężenia haptycznego, jest bardzo ciekawa, szczególnie w kontekście osób pozbawionych możliwości korzystania ze zmysłu wzroku.

Zaprezentowany projekt nie tylko pozwala na skonstruowanie ciekawego urządzenia, ale także poznanie ciekawych technologii – elastycznych sensorów oraz efektorów haptycznych. Każdy z tych elementów z powodzeniem może być wykorzystany w innych projektach, poszerzając ich funkcjonalność czy wręcz umożliwiają zupełnie nowe zastosowania.

Nikodem Czechowski, EP

Źródło: https://www.instructables.com/Whisker-Sensory-Extension-Wearable/

Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2023

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów