Bagaimana saya menghubungkan Wii-nunchak ke HoloLens, atau mengapa tombol virtual perlu tombol nyata

Awas, Pokemon, sekarang aku memanggil semua orang!

Seluruh tim kami sedang menunggu pengiriman HoloLens yang telah lama ditunggu-tunggu, harus dipesan melalui kenalan di seberang lautan dan terus mengepalkan tangan agar bea cukai tidak tertarik pada WiFi yang belum disertifikasi untuk Eropa. Akhirnya, pada awal September, kasus oval yang berharga datang kepada kami. Kami membuka, mengisi daya, memasang kepala - inilah mereka, pintu gerbang ke dunia virtual. Benar, mereka meminta izin di gerbang - Anda harus masuk dengan kata sandi dari Microsoft. Ya, ya, dengan demikian, panjang kriptografis, dengan karakter khusus dan register berbeda. Sementara perintis dunia maya kami, mencubit udara dengan gerakan ketukan udara, mengetik sesuatu seperti Opa pada keyboard yang mengambang di ruang angkasa, opa # 00FF00 ograd @!, Sisanya memiliki waktu untuk berpikir tentang bagaimana kami akan mengelola 3D ini.

Masalah


Di desktop, dan dengan beberapa pemesanan pada tablet dan ponsel, kami memiliki dua jenis perangkat input. Mouse - Anda dapat menentukan satu juta piksel. Cepat tapi tidak akurat. Keyboard - tekan satu atau lebih tombol dari bermacam-macam yang lebih kecil (<100), tetapi ia bekerja dengan sangat andal dan bahkan secara membabi buta. Tombol khusus seperti Escape ditekan hampir tanpa kesalahan, Anda tidak akan bingung.

Dalam HoloLens, analog mouse adalah titik kursor yang tergantung di depan hidung. Sedikit air-tap tidak semudah mengklik tombol mouse, tetapi pengontrol Clicker satu tombol yang terpasang membantu. Sangat mudah untuk memilih tombol yang diproyeksikan yang diinginkan dan memberikan perintah "mari kita pergi," tetapi ada masalah serius dengan membatalkan tindakan - Escape sangat kurang. Sebagai contoh, di Galaxy Explorer mudah untuk menunjukkan planet ini dan memanggil informasi rinci, tetapi upaya untuk kembali ke peta galaksi atau hanya mengubah skala sangat menyerupai tarian dengan rebana, terutama jika Anda melihat orang dengan kacamata dari samping.

Microsoft merekomendasikan untuk memberikan perintah suara melalui Cortana, tetapi apakah Anda sudah mencoba melakukan ini dengan setidaknya lima di ruangan yang sama? Hello Cubes dan Open Space. Ketika digunakan dengan konveyor yang berfungsi, seperti dalam kasus kami, noise eksternal mengganggu. Selain itu, melihat layar, pengguna segera melihat tombol dan hyperlink yang tersedia dengan mouse, dan pada keyboard fisik Anda bahkan dapat menyentuh pilihan yang mungkin. Tapi di sini ada mikrofon di depan saya, bagaimana, melihatnya, untuk memahami perintah mana yang didukung? Tidak jelas bahkan bahasa apa yang digunakan untuk berbicara dengannya, belum lagi fakta bahwa tim kami internasional dan bahasa ibu kami dan semua orang memiliki pengucapannya sendiri.

Masalah Antarmuka Suara


Ide


Maka lahirlah ide untuk mengencangkan Wii ke HoloLens nunchak. Dua tombol perangkat keras berkualitas tinggi dengan anti-bouncing, joystick, plus, di masa depan, kemampuan untuk menggunakan accelerometer. Perangkat ini kompak, mobile, tahan lama dan murah. Selain itu, Wii remote diakui oleh Bluetooth sebagai perangkat input HID, apa yang bisa lebih sederhana?

Di sini kekecewaan pertama ditunggu - untuk menghubungkan controller dari Nintendo meminta PIN, yang merupakan alamat perangkat yang direkam sebaliknya. Sebagai contoh, controller saya memiliki alamat 00: 1E: A9: 5D: A6: BC dan saya perlu memasukkan 5 karakter dengan kode BC, A6,5D, A9,1E, dan pada akhir 00. Mungkin seseorang Saya beruntung dengan alamat controller, tetapi saya memiliki semua alamat yang tersedia dalam kisaran karakter yang tidak patut dicetak.

Nunchak menyediakan data pada bus I2C dan mudah untuk menginterogasi keadaan tombol dan akselerometer dari mikrokontroler. Saya memutuskan untuk mentransfer data ke HoloLens melalui Bluefruit EZ-Key - ini adalah pengontrol keyboard HID yang sudah jadi yang dapat mengirim kombinasi sewenang-wenang hingga 6 tombol yang ditekan secara bersamaan.

Arsitektur yang dihasilkan adalah:



Arduino, bagaimana Anda bisa melakukannya tanpa dia


Logika minimum diperlukan dari mikrokontroler - baca sendiri data dari I2C, dan kirim kode HID USB yang sesuai dari tabel . Ada perpustakaan siap pakai untuk Arduino untuk membaca, dan saya mengambilnya, khususnya pilihan jatuh pada miniatur Arduino Pro Mini pada 8MHz dengan tegangan 3,3 V. Kami tidak memiliki produksi massal dan prototipe akan menelan biaya $ 10, bahkan jika dengan karya yang sama mikrokontroler akan mengatasi beberapa sen.

Kami merakit prototipe di papan tempat memotong roti, meluncurkannya di HoloLens Internet Explorer sebagai pengganti paling sederhana untuk Notepad dan ... tepuk tangan! Menghasilkan! Ketika Anda mengklik tombol di bilah alamat dari surat browser muncul!



Benjolan com pertama


Ketika men-debug kode untuk Arduino, ia menginjak penggaruk - tanpa diduga, Bluefruit berhenti mengirim kode, meskipun Bluetooth baik-baik saja dan perangkat itu masih terdeteksi oleh HoloLens sebagai keyboard. Mini Arduino diprogram dengan kabel FTDI atau Arduino lain, dan pada saat prototipe dirancang ulang, Bluefruit tidak diberdayakan. Arduino, bagaimanapun, menerima arus dari komputer melalui kabel programmer, dan program yang dimulai dengan jujur ​​mengirimkan kode tombol. 3.3 volt diterapkan pada input papan de-energized membakar input RX-pin dari antarmuka serial di sisi modul Bluetooth. Lagi pula, saya pernah membaca artikel tentang Easyelectronics mengapa tidak mungkin melakukan ini !

Untungnya, setelah mengganti Bluefruit dengan yang baru, rasanya seperti jarum jam. Diagram koneksi sangat sederhana - tidak ada elemen aktif, Anda hanya perlu menghubungkan pin satu sama lain.



Saya meninggalkan kabel nunchak untuk listrik dan menyolder steker USB-A. Stabilizer Arduino mengubah 5 volt dari USB ke 3.3, yang memberi makan logika nunchak dan Bluefruit EZ-Key. Di ujung kabel ada tombol Pair dari Bluetooth. Tidak seperti biasanya, sesuai dengan instruksi, tombol ini harus terhubung ke power bus, dan tidak ke ground, seperti semua tombol lain pada Bluefruit.

Pemrograman dan perakitan


Program yang dijalankan pada Arduino sangat sederhana - untuk menginterogasi tombol yang ditekan 20 kali per detik, memasukkan kode HID USB ke buffer (beberapa klik dimungkinkan pada saat bersamaan) dan mengirimkannya melalui antarmuka serial ke modul Bluetooth. Satu-satunya fitur adalah penting untuk secara tepat menentukan tipe Arduino di IDE. Model saya bekerja pada 8 MHz, dan tidak pada standar 16 untuk Arduino, jadi pada awalnya antarmuka serial bekerja dengan kecepatan setengah dan memberikan data pada 4800 baud, bukannya 9200 yang diharapkan.

Pengaturan yang benar

Semua sumber dan file lainnya diletakkan di bawah lisensi MIT untuk GitHub .

Arduino Mini dan Bluefroot memiliki ukuran yang sama, dan untuk kekompakan saya menyoldernya bersama di sini dalam sandwich seperti:


Untuk isolasi di antara papan, insert berbentuk U yang terbuat dari plastik dibuat, juga melindungi layar modul Bluetooth agar tidak terjepit. Setelah memotong kabelnya, ia menyolder ke logika nunchak.


Secara umum, desain yang agak kompak diperoleh, bahkan muat di dalam kasing asli. Yang harus saya lakukan adalah memotong beberapa pengaku.


Seluruh struktur selesai. Di ujung kabel ada colokan listrik dan tombol koneksi Bluetooth.


Persatuan


Dari sudut pandang HoloLens, controller saya adalah keyboard sederhana yang dukungannya telah dibangun sejak awal waktu. Tidak ada dependensi eksternal atau perpustakaan pihak ketiga yang diperlukan.

Arah joystick berubah menjadi ASDW, tombol "Z" untuk Enter, dan "C" untuk Escape.

if (UnityEngine.Input.GetKey(KeyCode.A))
{
    // Joystick left
    ...
}

if (UnityEngine.Input.GetKey(KeyCode.D))
{
    // Joystick right
    ...
}

Kode seperti itu sangat nyaman untuk di-debug dengan menjalankan emulator HoloLens di desktop, Anda cukup menekan tombol-tombol pada keyboard dan, dari sudut pandang aplikasi, tidak ada perbedaan.

Hasilnya adalah ini:



Video diambil langsung dari kacamata melalui fungsi Tangkapan Realitas Campuran bawaan. Kode sumber untuk demo juga ada di Github.

Apa selanjutnya


Power Bank mudah dimasukkan ke saku Anda dan daya USB tidak secara signifikan mengurangi mobilitas, tetapi Anda menginginkan perangkat yang sepenuhnya otonom. Saya sedang berpikir untuk mengacaukan stoples 18650 lithium-ion dan pengontrol pengisian USB Mikro. Setiap voltase dari 3,3 hingga 8 volt dapat disuplai ke Arduino, jadi tidak diperlukan stabilisasi tambahan. Sayangnya, baterai tidak lagi sesuai dengan aslinya, Anda harus mencetak sendiri pada printer 3D.

Pengisi daya

Ada juga accelerometer di nunchuck, yang belum saya gunakan. Pada prinsipnya, ini dapat digunakan untuk mensimulasikan mouse, tetapi kami belum menemukan cara menggunakannya dengan cerdas. Direncanakan untuk menggunakan Hololens tidak duduk di meja di kantor yang tenang, tetapi di perjalanan dan di gudang yang bising. Pengguna tidak akan dapat memegang tangannya secara horizontal, memiringkan controller dengan gerakan yang tepat, tetapi penekanan tombol yang dapat dikenali adalah masalahnya.

Mungkin seseorang yang cerdik akan menciptakan sistem perintah dan gerakan yang cocok untuk kacamata, tetapi sejauh ini mengelola keyboard dan mouse adalah sesuatu yang dimengerti pengguna dan pengembang pandai pemrograman.

Di forum dukungan, orang membutuhkan gerakan dan kacamata baru , mari kita lihat apa lagi yang diciptakan Microsoft.

Source: https://habr.com/ru/post/id397813/


All Articles