
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:00

Konteks:
Saya membina untuk bersenang-senang sebuah robot yang saya mahu bergerak secara autonomi di dalam sebuah rumah.
Ini adalah kerja yang panjang dan saya melakukan langkah demi langkah.
Saya telah menerbitkan 2 arahan untuk topik itu:
- satu mengenai membuat pengekod roda
- satu mengenai sambungan wifi
Robot saya dipacu oleh 2 motor DC dengan bantuan pengekod roda buatan rumah saya.
Saya sedang meningkatkan kawalan bergerak dan telah meluangkan masa dengan giroskop, akselerometer dan IMU. Saya ingin berkongsi pengalaman ini.
Anda ingin mengetahui lebih lanjut mengenai penyetempatan? Berikut adalah artikel mengenai cara menggabungkan kecerdasan buatan dan ultrasound untuk melokalkan robot
Langkah 1: Mengapa Menggunakan Unit Pengukuran Inersia?

Oleh itu, mengapa saya menggunakan IMU?
Sebab pertama ialah jika pengekod roda cukup tepat untuk mengawal pergerakan lurus, walaupun selepas menyetel, saya tidak dapat memperoleh ketepatan untuk putaran kurang dari + - 5 degres dan itu tidak mencukupi.
Oleh itu, saya mencuba 2 sensor yang berbeza. Pertama saya menggunakan magnetometer (LSM303D). Prinsipnya sederhana: sebelum putaran mendapatkan orientasi utara, hitung sasaran dan sesuaikan gerakan hingga target tercapai. Ia sedikit lebih baik daripada dengan pengekod tetapi dengan terlalu banyak penyebaran. Selepas itu saya cuba menggunakan giroskop (L3GD20). Prinsipnya hanyalah untuk menggabungkan kecepatan putaran yang diberikan oleh sensor untuk menghitung putaran. Dan ia berfungsi dengan baik. Saya dapat mengawal putaran pada + - 1 degre.
Walaupun begitu, saya ingin sekali mencuba beberapa IMU. Saya memilih komponen BNO055. Saya meluangkan masa untuk memahami dan menguji IMU ini. Pada akhirnya saya memutuskan untuk memilih sensor ini atas alasan berikut
- Saya dapat mengawal putaran dan juga dengan L3GD20
- Saya dapat mengesan putaran sedikit ketika bergerak lurus
- Saya perlu mendapatkan arah utara untuk penyetempatan robot dan penentukuran kompas BNO055 sangat mudah
Langkah 2: Bagaimana Menggunakan BNO055 untuk Penyetempatan 2D?

BNO055 IMU adalah sensor pintar paksi 9 Bosch yang dapat memberikan orientasi mutlak.
Lembar data menyediakan dokumentasi lengkap. Ini adalah komponen berteknologi tinggi, ia adalah produk yang agak rumit dan saya menghabiskan beberapa jam untuk belajar bagaimana ia berfungsi dan mencuba pelbagai cara menggunakannya.
Saya rasa sangat berguna untuk berkongsi pengalaman ini.
Mula-mula saya menggunakan perpustakaan Adafruit yang menyediakan alat yang baik untuk menentukur dan menemui sensor.
Pada akhir dan setelah banyak ujian saya memutuskan untuk
- gunakan perpustakaan Adafruit untuk menyimpan penentukuran sahaja
- gunakan 3 daripada semua kemungkinan mod BNO055 (NDOF, IMU, Compss)
- dedikasikan Arduino Nano untuk menghitung penyetempatan berdasarkan kaedah BNO055
Langkah 3: Titik Perkakasan Vue



BNO055 adalah komponen I2C. Oleh itu, ia memerlukan bekalan kuasa, SDA dan SCL untuk berkomunikasi.
Cukup jaga voltan Vdd mengikut produk yang anda beli. Cip Bosch berfungsi dalam julat: 2.4V hingga 3.6V dan anda boleh menemui komponen 3.3v dan 5v.
Tidak ada kesukaran untuk menghubungkan Nano dan BNO055.
- BNO055 dikuasakan oleh Nano
- SDA & SCL disambungkan dengan perintang tarik 2 x 2k.
- 3 LED disambungkan ke Nano untuk diagnosis (dengan perintang)
- 2 penyambung digunakan untuk menentukan mod selepas boot
- 1 penyambung ke arah BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 penyambung ke arah Robot / Mega (+ 9V, Gnd, sda, Scl, Pin11, Pin12)
Sedikit pematerian dan itu sahaja!
Langkah 4: Bagaimana Ia Berfungsi?

Dari sudut komunikasi vue:
- Nano adalah ketua bas I2C
- Robot / Mega dan BNO055 adalah hamba I2C
- Nano membaca daftar BNO055 secara kekal
- Robot / Mega menaikkan isyarat angka untuk meminta kata dari Nano
Dari titik pengiraan vue: Nano digabungkan dengan BNO055 memberikan
- Tajuk kompas (digunakan untuk penyetempatan)
- Tajuk relatif (digunakan untuk mengawal putaran)
- Tajuk dan kedudukan mutlak (digunakan untuk mengawal pergerakan)
Dari sudut fungsional: The Nano:
- menguruskan penentukuran BNO055
- menguruskan parameter dan perintah BNO055
Subsistem Nano & BNO055:
- hitung untuk setiap roda roda arah dan penyetempatan mutlak (dengan faktor skala)
- hitung tajuk relatif semasa putaran robot
Langkah 5: Senibina dan Perisian

Perisian utama dijalankan di Arduino Nano
- Senibina berdasarkan komunikasi I2C.
- Saya memilih untuk mendedikasikan Nano kerana Atmega yang menjalankan robot agak dimuat dan seni bina ini menjadikannya paling mudah digunakan semula di tempat lain.
- Nano membaca daftar BNO055, menghitung dan menyimpan tajuk dan penyetempatan dalam daftarnya sendiri.
- Arduino Atmega yang menjalankan kod robot, mengirimkan maklumat pengekod roda ke Nano dan membaca tajuk dan penyetempatan di dalam daftar Nano.
Terdapat kod subsistem (Nano) yang terdapat di GitHub di sini
Alat penentukuran Adafruit jika ada di GitHub (penentukuran akan disimpan di eeproom)
Langkah 6: Apa yang Saya Pelajari?
Mengenai I2C
Mula-mula saya cuba mempunyai 2 tuan (Arduino) dan 1 hamba (sensor) di bas yang sama tetapi pada akhirnya mungkin dan paling mudah untuk menetapkan hanya Nano sebagai master dan menggunakan sambungan GPIO antara 2 Arduino untuk "meminta token".
Mengenai BNO055 untuk orientasi 2D
Saya dapat menumpukan perhatian pada 3 mod berjalan yang berlainan: NDOF (giroskop gabungan, akselerometer dan Kompas) ketika robot tidak aktif, IMU (giroskop gabungan, akselerometer) ketika robot bergerak dan Kompas semasa fasa penyetempatan. Beralih antara mod ini mudah dan pantas.
Untuk mengurangkan saiz kod dan memastikan kemungkinan menggunakan gangguan BNO055 untuk mengesan perlanggaran, saya lebih suka tidak menggunakan perpustakaan Adafruit dan melakukannya sendiri.
Disyorkan:
Unit Bunyi untuk Mainan Buatan Awal Menggunakan Pemain MP3 Mini DFplayer: 4 Langkah

Unit Bunyi untuk Mainan Buatan Awal Menggunakan Pemain MP3 Mini DFplayer: Selamat datang di " ible " # 35. Adakah anda ingin membuat unit suara yang boleh anda gunakan dengan cara yang berbeza, memuat naik bunyi yang anda mahukan untuk mainan yang dibina dengan calar anda, dalam beberapa saat? Berikut adalah tutorial yang menerangkan cara melakukannya, menggunakan D
Cara Mengubah Amp Tube Guitar Menjadi Unit Preamp / distorsi (dengan Load Box): 6 Langkah

Cara Mengubah Amp Tube Guitar Menjadi Unit Preamp / distorsi (dengan Load Box): Hai semua !!! Ini adalah Instructables pertama saya, saya akan menerangkan kepada anda cara mengubah sedikit gitar Tube menjadi unit / pedal preamp, dengan kotak beban; Bahasa Perancis dan bahasa Inggeris saya terhad, jadi jika saya melakukan kesilapan, maafkan saya !! :) Saya TIDAK MENGIKTIRAF
ARUPI - Unit Rakaman Automatik Kos Rendah / Unit Rakaman Autonomi (ARU) untuk Ahli Ekologi Soundscape: 8 Langkah (dengan Gambar)

ARUPI - Unit Rakaman Automatik Kos Rendah / Unit Rakaman Autonomi (ARU) untuk Ahli Ekologi Soundscape: Arahan ini ditulis oleh Anthony Turner. Projek ini dibangunkan dengan banyak bantuan dari Shed in the School of Computing, University of Kent (Mr Daniel Knox sangat membantu!). Ia akan menunjukkan kepada anda bagaimana membina Rakaman Audio Automatik U
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: 4 Langkah

Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: Kami akan menunjukkan kepada anda cara membuka Terminal MAC. Kami juga akan menunjukkan kepada anda beberapa ciri dalam Terminal, seperti ifconfig, mengubah direktori, mengakses fail, dan arp. Ifconfig akan membolehkan anda memeriksa alamat IP anda, dan iklan MAC anda
Cara Membuat Telefon Pisang (Talian darat) dan Unit Pangkalan Pisang: 20 Langkah (dengan Gambar)

Cara Membuat Telefon Pisang (Land-line) dan Unit Pisang Pisang: Inilah dia. Anda hanya mempunyai beberapa minggu sebelum Krismas, dan anda perlu mencari hadiah yang benar-benar asli dan menunjukkan berapa banyak pembuat anda. Terdapat beribu-ribu pilihan, tetapi satu perkara yang benar-benar ingin anda buat ialah telefon pisang