Isi kandungan:

Kompas Digital dan Pencari Tajuk: 6 Langkah
Kompas Digital dan Pencari Tajuk: 6 Langkah

Video: Kompas Digital dan Pencari Tajuk: 6 Langkah

Video: Kompas Digital dan Pencari Tajuk: 6 Langkah
Video: #1 CARA MENGGUNAKAN KOMPAS ORIENTEERING UNTUK MENEMUKAN SUDUT DI ATAS DARI SEBUAH TITIK DIATAS PETA 2024, Julai
Anonim
Pencari Digital dan Pencari Tajuk
Pencari Digital dan Pencari Tajuk

Pengarang:

Cullan Whelan

Andrew Luft

Blake Johnson

Ucapan terima kasih:

Akademi Maritim California

Evan Chang-Siu

Pengenalan:

Asas projek ini adalah kompas digital dengan penjejakan tajuk. Ini membolehkan pengguna mengikuti jalan jarak jauh dengan menggunakan alat digital. Secara berkala sebuah arah adalah sudut yang diukur mengikut arah jam dari utara, yang dianggap sebagai sifar darjah, seperti yang ditunjukkan oleh kompas. Peranti mempunyai dua fungsi utama: yang pertama adalah menampilkan tajuk perangkat saat ini pada rujukan paparan digital, dan yang kedua adalah kemampuan untuk memasukkan tajuk yang diminta pengguna, yang akan ditampilkan pada cincin LED di bahagian atas perumahan kompas. Pengguna kemudian akan menyesuaikan orientasi peranti yang berkaitan dengan LED yang diterangi. Apabila arah peranti diubah, LED akan bergerak ke LED tengah, sehingga menunjukkan bahawa arah yang betul telah ditetapkan.

Bekalan:

- Modul GPS DIYmall 6M

- HiLetgo MPU9250 / 6500 9-Axis 9 DOF 16 Bit

- Adafruit NeoPixel Ring 16

- Bateri Lithium MakerFocus 4pcs 3.7V Rechargable

- Papan ELEGOO MEGA 2560 R3

- Adafruit Mini Lipo w / Jack USB Mini-B - Pengecas USB LiIon / LiPoly - v1

- LCD TFT 2,8 dengan Touchscreen Breakout Board dengan Soket MicroSD

Langkah 1: Merancang Fungsi Projek

Merancang Fungsi Projek
Merancang Fungsi Projek

Langkah pertama adalah memahami logik dan fungsi operasi akhir. Gambarajah logik ini menggambarkan tiga keadaan peranti dan dua keadaan sensor.

Nyatakan 1: Memuatkan Negeri

Keadaan pemuatan digunakan untuk membolehkan Arduino Mega mendapatkan kembali data dari dua sensor semasa dimulakan. Peranti akan memaparkan pemuatan di layar, menghapus semua nilai angka di layar, dan LED pada cincin NeoPixel akan menyala dalam lingkaran.

Nyatakan 2: Mod Kompas

Dalam keadaan ini, peranti akan bertindak seperti kompas digital. Cincin NeoPixel akan menyala untuk menunjukkan arah Utara sehubungan dengan orientasi peranti. Tajuk peranti yang sebenarnya juga akan dipaparkan di skrin LCD bersamaan dengan Lintang dan Bujur peranti. Dalam keadaan ini, pengguna akan dapat memasukkan tajuk pengguna yang akan dipaparkan di Negeri 3.

Nyatakan 3: Mod Penjejakan Tajuk

Dalam keadaan ini, peranti kini akan menolong pengguna menjadi mapan pada tajuk yang diinginkan. Peranti kini akan memaparkan arah peranti dan pengguna menuju ke layar LCD bersama dengan data garis lintang dan garis bujur. Cincin NeoPixel kini akan menyala untuk menunjukkan pengguna menuju ke arah orientasi peranti.

Dalam kedua-dua State 2 dan State 3 ada dua keadaan sensor keadaan sensor ini memungkinkan perangkat menarik data dari sensor yang memberikan data yang paling tepat bergantung pada keadaan operasi perangkat.

Sensor State 1: MPU

Sekiranya peranti tidak bergerak, data tajuk akan ditarik dari MPU kerana ia adalah data yang paling tepat ketika peranti tidak bergerak.

Keadaan Sensor 2: GPS

Sekiranya peranti bergerak, data tajuk akan ditarik dari cip GPS kerana ia adalah data yang paling tepat dalam keadaan ini.

Peranti boleh beralih antara keadaan ini ke keadaan sensor setiap saat untuk memperhitungkan keadaan penggunaan unit yang berubah. Ini penting untuk pengoperasian peranti kerana kedua-dua sensor yang digunakan dalam peranti mempunyai keadaan yang mempengaruhi ketepatan data yang mereka berikan. Dalam kes MPU, cip mudah dipengaruhi oleh medan magnet tempatan yang disebabkan oleh kereta dan bahan binaan logam di bangunan. Oleh itu cip GPS digunakan yang dapat memberikan tajuk yang jauh lebih tepat yang tidak dipengaruhi oleh pengaruh yang sama. Walau bagaimanapun, GPS hanya dapat memberikan data tajuk ketika bergerak ketika menghitung tajuk menggunakan perubahan data garis lintang dan garis bujur. Oleh itu cip saling melengkapi dan dengan menggunakan dua keadaan sensor memberikan fungsi peranti yang paling tepat dan boleh dipercayai.

Langkah 2: Diagram Pemasangan dan Kawat

Diagram Pemasangan dan Kawat
Diagram Pemasangan dan Kawat
Diagram Pemasangan dan Kawat
Diagram Pemasangan dan Kawat
Diagram Pemasangan dan Kawat
Diagram Pemasangan dan Kawat

Projek ini menggunakan dan klon Arduino Mega yang serupa dengan papan di atas. Semua komponen dalam projek akan disambungkan ke papan ini. Di atas adalah gambarajah terperinci mengenai bagaimana menyusun komponen untuk projek ini. Butang tidak mempunyai litar terperinci kerana ini dapat diatur dengan banyak cara. Dalam projek ini mereka menggunakan resistor tarik ke bawah 100K dan butang sederhana untuk menghantar isyarat 3 volt ke pin yang ditentukan.

Langkah 3: Menguji Komponen dan Kod Asas

Projek ini akan menarik data dari MPU dan cip GPS seperti yang dijelaskan sebelumnya. Dilampirkan tiga kod yang memungkinkan pengujian data dari MPU, GPS, dan MPU dengan layar untuk mengesahkan fungsi bahagian. Penting untuk membuat komponen beroperasi pada tahap ini kerana kodnya terpisah untuk setiap cip dan sebarang masalah dapat ditangani tanpa rasa takut menyebabkan kesalahan yang tidak dijangka dalam kod akhir.

Perpustakaan yang diperlukan:

Adafruit_ILI9341_Albert.h

SPI.h

Adafruit_GFX.h

Adafruit_ILI9341.h

TinyGPS ++. H

Adafruit_NeoPixel.h

MPU9250.h

Semua ini boleh didapati dengan mencari tajuk di atas. Saya tidak akan menghantar pautan kerana terdapat banyak salinan perpustakaan ini dari pelbagai sumber dan mematuhi standard komuniti hanya dengan memautkan ke sumber asli. Saya akan membiarkan anda mencari ini sendiri.

Langkah 4: Penentukuran MPU

Penentukuran MPU
Penentukuran MPU

Tajuk yang dijumpai melalui MPU di Negeri 2 dan Negeri 3 dibahagikan kepada empat kuadran. Ini diperlukan kerana kaedah penentukuran kami memerlukan mencari magnitud minimum dan maksimum dari magnetometer di sepanjang paksi x dan ynya. Ini dilakukan dengan memutar peranti secara acak mengenai tiga paksinya, bebas dari medan elektromagnetik yang signifikan selain daripada Bumi. Kami kemudian mengambil nilai minimum dan maksimum di sepanjang paksi x dan y dan memasukkannya ke dalam persamaan penskalaan untuk menyekat besarnya antara nilai negatif satu dan satu. Dalam rajah di atas, BigX dan BigY adalah nilai maksimum data magnetometer di sepanjang paksi x dan y, LittleX dan LittleY adalah nilai minimum data magnetometer di sepanjang paksi x dan y, IMU.getMagX_uT () dan IMU.getMagY_uT () adalah nilai yang ditarik dari magnetometer setiap saat di sepanjang paksi x dan y masing-masing, dan Mx dan My adalah nilai skala baru yang digunakan untuk mengira tajuk.

Langkah 5: Kod Akhir

Kod Akhir
Kod Akhir
Kod Akhir
Kod Akhir
Kod Akhir
Kod Akhir
Kod Akhir
Kod Akhir

Langkah terakhir adalah membuat kod akhir. Saya telah melampirkan salinan kod akhir projek. Di dalam nota telah dibuat untuk membantu menavigasi kod. Cabaran terbesar bahagian ini ialah membuat kuadran berfungsi dengan betul. Pelaksanaan kuadran terbukti lebih membosankan dan menentang logik daripada yang dapat kita jangkakan. Pada mulanya kami menerapkan arctan asas (My / Mx) dan kemudian ditukarkan dari radian ke darjah, kerana Arduino menghasilkan radian secara lalai. Namun, satu-satunya kuadran yang digunakan adalah dari 90 darjah hingga 180 darjah, yang memberi kita output negatif dan akhirnya menjadi Kuadran III. Penyelesaian untuk ini adalah mengambil nilai mutlak, kerana masih meningkat dengan betul. Nilai ini kemudian dikurangkan dari 360 untuk menyalakan LED NeoPixel yang betul dalam keadaan 2 dan operasi matematik yang serupa digunakan pada keadaan 3 berdasarkan jika tajuknya lebih besar atau lebih kecil daripada tajuk input pengguna, yang keduanya dapat dilihat di kod di atas. Dalam gambar di atas, Heading sesuai dengan lampu NeoPixel yang akan menyala berdasarkan perbedaan antara kepala perangkat dan penyimpangan dari utara dalam hal keadaan 2, dan dari tajuk pengguna. Dalam kes ini, 90 hingga 180 darjah sepadan dengan Kuadran III. Dalam kedua kes tersebut, tft.print menyebabkan skrin membaca peranti menuju dari utara.

Untuk tiga kuadran lainnya, pelaksanaan arctan (My / Mx) menyebabkan pembalikan kenaikan ketika peranti diputar, iaitu sudut arah akan dihitung ke bawah ketika seharusnya dihitung dan sebaliknya. Penyelesaian untuk masalah ini adalah dengan membalikkan arctangent ke bentuk arctan (Mx / My). Walaupun ini menyelesaikan pembalikan kenaikan, ia tidak memberikan tajuk perangkat yang betul, di mana kuadran dimainkan. Pembaikan mudah untuk ini adalah dengan menambahkan pergeseran berdasarkan kuadran yang sesuai. Ini dapat dilihat pada gambar berikut, yang sekali lagi merupakan kod dari Negeri 2 dan 3 setiap kuadran.

Penyataan if pertama dilakukan jika tajuk yang dikira oleh persamaan MPU lebih besar daripada tajuk pengguna. Dalam keadaan ini tajuk input pengguna ditambahkan ke tajuk peranti dan nilai yang sesuai dikurangkan dari 360. Jika pernyataan lain dilakukan, persamaan tajuk MPU dikurangkan dari tajuk input pengguna. Syarat-syarat ini dilaksanakan agar tidak hanya mendapatkan nilai yang tepat untuk NeoPixel, tetapi juga untuk menghindari memperoleh nilai di luar rentang yang dapat diterima, yaitu dari 0 hingga 359 darjah.

Disyorkan: