Obsah:

[Nositelná myš] Ovladač nositelné myši s technologií Bluetooth pro Windows 10 a Linux: 5 kroků
[Nositelná myš] Ovladač nositelné myši s technologií Bluetooth pro Windows 10 a Linux: 5 kroků

Video: [Nositelná myš] Ovladač nositelné myši s technologií Bluetooth pro Windows 10 a Linux: 5 kroků

Video: [Nositelná myš] Ovladač nositelné myši s technologií Bluetooth pro Windows 10 a Linux: 5 kroků
Video: Hrajeme si s VR #2: Virtuální realita - Trocha historie - AlzaTech #236 2024, Červenec
Anonim
Image
Image
Propojovací akcelerometr s Raspberry Pi
Propojovací akcelerometr s Raspberry Pi

Vytvořil jsem ovladač myši na bázi Bluetooth, který lze použít k ovládání ukazatele myši a provádění operací souvisejících s počítačem a myší za běhu, aniž byste se dotkli jakéhokoli povrchu. Elektronické obvody, které jsou zabudované v rukavici, lze použít ke sledování gest rukou pomocí akcelerometru a lze je přeložit do pohybu ukazatele myši. Toto zařízení je také propojeno s tlačítkem, které replikuje kliknutí levým tlačítkem. Zařízení lze připojit sériově k počítači (přes USB) nebo bezdrátově prostřednictvím připojení Bluetooth. Bluetooth poskytuje robustní a univerzální bezdrátovou komunikaci mezi hostitelským zařízením a touto nositelnou myší. Vzhledem k tomu, že Bluetooth je široce dostupný a je součástí téměř všech osobních notebooků, je použití takového nositelného zařízení široké. Pomocí Raspberry Pi, což je běžně používaná vývojová platforma pro různé projekty, je propojení různých senzorů a vývoj takového zařízení snadné a škálovatelné. Rukavici lze vyměnit za jakoukoli jinou nositelnou, aby byla její aplikace širší.

Jako prevence proti COVID-19 je vhodné vyhnout se dotykovým povrchům, které mohou být sdíleny mezi různými lidmi, a mezi tyto běžné povrchy může patřit notebook s dotykovou obrazovkou nebo myš. Použití takového nositelného zařízení pomáhá udržovat hygienu a udržovat běžně používané povrchy dezinfikované:)

Zásoby

  • Raspberry Pi 3 Model B V1.2
  • Trojitý osový akcelerometr SparkFun Breakout - MMA8452Q
  • Propojovací kabel mezi mužem a ženou
  • Rukavice
  • Lepící páska
  • Nůžky
  • Micro-USB kabel
  • Kabel HDMI (pro ladění přes Raspberry Pi)

Krok 1: Propojovací akcelerometr s Raspberry Pi

Propojovací akcelerometr s Raspberry Pi
Propojovací akcelerometr s Raspberry Pi

Použil jsem trojosý akcelerometr MMA8542Q od Sparkfun, který pomocí komunikačního protokolu I2C hovoří s piny GPIO Raspberry Pi a odesílá data os. Tento senzor poskytuje různé provozní režimy s konfigurovatelnou rychlostí přenosu dat, spánkovými režimy, rozsahem zrychlení, režimem filtru atd. Zjistil jsem, že kód od společnosti Pibits je velmi nápomocný při počáteční konfiguraci senzoru a jeho testování pomocí gest rukou. Je lepší nejprve umístit senzor na rovný povrch a provádět deterministické náklony při sledování nezpracovaných hodnot senzoru. To je zvláště užitečné pro pochopení toho, jak tento senzor reaguje různými gesty rukou a jak můžeme pro naši aplikaci nastavit prahové hodnoty. Jakmile je akcelerometr úspěšně propojen, můžete vidět surová data os přicházející na obrazovku terminálu Pi.

Krok 2: Propojovací tlačítko s Raspberry Pi

Propojovací tlačítko s Raspberry Pi
Propojovací tlačítko s Raspberry Pi

V tomto nositelném zařízení jsem propojil tlačítko, které může fungovat jako levé tlačítko myši, abych mohl klikat na ikony na obrazovce. 2 konce tlačítka jsou poté připojeny ke 2 GPIO pinům Pi. Jeden z pinů vydává logické maximum a druhý pin čte tuto hodnotu. Když je tlačítko stisknuto, obvod se uzavře a vstupní pin je schopen přečíst logicky vysokou hodnotu, která je pak zpracována skriptem, který jsem napsal, aby emuloval kliknutí levým tlačítkem myši. Kvůli nedostatku páječky jsem propojovací propojky pomocí tlačítka spojil lepicí páskou.

Krok 3: Vývoj skriptu Python pro sériové ovládání ukazatele myši

K ovládání ukazatele myši jsem použil knihovnu Pyautogui Python. Důvodem použití této knihovny bylo, že funguje na platformě Linux i Windows. Abych mohl ovládat ukazatel myši na svém Raspberry Pi, nejprve jsem připojil svůj Pi k displeji. Potom jsem k ovládání ukazatele myši použil následující API poskytovaná knihovnou:

  1. pyautogui.move (0, 200, 2) # přesune myš o 200 pixelů dolů za 2 sekundy
  2. pyautogui.click () # klikněte myší

Abych odfiltroval chybová data pocházející z akcelerometru, použil jsem průměrování a další metody filtrování, které lze snadno pochopit pomocí přiloženého kódu. API pyautogui.move (0, y) bylo použito takovým způsobem, že ukazatel myši může jít buď nahoru-dolů, nebo vlevo-vpravo najednou. Důvodem je, že akcelerometr hlásí osy ve směru X, Y a Z, ale API bere pouze 2 argumenty, osy X a Y. Tento přístup byl tedy velmi vhodný pro můj akcelerometr a pro mapování gest na obrazovce.

Krok 4: Vývoj skriptu Python pro ovládání ukazatele myši přes Bluetooth

Vývoj skriptu Python pro ovládání ukazatele myši přes Bluetooth
Vývoj skriptu Python pro ovládání ukazatele myši přes Bluetooth

Tato část je pokročilá aplikace, kde jakýkoli notebook s funkcí Bluetooth může komunikovat s Raspberry Pi v komunikačním modelu server-klient a bezdrátově přenášet data souřadnic myši. Abychom mohli nastavit 64bitový notebook se systémem Windows 10 tak, aby umožňoval komunikaci Bluetooth, musíme postupovat podle následujících kroků:

Windows 10:

  1. Vytvořte příchozí port Bluetooth COM.
  2. Spojte Bluetooth Pi a Bluetooth notebooku tím, že ho zjistíte.
  3. Nainstalujte Python na Windows.
  4. Nainstalujte pip na Windows. Pip se používá k instalaci knihoven na počítači se systémem Linux nebo Windows.
  5. Nainstalujte pyautogui na Windows pomocí: pip install pyautogui
  6. Jakmile je na zařízení nainstalován pyautogui, nainstalujte Pybluez na Windows pomocí následujícího příkazu na terminálu Windows pomocí: pip install PyBluez-win10. PyBluez umožňuje komunikaci Bluetooth na počítačích se systémem Windows i Linux.
  7. Abychom mohli vyvíjet aplikaci na notebooku s Windows 10, musíme nainstalovat Microsoft Visual Studio (vyžaduje se 15–20 GB místa) a jeho nástroje pro sestavení. Spolu s PyBluez se proto musíme řídit níže uvedenými pokyny,

    1. Stáhněte a spusťte „Instalační program Visual Studio“:
    2. Nainstalujte „Visual Studio Build Tools 2017“, zaškrtněte „Nástroje pro vytváření Visual C ++“a „Nástroje pro vytváření platformy Universal Windows“

    3. klon git
    4. cd pybluez
    5. instalace python setup.py

  8. Pokud jsou správně dodrženy výše uvedené pokyny, spuštění Pythonu na terminálu Windows a import modulu pyautogui a Bluetooth by měl fungovat bez chyb, jak je vidět na obrázku výše.
  9. V knihovně pybluez nainstalované na počítači se systémem Windows přejděte na: pybluez-master / examples / simple / rfcomm-server.py a spusťte pomocí python rfcomm-server.py. Pokud terminál přejde do stavu čekání bez chyb, přejděte do níže uvedené části pro nastavení Bluetooth na Pi. Pokud se při instalaci pybluez vyskytnou chyby, ladění najdete v části Problémy GitHubu.

Raspbian na Raspberry Pi:

  1. Nainstalujte PyBluez na Pi
  2. Spusťte příklad serveru v systému Windows. Poté na Pi přejděte na pybluez-master / examples / simple / rfcomm-client.py a spusťte. Pokud obě zařízení začala komunikovat, Bluetooth je nyní nastaveno na obou zařízeních. Chcete -li se dozvědět více o tom, jak soketová komunikace funguje s Pythonem, podívejte se na tento odkaz z MIT.

K odeslání dat os z Pi do PC bude nutné provést další analýzu dat, protože data jsou odesílána v bajtech. Další informace o datové komunikaci klienta a serveru najdete v přiloženém kódu.

Krok 5: Vložení akcelerometru a tlačítka na rukavici

Vkládací akcelerometr a tlačítko na rukavici
Vkládací akcelerometr a tlačítko na rukavici
Vkládací akcelerometr a tlačítko na rukavici
Vkládací akcelerometr a tlačítko na rukavici

Jakmile je akcelerometr dobře propojen, vypadá kostrový systém jako první obrázek tohoto kroku.

Protože povrch rukavice není plochý, použil jsem atrapu kreditní karty, která mi každou chvíli přišla do schránky. Podle druhého obrázku v tomto kroku jsem lepicí kreditní kartu připevnil lepicí páskou na horní povrch rukavice. Přes kartu jsem připojil akcelerometr. Toto nastavení bylo dostatečně robustní, aby udrželo můj akcelerometr stabilní a dokázalo přesně sledovat moje gesta.

Doporučuje: