Daftar Isi:

Menggunakan Papan Sensor Seni Kompleks untuk Mengontrol Data Murni Melalui WiFi: 4 Langkah (dengan Gambar)
Menggunakan Papan Sensor Seni Kompleks untuk Mengontrol Data Murni Melalui WiFi: 4 Langkah (dengan Gambar)

Video: Menggunakan Papan Sensor Seni Kompleks untuk Mengontrol Data Murni Melalui WiFi: 4 Langkah (dengan Gambar)

Video: Menggunakan Papan Sensor Seni Kompleks untuk Mengontrol Data Murni Melalui WiFi: 4 Langkah (dengan Gambar)
Video: Ngeri! Bedanya tentara luar negeri dan tentara indonesia ketika latihan 2024, November
Anonim
Menggunakan Papan Sensor Seni Kompleks untuk Mengontrol Data Murni Melalui WiFi
Menggunakan Papan Sensor Seni Kompleks untuk Mengontrol Data Murni Melalui WiFi
Menggunakan Papan Sensor Seni Kompleks untuk Mengontrol Data Murni Melalui WiFi
Menggunakan Papan Sensor Seni Kompleks untuk Mengontrol Data Murni Melalui WiFi

Pernahkah Anda ingin bereksperimen dengan kontrol gestur? Membuat benda bergerak dengan lambaian tangan? Kontrol musik dengan memutar pergelangan tangan Anda? Instruksi ini akan menunjukkan caranya!

Kompleks Seni Sensor Board (complexarts.net) adalah mikrokontroler serbaguna berdasarkan WROOM ESP32. Ini memiliki semua fitur platform ESP32, termasuk WiFi dan Bluetooth bawaan, dan 23 pin GPIO yang dapat dikonfigurasi. Sensor Board juga dilengkapi dengan BNO_085 IMU – prosesor gerak 9 DOF yang melakukan fusi sensor onboard dan persamaan quaternion, memberikan orientasi super presisi, vektor gravitasi, dan data percepatan linier. Papan Sensor dapat diprogram menggunakan Arduino, MicroPython, atau ESP-IDF, tetapi untuk pelajaran ini kita akan memprogram papan dengan Arduino IDE. Penting untuk dicatat bahwa modul ESP32 tidak dapat diprogram secara native dari Arduino IDE, tetapi memungkinkannya sangat sederhana; ada tutorial yang bagus di sini: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ yang akan memakan waktu sekitar 2 menit untuk menyelesaikannya. Bagian terakhir dari pengaturan yang kita butuhkan adalah driver untuk chip USB-to-UART pada Sensor Board, yang dapat ditemukan di sini: https://www.silabs.com/products/development-tools/software/usb-to -uart-jembatan-vcp-driver. Pilih saja OS Anda dan instal, yang akan memakan waktu sekitar 2 menit lagi. Setelah selesai, kami siap berangkat!

[Pelajaran ini tidak mengasumsikan keakraban dengan Arduino atau Data Murni, namun tidak akan mencakup instalasi mereka. Arduino dapat ditemukan di aduino.cc. Data Murni dapat ditemukan di puredata.info. Kedua situs memiliki instruksi yang mudah diikuti untuk instalasi dan pengaturan.]

Juga… konsep yang tercakup dalam tutorial ini, seperti menyiapkan koneksi UDP, memprogram ESP32 dengan Arduino, dan pembuatan patch Data Murni dasar - adalah blok penyusun yang dapat diterapkan untuk proyek yang tak terhitung jumlahnya, jadi jangan berhenti di sini setelah Anda selesai turunkan konsep-konsep ini!

Perlengkapan

1. Papan Sensor Seni Kompleks

2. Arduino IDE

3. Data Murni

Langkah 1: Memeriksa Kode:

Memeriksa Kode
Memeriksa Kode
Memeriksa Kode
Memeriksa Kode

Pertama, kita akan melihat kode Arduino. (Sumbernya tersedia di https://github.com/ComplexArts/SensorBoardArduino. Disarankan agar Anda mengikuti kode saat kami melanjutkan.) Kami membutuhkan beberapa pustaka, salah satunya bukan pustaka inti Arduino, jadi Anda mungkin perlu menginstalnya. Proyek ini bergantung pada file SparkFun_BNO080_Arduino_Library.h, jadi jika Anda tidak memilikinya, Anda harus membuka Sketch -> Include Library -> Manage Libraries. Ketik "bno080" dan perpustakaan yang disebutkan di atas akan muncul. Tekan instal.

Tiga perpustakaan lain yang digunakan harus disertakan dengan Arduino secara default. Pertama, kita akan menggunakan perpustakaan SPI untuk berkomunikasi dengan BNO. Dimungkinkan juga untuk menggunakan UART antara ESP32 dan BNO, tetapi karena SparkFun sudah memiliki perpustakaan yang menggunakan SPI, kami akan tetap menggunakannya. (Terima kasih, SparkFun!) Menyertakan file SPI.h akan memungkinkan kita untuk memilih pin dan port mana yang ingin kita gunakan untuk komunikasi SPI.

Pustaka WiFi berisi fungsi-fungsi yang memungkinkan kita masuk ke jaringan nirkabel. WiFiUDP berisi fungsi yang memungkinkan kita mengirim dan menerima data melalui jaringan itu. Dua baris berikutnya membawa kami ke jaringan – masukkan nama jaringan dan kata sandi Anda. Dua baris setelah itu menentukan alamat jaringan dan port tempat kami mengirim data. Dalam hal ini, kami hanya akan menyiarkan, yang berarti mengirimkannya ke siapa saja di jaringan kami yang mendengarkan. Nomor port menentukan siapa yang mendengarkan, seperti yang akan kita lihat sebentar lagi.

Dua baris berikutnya ini membuat anggota untuk kelasnya masing-masing sehingga kita dapat dengan mudah mengakses fungsinya nanti.

Selanjutnya, kami menetapkan pin yang tepat dari ESP ke masing-masing pin pada BNO.

Sekarang kita mengatur anggota kelas SPI, juga mengatur kecepatan port SPI.

Akhirnya kita sampai ke fungsi setup. Di sini, kami akan memulai port serial sehingga kami dapat memantau output kami seperti itu jika kami mau. Kemudian kita mulai WiFi. Perhatikan bahwa program menunggu koneksi WiFi sebelum melanjutkan. Setelah WiFi terhubung, kami memulai koneksi UDP, kemudian mencetak nama jaringan dan alamat IP kami ke monitor serial. Setelah itu kita memulai port SPI dan memeriksa komunikasi antara ESP dan BNO. Terakhir, kita memanggil fungsi “enableRotationVector(50);” karena kita hanya akan menggunakan vektor rotasi untuk pelajaran ini.

Langkah 2: Sisa Kode…

Sisa Kode…
Sisa Kode…

Sebelum kita pergi ke loop utama(), kita memiliki fungsi yang disebut “mapFloat.”

Ini adalah fungsi kustom yang telah kami tambahkan untuk memetakan, atau menskalakan, nilai ke nilai lain. Fungsi peta bawaan di Arduino hanya memungkinkan pemetaan bilangan bulat, tetapi semua nilai awal kita dari BNO akan berada di antara -1 dan 1, jadi kita harus menskalakannya secara manual ke nilai yang benar-benar kita inginkan. Namun jangan khawatir – inilah fungsi sederhana untuk melakukan hal itu:

Sekarang kita sampai pada loop utama(). Hal pertama yang akan Anda perhatikan adalah fungsi pemblokiran lain, seperti yang membuat program menunggu koneksi jaringan. Yang ini berhenti sampai ada data dari BNO. Saat kami mulai menerima data itu, kami menetapkan nilai quaternion yang masuk ke variabel floating point dan mencetak data itu ke monitor serial.

Sekarang kita perlu memetakan nilai-nilai itu.

[Sepatah kata tentang komunikasi UDP: data ditransfer melalui UDP dalam paket 8-bit, atau nilai dari 0-255. Apa pun lebih dari 255 akan didorong ke paket berikutnya, menambah nilainya. Oleh karena itu, kita perlu memastikan tidak ada nilai lebih dari 255.]

Seperti yang disebutkan sebelumnya, kami memiliki nilai yang masuk dalam kisaran -1 – 1. Ini tidak memberi kami banyak hal untuk dikerjakan, karena apa pun di bawah 0 akan dipotong (atau ditampilkan sebagai 0) dan kami tidak dapat melakukannya satu ton dengan nilai antara 0 – 1. Pertama-tama kita harus mendeklarasikan variabel baru untuk menyimpan nilai yang dipetakan, kemudian kita mengambil variabel awal itu dan memetakannya dari -1 – 1 hingga 0 – 255, menugaskan hasilnya ke variabel baru kita yang disebut Nx.

Sekarang setelah kami memiliki data yang dipetakan, kami dapat menggabungkan paket kami. Untuk melakukan itu, kita harus mendeklarasikan buffer untuk data paket, memberinya ukuran [50] untuk memastikan semua data cocok. Kami kemudian memulai paket dengan alamat dan port yang kami tentukan di atas, tulis buffer kami dan 3 nilai ke paket, lalu akhiri paket.

Terakhir, kami mencetak koordinat yang dipetakan ke monitor serial. Sekarang kode Arduino selesai! Flash kode ke Sensor Board dan periksa monitor serial untuk memastikan semuanya berfungsi seperti yang diharapkan. Anda akan melihat nilai quaternion serta nilai yang dipetakan.

Langkah 3: Menghubungkan Dengan Data Murni…

Menghubungkan Dengan Data Murni…
Menghubungkan Dengan Data Murni…

Sekarang untuk Data Murni! Buka Data Murni dan mulai patch baru (ctrl n). Patch yang akan kita buat sangat sederhana, hanya memiliki tujuh objek. Yang pertama akan kita buat adalah objek [netreceive]. Ini adalah roti dan mentega dari patch kami, menangani semua komunikasi UDP. Perhatikan ada tiga argumen untuk objek [netreceive]; -u menentukan UDP, -b menentukan biner, dan 7401 tentu saja adalah port yang kita dengarkan. Anda juga dapat mengirim pesan “listen 7401” ke [netreceive] untuk menentukan port Anda.

Setelah kami memiliki data yang masuk, kami perlu membongkarnya. Jika kita menghubungkan objek [print] ke [netrecieve], kita dapat melihat data awalnya datang kepada kita sebagai aliran angka, tetapi kita ingin menguraikan angka-angka itu dan menggunakan masing-masing untuk sesuatu yang berbeda. Misalnya, Anda mungkin ingin menggunakan rotasi sumbu X untuk mengontrol nada osilator, dan sumbu Y untuk volume, atau sejumlah kemungkinan lainnya. Untuk melakukan itu, aliran data melewati objek [membongkar] yang memiliki tiga pelampung (f f f) adalah argumennya.

Sekarang setelah Anda sejauh ini, dunia adalah tiram Anda! Anda memiliki pengontrol nirkabel yang dapat Anda gunakan untuk memanipulasi apa pun yang Anda inginkan di alam semesta Data Murni. Tapi berhenti di situ! Selain Rotation Vector, coba accelerometer atau magnetometer. Coba gunakan fungsi khusus BNO seperti “double tap” atau “shake”. Yang diperlukan hanyalah sedikit menggali manual pengguna (atau Instruksi berikutnya…).

Langkah 4:

Apa yang telah kami lakukan di atas adalah mengatur komunikasi antara Papan Sensor dan Data Murni. Jika Anda ingin mulai bersenang-senang, hubungkan output data Anda ke beberapa osilator! Mainkan dengan kontrol volume! Mungkin mengontrol beberapa waktu tunda atau reverb! dunia adalah tirammu!

Direkomendasikan: