Isi kandungan:

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

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

Video: Menggunakan Papan Sensor Seni Kompleks untuk Mengawal Data Murni Melalui WiFi: 4 Langkah (dengan Gambar)
Video: 3 Bocah Terlindas Truk Saat Selfie Di Atas Motor 2024, November
Anonim
Menggunakan Papan Sensor Seni Kompleks untuk Mengawal Data Murni Melalui WiFi
Menggunakan Papan Sensor Seni Kompleks untuk Mengawal Data Murni Melalui WiFi
Menggunakan Papan Sensor Seni Kompleks untuk Mengawal Data Murni Melalui WiFi
Menggunakan Papan Sensor Seni Kompleks untuk Mengawal Data Murni Melalui WiFi

Adakah anda pernah mahu bereksperimen dengan kawalan isyarat? Buat perkara bergerak dengan gelombang tangan anda? Kawal muzik dengan sentuhan pergelangan tangan anda? Instructable ini akan menunjukkan kepada anda bagaimana!

Kompleks Seni Sensor Kompleks (complexarts.net) adalah mikrokontroler serba boleh berdasarkan KEDAI ESP32. Ia mempunyai semua ciri platform ESP32, termasuk WiFi dan Bluetooth terbina dalam, dan 23 pin GPIO yang boleh dikonfigurasi. Papan Sensor juga dilengkapi dengan BNO_085 IMU - pemproses gerakan 9 DOF yang melakukan persamaan pelekapan dan kuarter sensor onboard, memberikan orientasi super tepat, vektor graviti, dan data pecutan linear. Sensor Board dapat diprogram menggunakan Arduino, MicroPython, atau ESP-IDF, tetapi untuk pelajaran ini kita akan memprogram papan tulis dengan Arduino IDE. Penting untuk diperhatikan bahawa modul ESP32 tidak dapat diprogram secara asli dari Arduino IDE, tetapi menjadikannya mungkin sangat mudah; ada tutorial hebat di sini: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ yang memerlukan masa sekitar 2 minit untuk disiapkan. Persediaan terakhir yang kita perlukan adalah pemacu cip USB-ke-UART di Sensor Board, yang boleh didapati di sini: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-pemacu. Cukup pilih OS dan pasang, yang memerlukan masa sekitar 2 minit lagi. Setelah selesai, kita boleh pergi!

[Pelajaran ini tidak memahami apa-apa dengan Arduino atau Data Murni, namun ia tidak akan merangkumi pemasangannya. Arduino boleh didapati di aduino.cc. Data Murni boleh didapati di puredata.info. Kedua-dua laman web mempunyai arahan yang mudah diikuti untuk pemasangan dan penyediaan.]

Juga … konsep yang diliputi dalam tutorial ini, seperti mengatur sambungan UDP, memprogram ESP32 dengan Arduino, dan bangunan patch Data Murni asas - adalah blok bangunan yang dapat diterapkan untuk projek yang tidak terhitung jumlahnya, jadi jangan berhenti di sini setelah anda menurunkan konsep ini!

Bekalan

1. Dewan Sensor Seni Kompleks

2. Arduino IDE

3. Data Murni

Langkah 1: Meneliti Kod:

Meneliti Kod
Meneliti Kod
Meneliti Kod
Meneliti Kod

Pertama, kita akan melihat kod Arduino. (Sumbernya boleh didapati di https://github.com/ComplexArts/SensorBoardArduino. Sebaiknya ikuti kod semasa kami pergi.) Kami memerlukan beberapa perpustakaan, salah satunya bukan perpustakaan inti Arduino, jadi anda mungkin perlu memasangnya. Projek ini bergantung pada fail SparkFun_BNO080_Arduino_Library.h, jadi jika anda tidak memilikinya, anda perlu pergi ke Sketch -> Include Library -> Manage Libraries. Ketik "bno080" dan perpustakaan yang disebutkan di atas akan muncul. Tekan pasang.

Tiga perpustakaan lain yang digunakan semestinya dilengkapi dengan Arduino secara lalai. Pertama, kami akan menggunakan perpustakaan SPI untuk berkomunikasi dengan BNO. Anda juga boleh menggunakan UART antara ESP32 dan BNO, tetapi kerana SparkFun sudah memiliki perpustakaan yang menggunakan SPI, kami akan tetap menggunakannya. (Terima kasih, SparkFun!) Termasuk fail SPI.h akan membolehkan kita memilih pin dan port mana yang ingin kita gunakan untuk komunikasi SPI.

Perpustakaan WiFi mengandungi fungsi yang membolehkan kita masuk ke rangkaian tanpa wayar. WiFiUDP mengandungi fungsi yang membolehkan kita mengirim dan menerima data melalui rangkaian tersebut. Dua baris seterusnya membawa kami ke rangkaian - masukkan nama dan kata laluan rangkaian anda. Dua baris selepas itu menentukan alamat dan port rangkaian tempat kami menghantar data kami. Dalam kes ini, kami hanya akan menyiarkan, yang bermaksud menghantarnya kepada sesiapa sahaja di rangkaian kami yang sedang mendengar. Nombor port menentukan siapa yang mendengar, seperti yang akan kita lihat sebentar lagi.

Dua baris seterusnya membuat ahli untuk kelas masing-masing supaya kita dapat mengakses fungsinya dengan mudah kemudian.

Seterusnya, kami memberikan pin ESP yang betul pada pin masing-masing di BNO.

Sekarang kami menyediakan ahli kelas SPI, juga menetapkan kelajuan port SPI.

Akhirnya kita sampai ke fungsi persediaan. Di sini, kita akan memulakan port bersiri sehingga kita dapat memantau output kita dengan cara itu jika kita mahu. Kemudian kami memulakan WiFi. Perhatikan bahawa program menunggu sambungan WiFi sebelum meneruskan. Setelah WiFi disambungkan, kami memulakan sambungan UDP, kemudian mencetak nama rangkaian dan alamat IP kami ke monitor bersiri. Selepas itu kami memulakan port SPI dan memeriksa komunikasi antara ESP dan BNO. Terakhir, kami memanggil fungsi "allowRotationVector (50);" kerana kita hanya akan menggunakan vektor putaran untuk pelajaran ini.

Langkah 2: Selebihnya Kod…

Selebihnya Kod…
Selebihnya Kod…

Sebelum kita pergi ke gelung utama (), kita mempunyai fungsi yang disebut "mapFloat."

Ini adalah fungsi khusus yang telah kami tambahkan untuk memetakan, atau skala, nilai ke nilai lain. Fungsi peta bawaan di Arduino hanya memungkinkan pemetaan bilangan bulat, tetapi semua nilai awal kami dari BNO akan berada di antara -1 dan 1, jadi kami harus menskalakannya secara manual ke nilai yang kami inginkan. Jangan risau, berikut adalah fungsi mudah untuk melakukan itu:

Sekarang kita sampai ke gelung utama (). Perkara pertama yang anda perhatikan adalah fungsi penyekat yang lain, seperti yang menjadikan program menunggu sambungan rangkaian. Yang ini berhenti sehingga ada data dari BNO. Ketika kita mulai menerima data tersebut, kita menetapkan nilai kuaternion masuk ke variabel floating point dan mencetak data tersebut ke monitor bersiri.

Sekarang kita perlu memetakan nilai-nilai tersebut.

[Satu kata mengenai komunikasi UDP: data dipindahkan melalui UDP dalam paket 8-bit, atau nilai dari 0-255. Apa sahaja yang melebihi 255 akan diturunkan ke paket berikutnya, menambah nilainya. Oleh itu, kita perlu memastikan tidak ada nilai melebihi 255.]

Seperti yang telah disebutkan sebelumnya, kita memiliki nilai masuk dalam kisaran -1 - 1. Ini tidak memberi kita banyak pekerjaan, kerana apa-apa di bawah 0 akan dipotong (atau muncul sebagai 0) dan kita tidak dapat melakukannya satu ton dengan nilai antara 0 - 1. Pertama-tama kita harus menyatakan pemboleh ubah baru untuk menahan nilai yang dipetakan, kemudian kita mengambil pemboleh ubah awal itu dan memetakannya dari -1 - 1 hingga 0 - 255, memberikan hasilnya ke pemboleh ubah baru kita yang disebut Nx.

Sekarang kita mempunyai data yang dipetakan, kita dapat mengumpulkan paket kita. Untuk melakukan itu, kita mesti menyatakan penyangga untuk data paket, memberikan ukuran [50] untuk memastikan semua data akan sesuai. Kami kemudian memulakan paket dengan alamat dan port yang kami nyatakan di atas, tulis buffer kami dan 3 nilai ke paket, kemudian akhiri paket.

Terakhir, kami mencetak koordinat yang dipetakan ke monitor bersiri. Sekarang kod Arduino sudah selesai! Kilat kod tersebut ke Papan Sensor dan periksa monitor bersiri untuk memastikan semuanya berfungsi seperti yang diharapkan. Anda harus melihat nilai kuarterion dan juga nilai yang dipetakan.

Langkah 3: Menghubungkan Dengan Data Murni …

Menghubungkan Dengan Data Tulen…
Menghubungkan Dengan Data Tulen…

Sekarang untuk Data Murni! Buka Data Murni dan mulakan tambalan baru (ctrl n). Tambalan yang akan kami buat sangat mudah, hanya mempunyai tujuh objek. Yang pertama yang 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]; the -u menentukan UDP, -b menentukan binari, dan 7401 tentu saja port yang sedang kita dengarkan. Anda juga dapat mengirim pesan "dengar 7401" ke [netreceive] untuk menentukan port anda.

Setelah data masuk, kita perlu membongkarnya. Sekiranya kita menyambungkan objek [cetak] ke [netrecieve], kita dapat melihat data pada awalnya datang kepada kita sebagai aliran nombor, tetapi kita ingin menguraikan nombor tersebut dan menggunakan masing-masing untuk sesuatu yang berbeza. Sebagai contoh, anda mungkin mahu menggunakan putaran paksi-X untuk mengawal nada pengayun, dan paksi-Y untuk isipadu, atau sebilangan besar kemungkinan lain. Untuk melakukan itu, aliran data melalui objek [bongkar] yang mempunyai tiga apungan (f f f) adalah argumennya.

Sekarang anda berada sejauh ini, dunia adalah tiram anda! Anda mempunyai alat kawalan tanpa wayar yang boleh anda gunakan untuk memanipulasi apa sahaja yang anda mahukan di alam semesta Data Murni. Tetapi berhenti di sana! Selain Rotation Vector, cubalah pecutan atau magnetometer. Cuba gunakan fungsi khas BNO seperti "double tap" atau "goyang". Yang diperlukan hanyalah menggali manual pengguna (atau Instructable seterusnya …).

Langkah 4:

Apa yang telah kami lakukan di atas adalah mengatur komunikasi antara Sensor Board dan Pure Data. Sekiranya anda ingin mula bersenang-senang, sambungkan output data anda ke beberapa pengayun! Main dengan kawalan kelantangan! Mungkin mengawal beberapa masa kelewatan atau berkumandang! dunia adalah tiram anda!

Disyorkan: