Isi kandungan:

Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi): 9 Langkah
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi): 9 Langkah

Video: Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi): 9 Langkah

Video: Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi): 9 Langkah
Video: Leap Motion SDK 2024, Julai
Anonim
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi)
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi)
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi)
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi)
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi)
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi)
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi)
Prototaip HUD Motosikal Pintar (Navigasi mengikut giliran dan Banyak Lagi)

Hai!

Instructables ini adalah kisah bagaimana saya merancang dan membina platform HUD (Heads-Up Display) yang direka untuk dipasang pada helmet motosikal. Itu ditulis dalam konteks pertandingan "peta". Malangnya, saya tidak dapat menyelesaikan projek ini sepenuhnya pada tarikh akhir peraduan, tetapi saya masih mahu berkongsi perkembangan saya, dan juga mendokumentasikan semua percubaan dan kesilapan yang saya lalui ketika membuatnya.

Idea untuk projek ini mula-mula muncul pada saya beberapa tahun yang lalu, ketika saya memasuki motosikal, dan saya mula mencari peralatan apa yang perlu saya beli untuk menjadikan perjalanan saya lebih menyeronokkan. Pada masa itu, saya bingung bahawa kaedah terbaik untuk mendapatkan navigasi GPS asas semasa menunggang adalah dengan melampirkan telefon pintar anda ke hendal basikal anda. Saya yakin bahawa pasti ada cara yang lebih baik untuk mendapatkan maklumat semacam itu dengan cepat.

Saat itulah saya sampai: paparan kepala boleh menjadi cara untuk mendapatkan navigasi semasa menunggang, tanpa mengosongkan bateri telefon anda, dan memaparkannya ke elemen.

Lama kelamaan, idea ini semakin matang dalam fikiran saya, dan walaupun saya mempunyai HUD di hadapan saya setiap masa akan membolehkan lebih banyak penggunaan daripada navigasi mudah. Inilah sebabnya mengapa rancangan saya adalah untuk menjadikan platform awam dan modular, jadi sesiapa sahaja boleh membuat modul yang memaparkan maklumat yang mereka perlukan pada HUD mereka sendiri

Walaupun terdapat produk yang tersedia secara komersial yang memenuhi tugas ini, tidak ada yang modular seperti platform saya, dan mereka juga cenderung sedikit mahal. Bagaimanapun, selamat datang ke projek ini.

Apa yang berfungsi seperti sekarang

Seperti yang dinyatakan, projek ini masih dalam keadaan pembangunan, dan inilah yang sedang berjalan.

- Komunikasi antara telefon pintar dan papan berasaskan ESP32 (telefon terjaga)

- Reka bentuk optik selesai (mungkin memerlukan penyesuaian kecil dalam jangka panjang)

- Aplikasi navigasi Android menggunakan SDK navigasi Mapbox:

- Mampu mengira dan memaparkan kedudukan pengguna di peta, serta rute dari arah ke tujuan

- Mampu menyambung ke peranti Bluetooth (alamat MAC peranti dikodekan sekarang)

- Mampu navigasi masa nyata, termasuk mengekstrak dan menghantar maklumat manuver yang akan datang melalui Bluetooth bersiri (hanya menyokong giliran buat masa ini)

Apa yang memerlukan kerja

Senarai ini mengandungi item yang benar-benar diperlukan untuk penggunaan yang dimaksudkan oleh HUD, tetapi belum siap untuk dilaksanakan.

- Reka bentuk keseluruhan (Lekapan helmet, mekanisme penyesuaian sudut reflektor,..)

- Aplikasi Android:

- Laksanakan pengesanan dan pembetulan di luar laluan

- Keupayaan pengguna memasukkan alamat tujuan

- Titik arah?

- Ergonomi / Estetika

Bekalan:

Keperluan penting

- Lembaga pembangunan berasaskan esp32

- Sebarang telefon pintar android baru-baru ini (Bluetooth didayakan)

- Layar OLED 96 "SSD1306 atau lain-lain yang diaktifkan (tambang saya ialah 128x64 piksel, lihat bahagian" Otak: Pengawal mikro & Skrin ")

- Reflektor (sekeping akrilik / kaca / plexiglass akan dilakukan)

- Lensa Fresnel (lensa saya mempunyai panjang F. kira-kira 13cm, lihat bahagian "Pilihan lensa")

Alat

- Besi pematerian

- Papan roti

- Beberapa kabel pelompat

- perkhidmatan pencetak 3d / percetakan 3d

Langkah 1: Bagaimana Semuanya Berfungsi: Pilihan Reka Bentuk Dijelaskan

Bagaimana Semuanya Berfungsi: Pilihan Reka Bentuk Dijelaskan
Bagaimana Semuanya Berfungsi: Pilihan Reka Bentuk Dijelaskan
Bagaimana Semuanya Berfungsi: Pilihan Reka Bentuk Dijelaskan
Bagaimana Semuanya Berfungsi: Pilihan Reka Bentuk Dijelaskan
Bagaimana Semuanya Berfungsi: Pilihan Reka Bentuk Dijelaskan
Bagaimana Semuanya Berfungsi: Pilihan Reka Bentuk Dijelaskan

Idea asas Heads Up Display adalah menampilkan gambar di depan penglihatan seseorang, jadi mereka tidak perlu berpaling dari apa pun yang mereka lakukan (sama ada memandu pesawat, atau mengendarai motosikal, yang akan menjadi milik kita kes contoh).

Optik

Secara teknikal, ini dapat dicapai dengan meletakkan layar di depan mata pengguna. Walau bagaimanapun, skrin tidak telus, dan oleh itu akan menghalang penglihatan penggunanya. Anda kemudian boleh meletakkan layar di depan permukaan reflektif, yang akan mencerminkan kandungan layar sambil juga cukup melihat sehingga pengguna dapat melihat apa yang ada di hadapannya.

Walau bagaimanapun, pendekatan ini mempunyai kelemahan yang besar: skrin sebenarnya biasanya lebih dekat dengan mata pengguna daripada apa yang sebenarnya harus difokuskan pengguna (mis. Jalan di hadapannya). Ini bermaksud bahawa, untuk membaca apa yang ada di permukaan reflektif, mata pengguna perlu menyesuaikan diri dengan jarak paparan dari matanya (katakanlah 20 cm), dan kemudian perlu menyesuaikan diri lagi untuk fokus pada jalan di depan (~ 2/5 meter). Masa yang diperlukan keseluruhan operasi ini adalah masa yang sangat berharga yang harus dihabiskan untuk melihat jalan, dan kerap menyesuaikan diri mungkin tidak selesa bagi pengguna setelah beberapa minit.

Itulah sebabnya saya memutuskan untuk menambah lensa antara skrin dan reflektor. Lensa ini, jika dipilih dengan teliti, harus memungkinkan untuk membuat gambar maya skrin (lihat skema di atas), yang kemudiannya akan kelihatan lebih jauh dari mata pengguna seperti sebenarnya, sehingga memerlukan penyesuaian yang kurang tiba-tiba (atau sama sekali, dalam senario yang sempurna). Reka bentuk ini membolehkan pengguna melirik reflektor dengan cepat, mendapatkan maklumat yang dia perlukan, dan melihat kembali ke jalan dengan serta-merta.

Peranan telefon pintar

Oleh kerana tidak realistik untuk mencuba dan melaksanakan keseluruhan aplikasi navigasi pada ESP32 sahaja, saya memutuskan untuk membuat aplikasi android yang akan mengurus ini. Aplikasi itu hanya perlu memberitahu ESP32 apa yang harus dilakukan pengguna untuk sampai ke tempat tujuannya, dan ESP32 menyampaikan maklumat tersebut melalui HUD (lihat gambar "Bagaimana modul berfungsi").

Langkah 2: Bahagian - Otak: Pengawal Mikro & Skrin

Bahagian - Otak: Mikrokontroler & Skrin
Bahagian - Otak: Mikrokontroler & Skrin
Bahagian - Otak: Mikrokontroler & Skrin
Bahagian - Otak: Mikrokontroler & Skrin

Seperti yang dinyatakan di atas, saya merancang untuk memaparkan modul navigasi maklumat navigasi saya, tetapi sebenarnya tidak mengira kedudukan sebenar, penjejakan dan navigasi masa nyata. telefon pengguna akan berkomunikasi dengan modul, dan mengirimkannya maklumat untuk kemudian dipaparkan di HUD.

Untuk memudahkan komunikasi antara telefon pengguna dan modul, saya memilih untuk menggunakan papan berasaskan ESP32 untuk projek ini. Pilihan ini adalah kerana modul khusus ini mempunyai kemampuan Bluetooth yang terintegrasi, serta beberapa spesifikasi menarik lainnya (Penyimpanan Tidak Mudah Tidak Mudah digunakan, CPU dwi-teras, RAM yang cukup untuk benar-benar memacu paparan OLED melalui I2C,…). Agak mudah untuk merancang PCB berdasarkan ESP32, yang memang saya ambil kira. Saya juga mempunyai pengalaman profesional dalam menggunakan dan merancang litar dengan ESP32, yang pastinya mempengaruhi pilihan saya.

Pilihan skrin pada dasarnya datang untuk apa sahaja yang saya dapati bahawa saya akan cukup terang untuk digunakan, sementara juga sekecil mungkin. Saya tidak terlalu risau dengan jumlah piksel skrin, kerana objektif saya adalah untuk mempunyai UI yang sangat minimalis dan sederhana.

Perlu diperhatikan bahawa pemacu skrin harus disokong oleh perpustakaan yang memungkinkan pencerminan gambar. Ini kerana gambar yang dipaparkan akan dibalik ketika melalui lensa dan muncul di reflektor, dan tidak perlu membalikkan secara manual apa yang dipaparkan adalah berat yang besar dari bahu kita sebagai pembangun.

Langkah 3: Bahagian - Optik: Mencari Kompromi

Bahagian - Optik: Mencari Kompromi
Bahagian - Optik: Mencari Kompromi
Bahagian - Optik: Mencari Kompromi
Bahagian - Optik: Mencari Kompromi
Bahagian - Optik: Mencari Kompromi
Bahagian - Optik: Mencari Kompromi

Optik untuk projek ini agak sukar didekati, kerana saya tidak tahu apa yang saya cari semasa saya memulakan projek ini. Selepas beberapa kajian, saya faham bahawa apa yang ingin saya lakukan adalah membuat "imej maya" skrin OLED saya, yang kelihatannya jauh dari mata daripada sebenarnya. Jarak ideal untuk imej maya ini dibentuk adalah sekitar 2-5 meter di hadapan pemandu, ini sepertinya jarak ke objek yang kita fokuskan ketika memandu (kereta lain, lebam di jalan raya, dll. …).

Untuk mencapai tujuan itu, saya memilih untuk menggunakan lensa Fresnel, kerana ini cukup besar, murah, nampaknya menawarkan jarak fokus yang cukup baik untuk projek saya, dan mereka boleh dipotong dengan gunting sederhana (yang tidak sesuai untuk lensa kaca berbentuk bulat yang lebih halus). Lensa Fresnel boleh dijumpai nama seperti "pembesar saku" atau "pembesar kad bacaan", kerana lensa ini sangat sesuai untuk membantu orang yang mempunyai penglihatan yang buruk membaca.

Pada dasarnya, silap mata di sini adalah mencari kompromi yang betul antara:

- Mempunyai jarak imej maya yang munasabah (iaitu, sejauh mana HUD nampaknya kepada pengguna, atau sejauh mana pengguna harus menyesuaikan matanya untuk melihat apa yang ada di HUD)

- Memiliki teks di layar tidak terlalu diperbesar oleh lensa (yang pada dasarnya adalah pembesar)

- Mempunyai jarak yang wajar antara skrin OLED dan lensa, yang sebaliknya akan membawa kepada modul yang sangat besar

Saya secara peribadi memerintahkan beberapa lensa yang berbeza pada amazon, dan menentukan panjang fokus masing-masing, sebelum memilih satu dengan panjang F. kira-kira 13 cm. Saya mendapati panjang F. ini, dengan jarak Lensa OLED 9cm, memberi saya gambar yang memuaskan pada reflektor saya (lihat beberapa gambar terakhir di atas).

Seperti yang akan anda lihat pada ilustrasi saya, untuk memfokuskan teks yang dipaparkan dengan betul, kamera yang digunakan untuk mengambil gambar-gambar ini harus disesuaikan seolah-olah sedang memfokus pada objek yang jauh, yang menjadikan segala sesuatu pada bidang yang sama dengan reflektor kelihatan kabur.. Inilah yang kita mahukan untuk HUD kita.

Anda boleh mendapatkan fail 3d untuk pemegang lensa di sini.

Langkah 4: Bahagian - Bekas untuk Memegangnya Semua

Bahagian - Bekas untuk Memegang Semuanya
Bahagian - Bekas untuk Memegang Semuanya
Bahagian - Bekas untuk Memegang Semuanya
Bahagian - Bekas untuk Memegang Semuanya

Semasa saya menulis Instructables ini, bekas sebenar yang akan memegang setiap paparan head-up tidak cukup dirancang. Walau bagaimanapun, saya mempunyai beberapa idea mengenai bentuk umum dan cara mendekati masalah tertentu (seperti cara menahan reflektor, dan membuatnya tahan dengan angin 100+ km / jam). Ini masih banyak yang sedang dijalankan.

Langkah 5: Membuat Protokol untuk Modul Kami

Untuk menghantar arahan navigasi dari telefon ke papan pengembangan, saya harus membuat protokol komunikasi saya sendiri yang membolehkan saya menghantar data yang diperlukan dari telefon dengan mudah, dan juga memudahkan pemprosesannya setelah diterima.

Pada saat menulis Instructables ini, maklumat yang perlu dihantar dari telefon untuk menavigasi dengan modul adalah:

- Jenis manuver yang akan datang (giliran sederhana, bulatan, bergabung ke jalan lain,…)

- Arahan tepat manuver yang akan datang (bergantung pada jenis manuver: kanan / kiri untuk giliran; yang keluar untuk mengambil bulatan,…)

- Jarak yang tinggal sebelum manuver yang akan datang (dalam meter sekarang)

Saya memutuskan untuk mengatur data ini menggunakan struktur kerangka berikut:

: type.instructions, jarak;

Walaupun tidak menjadi penyelesaian yang baik, yang satu ini membolehkan kita memisahkan dan membezakan setiap bidang protokol kita dengan mudah, yang memudahkan pengekodan di sisi ESP32.

Penting untuk diingat bahawa, untuk ciri-ciri masa depan, maklumat lain mungkin perlu ditambahkan ke protokol ini (seperti hari dan waktu yang tepat, atau muzik yang dimainkan di telefon pengguna), yang akan dapat dilaksanakan dengan mudah menggunakan yang sama membina logik seperti sekarang.

Langkah 6: Kod: Bahagian ESP32

Kod: Bahagian ESP32
Kod: Bahagian ESP32
Kod: Bahagian ESP32
Kod: Bahagian ESP32

Kod untuk ESP32 pada masa ini agak mudah. Ia menggunakan perpustakaan U8g2lib, yang memungkinkan pengawalan skrin OLED dengan mudah (sambil memungkinkan pencerminan gambar yang ditampilkan).

Pada dasarnya, semua yang dilakukan ESP32 adalah menerima data bersiri melalui Bluetooth ketika aplikasi menghantarnya, menghuraikannya, dan memaparkan data atau gambar ini berdasarkan data ini (mis. Menampilkan anak panah dan bukannya kalimat "belok kiri / kanan"). Inilah kodnya:

/ * Program untuk mengendalikan HUD dari aplikasi android melalui bluetooth bersiri * / # termasuk "BluetoothSerial.h" // Fail Header untuk Serial Bluetooth, akan ditambahkan secara lalai ke Arduino # include #include #ifdef U8X8_HAVE_HW_SPI # include # endif # ifdef U8X8_HAVE_HW_I2C # include # endif // Pembina perpustakaan OLED, perlu diubah sesuai dengan layar andaU8G2_SSD1306_128X64_ALT0_F_HW_I2C u8g2 (U8G2_MIRROR, / * reset = * / U8X8_PIN_N) // Nyatakan mesin nilai_kadar medan + pemboleh ubah # tentukan manuverField 1 # tentukan arahanField 2 # tentukan jarakField 3 # tentukan endOfFrame 4int dikesan_field = endOfFrame; BluetoothSerial serialBT; // Objek untuk Bluetoothchar incoming_char; char maneuver [10]; char petunjuk [10]; char jarak [10]; char tempManeuver [10]; char tempInstructions [10]; char tempDistance [10]; int nbr_char_maneuver = 0; int nbr_char_instructions = 0; int nbr_char_distance = 0; boolean fullsentence = false; batal setup () {Serial.begin (9600); // Mulakan monitor bersiri pada 9600 baud u8g2.begin (); // Init OLED siriBB.begin kawalan ("ESP32_BT"); // Nama kelewatan Isyarat Bluetooth (20); Serial.println ("Peranti Bluetooth Sedia untuk Berpasangan");} gelung kosong () {if (serialBT.available () &&! Fullsentence) // Watak yang diterima melalui siri Bluetooth {incoming_char = serialBT.read (); Serial.print ("Diterima:"); Serial.println (masuk_char); } switch (found_field) {case maneuverField: Serial.println ("Medan yang dikesan: manuver"); if (incoming_char == '.') // Medan seterusnya dikesan {found_field = documentsField; } lain {// Isi manuver jenis maklumat jenis manuver [nbr_char_maneuver] = masuk_char; nbr_char_maneuver ++; } rehat; arahan kesField: Serial.println ("Medan yang dikesan: arahan"); if (incoming_char == ',') // Medan seterusnya dikesan {found_field = distanceField; } lain {// Isi arahan susunan maklumat petunjuk [nbr_char_instructions] = incchar_char; nbr_char_instructions ++; } rehat; case caseField: Serial.println ("Medan yang dikesan: jarak"); if (incoming_char == ';') // Akhir Bingkai dikesan {found_field = endOfFrame; Serial.print ("manuver:"); Serial.println (manuver); Serial.print ("arahan:"); Serial.println (arahan); Serial.print ("jarak:"); Serial.println (jarak); fullsentence = benar; kemas kini_Paparan (); // Rangka penuh diterima, huraikannya dan paparkan data penerima} lain {// Isi jarak array maklumat jarak [nbr_char_distance] = incoming_char; nbr_char_distance ++; } rehat; case endOfFrame: if (incoming_char == ':') detect_field = maneuverField; // Kerangka baru dikesan rehat; lalai: // Jangan pecah; } delay (20);} batal update_Display () {// Cache setiap array char untuk mengelakkan kemungkinan konflik memcpy (tempManeuver, manuver, nbr_char_maneuver); memcpy (tempInstructions, petunjuk, nbr_char_instructions); memcpy (tempDistance, jarak, nbr_char_distance); parseCache (); // Menghuraikan dan memproses array char fullsentence = false; // Kalimat diproses, siap untuk yang seterusnya} batal parseCache () {u8g2.clearBuffer (); // kosongkan memori dalaman u8g2.setFont (u8g2_font_ncenB10_tr); // pilih font yang sesuai // array array -> rentetan wajib untuk menggunakan fungsi substring () String maneuverString = tempManeuver; Petunjuk rentetan String = tempInstructions; // Melaksanakan protokol di sini. Hanya menyokong giliran buat masa ini. if (maneuverString.substring (0, 4) == "turn") {// Periksa jenis manuver Serial.print ("TURN DETECTED"); if (directionString.substring (0, 5) == "betul") {// Periksa arahan khusus dan paparkan dengan sewajarnya u8g2.drawStr (5, 15, "-"); } lain-lain jika (instruksiString.substring (0, 4) == "kiri") {// Periksa arahan khusus dan paparkan dengan sewajarnya u8g2.drawStr (5, 15, "<---"); } lain u8g2.drawStr (5, 15, "Err."); // Medan arahan tidak sah} / * Laksanakan jenis manuver lain (bulatan, dll.) * Lain jika (tempManeuver == "rdbt") {* *] * / u8g2.drawStr (5, 30, tempDistance); // Paparkan baki jarak u8g2.sendBuffer (); // pindahkan memori dalaman ke paparan // Tetapkan semula semua tatasusunan sebelum memet membaca seterusnya (manuver, 0, 10); memet (arahan, 0, 10); memset (jarak, 0, 10); memset (tempManeuver, 0, 10); memset (tempInstructions, 0, 10); memset (tempDistance, 0, 10); // Tetapkan semula bilangan elemen dalam tatasusunan nbr_char_distance = 0; nbr_char_instructions = 0; nbr_char_maneuver = 0;}

Langkah 7: Kod: Sisi Android

Kod: Bahagian Android
Kod: Bahagian Android
Kod: Bahagian Android
Kod: Bahagian Android
Kod: Bahagian Android
Kod: Bahagian Android

Untuk aplikasi telefon pintar, saya memutuskan untuk menggunakan SDK navigasi Mapbox, kerana ia menawarkan banyak ciri berguna ketika membuat peta navigasi dari awal. Ia juga membenarkan penggunaan banyak pendengar yang berguna, yang pasti dapat membantu menjayakan modul ini. Saya juga menggunakan pustaka bersiri android-bluetooth-harry1453 untuk android, kerana ia menjadikan komunikasi bersiri Bluetooth menjadi lebih mudah untuk disatukan.

Sekiranya anda ingin membuat aplikasi ini di rumah, anda perlu mendapatkan token akses Mapbox, yang percuma sehingga sejumlah permintaan setiap bulan. Anda harus memasukkan token ini dalam kod, dan membina aplikasi di sisi anda. Anda juga perlu membuat kod dalam alamat MAC Bluetooth ESP32 anda sendiri.

Seperti yang ada, aplikasi ini dapat memandu anda dari lokasi semasa anda ke lokasi mana pun yang boleh anda klik pada peta. Seperti yang disebutkan dalam intro, bagaimanapun, ini tidak mendukung manuver lain daripada belokan, dan belum menangani jalan keluar.

Anda boleh mendapatkan keseluruhan kod sumber di github saya.

Langkah 8: Apa Seterusnya?

Sekarang aplikasinya cukup berfungsi untuk benar-benar memandu penggunanya pada rute yang ditetapkan (jika tidak ada penyimpangan dari rute yang ditetapkan), fokus utama saya adalah untuk memperbaiki aplikasi telefon pintar, dan menerapkan beberapa kemampuan yang akan menjadikan modul menjadi peranti navigasi yang berdaya maju. Ini termasuk mengaktifkan komunikasi Bluetooth dari telefon walaupun skrin mati, serta sokongan untuk jenis manuver lain (bulatan, penggabungan,…). Saya juga akan mengimplementasikan ciri ubah hala jika pengguna menyimpang dari laluan asal.

Apabila semua ini selesai, saya akan memperbaiki bekas dan mekanisme pemasangannya, mencetaknya 3d, dan mencuba dan mengambil modul untuk jangka pertama.

Sekiranya semuanya berjalan lancar, objektif jangka panjang saya adalah merancang PCB khusus untuk elektronik terbenam projek ini, yang akan menjimatkan banyak ruang pada produk akhir.

Saya mungkin juga menambahkan beberapa fitur lain ke modul ini di masa depan, termasuk tampilan waktu, serta penggera pemberitahuan telefon, yang dapat membuat ikon muncul ketika pengguna menerima pesan teks atau panggilan. Akhirnya saya ingin menambahkan keupayaan Spotify ke modul ini, sebagai peminat muzik yang besar. Walau bagaimanapun, pada masa ini, ini hanya menyenangkan.

Langkah 9: Kesimpulan dan Terima Kasih Khas

Kesimpulan dan Terima Kasih Khas!
Kesimpulan dan Terima Kasih Khas!

Seperti yang dinyatakan dalam intro, walaupun proyek ini masih belum selesai, saya benar-benar ingin membagikannya kepada dunia, dengan harapan dapat memberi inspirasi kepada orang lain. Saya juga ingin mendokumentasikan penyelidikan saya mengenai perkara ini, kerana sebenarnya tidak banyak minat peminat terhadap AR dan HUD, yang saya rasa memalukan.

Saya ingin mengucapkan terima kasih yang besar kepada Awall99 dan Danel Quintana, yang projek augmented reality masing-masing banyak memberi inspirasi kepada saya dalam pembuatan modul ini.

Terima kasih atas perhatian anda, saya pasti akan menghantar kemas kini apabila projek ini diperbaiki dalam masa terdekat. Sementara itu, jumpa lagi nanti!

Disyorkan: