Daftar Isi:

Kompas Digital dan Pencari Judul: 6 Langkah
Kompas Digital dan Pencari Judul: 6 Langkah

Video: Kompas Digital dan Pencari Judul: 6 Langkah

Video: Kompas Digital dan Pencari Judul: 6 Langkah
Video: 6 Langkah Mencuci Tangan - Bethsaida Hospital 2024, November
Anonim
Kompas Digital dan Pencari Judul
Kompas Digital dan Pencari Judul

Penulis:

Cullan Whelan

Andrew Luft

Blake Johnson

Ucapan terima kasih:

Akademi Maritim California

Evan Chang-Siu

Pengantar:

Dasar dari proyek ini adalah kompas digital dengan pelacakan pos. Hal ini memungkinkan pengguna untuk mengikuti arah jarak jauh menggunakan peralatan digital. Bahasa sehari-hari heading adalah sudut yang diukur searah jarum jam dari utara, yang dianggap sebagai nol derajat, seperti yang ditunjukkan oleh kompas. Perangkat ini memiliki dua fungsi utama: yang pertama menampilkan judul perangkat saat ini pada referensi tampilan digital, dan yang kedua adalah kemampuan untuk memasukkan judul yang diminta pengguna, yang akan ditampilkan pada cincin LED di bagian atas layar. perumahan kompas. Pengguna kemudian akan menyesuaikan orientasi perangkat terkait dengan LED yang menyala. Saat arah perangkat diubah, LED akan bergerak ke LED tengah, yang menunjukkan bahwa arah yang benar telah ditetapkan.

Perlengkapan:

- Modul GPS DIYmall 6M

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

- Adafruit NeoPixel Ring 16

- MakerFocus 4pcs 3.7V Baterai Isi Ulang Lithium

- Papan ELEGOO MEGA 2560 R3

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

- LCD TFT 2,8 dengan Papan Breakout Layar Sentuh dengan Soket MicroSD

Langkah 1: Merancang Fungsionalitas Proyek

Merancang Fungsionalitas Proyek
Merancang Fungsionalitas Proyek

Langkah pertama adalah memahami logika dan fungsionalitas operasional akhir. Diagram logika ini menggambarkan tiga status perangkat dan dua status sensor.

Status 1: Status Pemuatan

Status pemuatan digunakan untuk memungkinkan Arduino Mega mendapatkan kembali data dari dua sensor saat start up. Perangkat akan menampilkan pemuatan di layar, menghapus semua nilai angka di layar, dan LED pada cincin NeoPixel akan menyala dalam lingkaran.

Status 2: Mode Kompas

Dalam keadaan ini perangkat akan bertindak seperti kompas digital. Cincin NeoPixel akan menyala untuk menunjukkan arah Utara sehubungan dengan orientasi perangkat. Judul perangkat yang sebenarnya juga akan ditampilkan di layar LCD bersama dengan Lintang dan Bujur perangkat. Dalam keadaan ini juga pengguna akan dapat memasukkan judul pengguna yang akan ditampilkan di Negara 3.

Status 3: Mode Pelacakan Pos

Dalam keadaan ini perangkat sekarang akan membantu pengguna menjadi mapan pada pos yang diinginkan. Perangkat sekarang akan menampilkan arah perangkat dan arah pengguna pada layar LCD bersama dengan data garis lintang dan garis bujur. Cincin NeoPixel sekarang akan menyala untuk menunjukkan arah pengguna sehubungan dengan orientasi perangkat.

Di dalam Status 2 dan Status 3 ada dua status sensor, status sensor ini memungkinkan perangkat untuk menarik data dari sensor yang menyediakan data paling akurat tergantung pada kondisi operasional perangkat.

Status Sensor 1: MPU

Jika perangkat tidak bergerak, data heading akan ditarik dari MPU karena ini adalah data yang paling akurat saat perangkat tidak bergerak.

Status Sensor 2: GPS

Jika perangkat bergerak, data heading akan ditarik dari chip GPS karena ini adalah data yang paling akurat dalam kondisi ini.

Perangkat dapat beralih di antara ini ke status sensor kapan saja untuk memperhitungkan kondisi penggunaan unit yang berubah. Hal ini penting untuk pengoperasian perangkat karena kedua sensor yang digunakan dalam perangkat memiliki kondisi yang mempengaruhi keakuratan data yang mereka berikan. Dalam kasus MPU, chip dapat dengan mudah dipengaruhi oleh medan magnet lokal yang disebabkan oleh mobil dan bahan konstruksi logam di gedung. Jadi chip GPS digunakan yang dapat memberikan arah yang jauh lebih akurat yang tidak dipengaruhi oleh pengaruh yang sama. Namun, GPS hanya dapat menyediakan data arah saat bergerak karena menghitung arah menggunakan data perubahan garis lintang dan garis bujur. Oleh karena itu chip saling melengkapi dan dengan menggunakan dua status sensor memberikan fungsionalitas perangkat yang paling akurat dan andal.

Langkah 2: Setup dan Diagram Kawat

Pengaturan dan Diagram Kawat
Pengaturan dan Diagram Kawat
Pengaturan dan Diagram Kawat
Pengaturan dan Diagram Kawat
Pengaturan dan Diagram Kawat
Pengaturan dan Diagram Kawat

Proyek ini menggunakan dan papan klon Arduino Mega mirip dengan papan di atas. Semua komponen dalam proyek akan terhubung ke papan ini. Di atas adalah diagram terperinci tentang cara memasang komponen untuk proyek ini. Tombol-tombolnya tidak memiliki sirkuit yang terperinci karena ini dapat diatur dengan banyak cara. Dalam proyek ini mereka menggunakan resistor pull down 100K dan tombol sederhana untuk mengirim sinyal 3 volt ke pin yang ditentukan.

Langkah 3: Menguji Komponen dan Kode Dasar

Proyek ini akan menarik data dari chip MPU dan GPS seperti yang dijelaskan sebelumnya. Terlampir adalah tiga kode yang memungkinkan pengujian data dari MPU, GPS, dan MPU dengan layar untuk memverifikasi fungsionalitas bagian. Penting untuk membuat komponen beroperasi pada tahap ini karena kode terpisah untuk setiap chip dan masalah apa pun dapat diatasi tanpa takut menyebabkan kesalahan tak terduga dalam kode 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 dapat ditemukan dengan mencari judul-judul di atas. Saya tidak akan memposting tautan karena ada banyak salinan perpustakaan ini dari berbagai sumber dan mengikuti standar komunitas untuk hanya menautkan ke aslinya. Saya akan membiarkan Anda menemukannya sendiri.

Langkah 4: Kalibrasi MPU

Kalibrasi MPU
Kalibrasi MPU

Judul yang ditemukan melalui MPU di Negara Bagian 2 dan Negara Bagian 3 dibagi menjadi empat kuadran. Ini diperlukan karena metode kalibrasi kami mengharuskan menemukan besaran minimum dan maksimum dari magnetometer sepanjang sumbu x dan y. Ini dilakukan dengan memutar perangkat secara acak di sekitar tiga sumbunya, bebas dari medan elektromagnetik signifikan apa pun selain dari Bumi. Kami kemudian mengambil nilai minimum dan maksimum di sepanjang sumbu x dan y dan memasukkannya ke dalam persamaan penskalaan untuk membatasi besaran antara nilai negatif satu dan satu. Pada gambar di atas, BigX dan BigY masing-masing adalah nilai maksimum data magnetometer sepanjang sumbu x dan y, LittleX dan LittleY masing-masing adalah nilai minimum data magnetometer sepanjang sumbu x dan y, IMU.getMagX_uT() dan IMU.getMagY_uT() adalah nilai yang ditarik dari magnetometer setiap saat di sepanjang sumbu x dan y, dan Mx dan My adalah nilai skala baru yang digunakan untuk menghitung heading.

Langkah 5: Kode Akhir

Kode Akhir
Kode Akhir
Kode Akhir
Kode Akhir
Kode Akhir
Kode Akhir
Kode Akhir
Kode Akhir

Langkah terakhir adalah membuat kode akhir. Saya telah melampirkan salinan kode akhir proyek. Dalam catatan telah dibuat untuk membantu menavigasi kode. Tantangan terbesar dari bagian ini adalah membuat kuadran bekerja dengan benar. Implementasi kuadran terbukti lebih membosankan dan menantang logika daripada yang pernah kita perkirakan. Kami awalnya menerapkan arctan dasar (My/Mx) dan kemudian dikonversi dari radian ke derajat, karena Arduino mengeluarkan radian secara default. Namun, satu-satunya kuadran tempat ini bekerja adalah dari 90 derajat hingga 180 derajat, yang memberi kami output negatif dan akhirnya menjadi Kuadran III. Solusi untuk ini adalah mengambil nilai absolut, karena masih bertambah dengan benar. Nilai ini kemudian dikurangi dari 360 untuk menyalakan LED NeoPixel yang benar di keadaan 2 dan operasi matematika serupa digunakan di keadaan 3 berdasarkan apakah heading lebih besar atau lebih kecil dari heading input pengguna, yang keduanya dapat dilihat di kode di atas. Pada gambar di atas, Heading sesuai dengan lampu NeoPixel yang akan menyala berdasarkan perbedaan antara heading perangkat dan deviasi dari utara dalam kasus keadaan 2, dan dari heading pengguna. Dalam hal ini, 90 hingga 180 derajat sesuai dengan Kuadran III. Dalam kedua kasus, tft.print menyebabkan layar membaca arah perangkat dari utara.

Untuk tiga kuadran lainnya, penerapan arctan(My/Mx) menyebabkan inversi peningkatan saat perangkat diputar, yaitu sudut heading akan menghitung mundur saat seharusnya menghitung dan sebaliknya. Solusi untuk masalah ini adalah membalik arctangent ke bentuk arctan(Mx/My). Meskipun ini memecahkan inversi inkremental, itu tidak memberikan judul perangkat yang benar, di situlah kuadran berperan. Perbaikan sederhana untuk ini adalah menambahkan pergeseran berdasarkan kuadran yang sesuai. Hal ini dapat dilihat pada gambar berikut, yang sekali lagi merupakan potongan kode dari Negara 2 dan 3 dari masing-masing kuadran.

Pernyataan if pertama dilakukan jika heading yang dihitung dengan persamaan MPU lebih besar dari heading pengguna. Dalam kondisi ini heading input pengguna ditambahkan ke heading perangkat dan nilai yang sesuai dikurangi dari 360. Jika pernyataan else dijalankan, persamaan heading MPU dikurangi dari heading input pengguna. Kondisi ini diterapkan untuk tidak hanya mendapatkan nilai yang akurat untuk NeoPixel, tetapi untuk menghindari mendapatkan nilai di luar rentang yang dapat diterima, yaitu dari 0 hingga 359 derajat.

Direkomendasikan: