Daftar Isi:

Portal 2 Turret - Kontrol Master Turret: 9 Langkah (dengan Gambar)
Portal 2 Turret - Kontrol Master Turret: 9 Langkah (dengan Gambar)

Video: Portal 2 Turret - Kontrol Master Turret: 9 Langkah (dengan Gambar)

Video: Portal 2 Turret - Kontrol Master Turret: 9 Langkah (dengan Gambar)
Video: Portal 2: How to Break the Turret Production Line. 2024, Juli
Anonim
Image
Image

Proyek ini merupakan perpanjangan atau remix dari Portal Turret asli saya di Instructables (Portal-2-Turret-Gun). Ini juga dapat digunakan sebagai pengontrol murah untuk mengontrol apa pun yang menggunakan chip radio nRF24L01. Layar LCD sangat berguna saat menyesuaikan.

(Ternyata cukup berguna dalam memeriksa ketika radio saya membuat dan kehilangan koneksi dengan nRF24L01 lain di "jaringan". Saya dapat berjalan-jalan dan melihat layar tampilan menunjukkan status koneksi radio! Cukup membantu untuk menyesuaikan pengaturan dan memverifikasi jangkauan!)

Setelah saya menyelesaikan Portal Turret, saya melihat video klip pendek adegan opera Cara Mia di akhir Portal 2. Saya berpikir, “hei, saya sudah membangun beberapa menara sekarang. Saya bisa melakukan itu! Yah, saya memiliki menara, tetapi untuk membuatnya berfungsi, mereka sekarang perlu berkomunikasi satu sama lain, atau dengan perangkat lain. Setelah memikirkannya, dan berpikir bahwa kontrol manual juga akan keren, saya akhirnya memutuskan bahwa saya akan membangun Master Turret Controller, atau MTC.

Ok, jadi bagaimana untuk pergi tentang ini? Yah, saya tidak ingin memodifikasi menara terlalu banyak, jadi itu kendala. Saya memiliki beberapa chip radio nRF24L01 yang belum pernah saya gunakan, dan saya pikir itu akan sejalan dengan tujuan saya menggunakan komponen yang murah dan mengandalkan desain dan kode mekanis untuk membuat ini berfungsi. Saya harus membuat pengontrol dan mulai memikirkan apa yang akan ada di pengontrol dan apa sebenarnya yang bisa saya lakukan pada menara. Cara Mia sudah ada dalam agenda, tapi apa lagi?

Kontrol manual: Jadi begitu sayap terbuka, saya ingin mengontrol pitch dan pivot. 2 sumbu = joystick, jadi kontrol joystick dan beberapa tombol tekan. Tombol tekan 1 akan menembakkan turret, dan mungkin tombol tekan 2 akan membuatnya mengatakan salah satu ucapannya. Kedengarannya bagus! Cukup sederhana…

Obrolan: Baru-baru ini saya melihat rutinitas “Siapa yang Pertama” - Abbott dan Costello lagi, dan sebuah lampu mati di kepala saya! Saya juga akan membuat sketsa komedi rutin menggunakan semua ucapan, menggunakan beberapa menara!! Oke, yang ini belum sepenuhnya diketahui, tapi saya yakin saya akan menyelesaikannya setelah pembangunan saya berlangsung.

Saya juga ingin MTC ini nirkabel, jadi saya memilih opsi bertenaga baterai 9V sederhana dan merancang pengontrol untuk ditenagai oleh colokan mini-USB melalui Nano di bagian belakang. Berguna untuk memperbarui juga.

Langkah 1: Memasukkan Radio Ke Menara

Saya pertama kali membuat radio bekerja dengan beberapa Nano telanjang, untuk memastikan saya bisa membuatnya berfungsi dan mengirim informasi di antara beberapa perangkat. Setelah itu selesai, tinggal memasukkan radio ke menara yang ada. Hmm, menambahkan PCB fisik ke turret cukup mudah. Saya baru saja memodifikasi dudukan chip untuk menyertakan chip nRF24L01, Nano, dan mp3. Oke. Satu bagian fisik dimodifikasi, dengan beberapa kabel.

Dudukan chip yang dimodifikasi sudah menjadi bagian dari bagian cetakan turret sekarang. Saya baru saja menghapus opsi non-radio dari bagian yang dicetak di build itu. Tidak akan ada bedanya jika seseorang ingin membangun varian non-radio. Hanya saja, jangan sertakan chip radio nRF24L01.

Langkah 2: (Re)pengkabelan Turret

(Re)pengkabelan Turret
(Re)pengkabelan Turret
(Re)pengkabelan Turret
(Re)pengkabelan Turret
(Re)pengkabelan Turret
(Re)pengkabelan Turret
(Re)pengkabelan Turret
(Re)pengkabelan Turret

Uh oh…

Ini tidak terlihat bagus. Saya perlu menambahkan 5 koneksi ke Nano, dan saya sudah kehabisan pin yang tersedia. Setelah melihat ini sebentar, saya menyadari koneksi mana yang didahulukan, dan menyadari bahwa untuk membuat ini berfungsi, saya harus memetakan kembali sebagian besar koneksi Nano yang ada.

Bagi yang ingin membuat “Radio Turret” dan sudah membangun generasi sebelumnya… Maaf…

Sekarang, saya telah melakukan perubahan ini beberapa kali dan ternyata prosesnya tidak terlalu buruk. Itu memang melibatkan masuk kembali, tetapi saya dapat membatalkan koneksi yang ada ke Nano dan kemudian menyambung kembali ke pin yang sesuai tanpa terlalu banyak kesedihan. Saya menambahkan 7 kabel untuk chip radio ke nRF24L01 (5 kabel komunikasi, 3v dan GND), kemudian menghubungkan ujung lainnya ke Nano.

Lebih banyak kabel di sana sekarang, jadi jauh lebih penting untuk menjaga semuanya tetap rapi saat merutekan kabel.

PENTING: Saat merakit, pastikan kabel tidak menekan tombol Nano reset di papan!! Itu terjadi pada saya di satu dan melemparkan saya untuk loop yang tidak perlu!

Jadi build turret sekarang memiliki 2 skema pengkabelan: opsi lama "non-radio" dan opsi "radio Turret" yang direvisi. Jika membangun menara "non-radio" hari ini, saya masih akan menggunakan skema dan kode radio. Hapus saja atau komentari bagian radio apakah itu rute yang dipilih, atau tidak. Turret harus tetap bekerja sendiri tanpa radio.

Langkah 3: Komponen Listrik MTC

Komponen Listrik MTC
Komponen Listrik MTC
Komponen Listrik MTC
Komponen Listrik MTC
Komponen Listrik MTC
Komponen Listrik MTC

Setelah turret beres, saatnya membuat MTC.

MTC menggunakan komponen berikut, semuanya bersumber dari Amazon atau Baggood atau Ali Express, dll. Saya menunjukkan nomor suku cadang Amazon yang saya rujuk untuk referensi, karena barang-barang ini biasanya tersedia dan harga terjangkau (dan saya tidak perlu melakukannya tunggu 2+ minggu untuk mendapatkan apa yang saya butuhkan sebelum saya dapat memulai desain mekanis!)

  • Arduino Nano 0.96” LCD, (SSD1306) Saya menggunakan versi Biru/Kuning
  • Joystick Kecil (HW-504) modul joystick 5V PS
  • Sakelar sakelar (dx-004) 22mm * 13mm
  • Radio - (nRF24L01)
  • Tombol tekan 12mm (CLT1088 untuk tombol berwarna, PBS-33B untuk hitam)
  • Sekrup 2 mm (Set Sekrup Self Tapping M2, bermacam-macam Kepala Pan Cross Drive)
  • 5mm LED pilihan Anda untuk indikator. (Jangan gunakan LED terang!!)
  • Konektor baterai 9V generik dengan kuncir
  • Baterai 9V (gunakan yang bagus, bukan salah satu dari varietas toko dolar yang tidak selalu dapat memasok daya yang cukup untuk proyek-proyek ini!)
  • Saya menggunakan kawat berselubung silikon. Saya suka menggunakannya untuk proyek-proyek ini.

Saya awalnya menggunakan beberapa LED terang, tetapi ternyata terlalu bagus. Mereka membutakan saya! Saya akhirnya menggunakan beberapa LED lama yang lemah, dan itu lebih masuk akal untuk aplikasi ini.

Langkah 4: Bagian Cetak 3D

Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D

Saya mendesain MTC menggunakan Fusion, mirip dengan cara saya mendesain turret.

Perakitan yang dicetak hanya membutuhkan 3 bagian:

  • Panel atas (versi 1 atau 2)
  • Perumahan bawah
  • tali LCD

Chip nRF, Nano, baterai 9V, sakelar sakelar, dan LED dipasang di pelat atas tanpa pengencang. LED hanya menekan di piring dan ditahan di tempatnya oleh tab. Mereka seharusnya hanya membentak, tetapi jangan berlebihan. Pelat atas dirancang untuk menahan Nano, dan chip nRF harus masuk dengan lembut. Hati-hati dengan tab kecil nRF; itu kecil dan ditekuk ke belakang untuk membuka dan dilepaskan untuk menangkap chip. Meskipun perjalanannya terbatas, berhati-hatilah di sini.

Joystick dan LCD memerlukan sekrup 2 mm (panjang 5 mm) untuk menahannya ke pelat atas. PCB joystick memiliki lubang besar, jadi saya merasa perlu ring kecil untuk memastikan sekrupnya tidak masuk.

Saya telah menemukan bahwa PCB datang pada LCD sedikit berbeda secara dimensi dari pabrikan ke pabrikan, jadi saya memilih untuk menggunakan tali sederhana untuk menahannya di tempat daripada cleat atau kait.

Perhatikan bahwa LCD dapat dipasang secara fisik ke pelat atas dengan cara apa pun, tetapi tampilan hanya muncul sepenuhnya melalui bukaan dalam satu orientasi! Untuk alasan ini, saya telah menyertakan opsi pelat atas ke-2 saat menggunakan layar kuning/biru terpisah. Satu versi memiliki warna kuning di bagian atas, dan versi lainnya akan menampilkan warna kuning di bagian bawah seperti yang ditunjukkan pada foto saya.

Untuk LCD versi satu warna, tidak masalah yang mana yang digunakan karena Anda dapat membalik layar menggunakan perangkat lunak.

Karena semua pengkabelan dilakukan pada pelat atas, bagian bawah secara efektif hanyalah penutup yang dipasang pada pelat atas dengan sekrup 2mm yang lebih panjang (jumlah:4).

Alih-alih opsi "pintu baterai", saya hanya memasukkan baterai ke pelat atas. Ini berarti melepas 4 sekrup yang menahan bagian bawah ke atas untuk mengganti baterai, tetapi karena itu juga dapat ditenagai oleh kabel USB, bukan akhir dunia. Pelat atas dibuat dengan sistem dudukan baterai 9V yang harus cukup kokoh untuk penggunaan berulang, tidak terlalu rumit tetapi mencegah baterai bergerak.

Saya mencetak pelat atas dalam 2 warna seperti yang terlihat di foto. Saya menggunakan Prusa i3 Mk2 tanpa opsi multi warna, tetapi gunakan alat cetak warna mereka (https://www.prusaprinters.org/color-print/) untuk mengubah warna di tengah proses. Periksa layer yang teksnya berhenti dan menjadi padat, dan jadikan itu layer transisi. Voila! Teks berwarna!

Saya mencetak bagian pada ketinggian lapisan 0,35mm karena tidak perlu resolusi yang lebih baik pada bagian datar ini. Saya juga lebih suka tampilannya pada resolusi ini. Oh, dan itu mencetak cukup cepat juga!

Langkah 5: Perakitan Listrik

Perakitan Listrik
Perakitan Listrik
Perakitan Listrik
Perakitan Listrik
Perakitan Listrik
Perakitan Listrik
Perakitan Listrik
Perakitan Listrik

Komponen listrik semua dipasang di bagian bawah pelat Atas, dan semua kabel dilakukan bersama-sama. Tombol tekan dan sakelar harus dipasang terlebih dahulu, dan LCD, Nano, Joystick, radio nRF semuanya dapat disambungkan terlebih dahulu sebelum dipasang di pelat Atas. Saya merekomendasikan metode pra-pengkabelan masing-masing komponen, kemudian membuat koneksi akhir ke Nano di akhir. Saya juga merekomendasikan untuk mengunggah sketsa ke Nano telanjang terlebih dahulu, sebelum menyelesaikan pengkabelan.

Tidak ada yang lebih memuaskan daripada menyalakan perangkat dan melihatnya menjadi hidup seperti yang diharapkan setelah selesai!

Satu-satunya persiapan komponen listrik yang diperlukan adalah melepas pin header dari joystick agar pas di bawah pelat atas. Layar LCD dapat dibeli dengan atau tanpa pin terpasang, dan akan berfungsi dengan baik. Nano harus dipilih tanpa pin header.

Langkah 6: Kode

Kode untuk MTC, Red turret, White Turret, dan Blue Turret sekarang

Nah, ini adalah pengalaman dalam coding! Saya memiliki turret yang bekerja secara independen, tetapi menggabungkan radio lebih sulit daripada yang saya kira! Saya juga bersenang-senang membuat bagian "Obrolan" berfungsi seperti yang diinginkan (lebih lanjut tentang itu nanti).

Kode MTC, setelah sepenuhnya diketahui, mulai membebani batas memori Nano! Saya harus melakukan penyesuaian dan menghemat kode agar lebih hemat memori. Pengalaman belajar yang baik lainnya.

Saya telah menyertakan kode "Turret w radio option" yang sesuai dalam build ini, karena keduanya bekerja bersama. Membangun menara opsi radio per halaman pembuatan Turret akan membuatnya siap untuk digunakan dengan MTC, atau untuk metode kontrol nRF24L01 Anda yang lain.

Juga, mendapatkan suara untuk bekerja dengan kode ini membutuhkan waktu, dan karena suara diambil dari situs web lain yang dapat diakses publik, saya memasukkan semua suara karena saya telah menggunakannya dalam beberapa file ZIP; satu untuk turret biasa, dan satu lagi untuk turret Cacat. Hal yang baik untuk Anda, pembaca yang budiman, adalah Anda dapat menggunakan suara di kartu SD Anda dengan kode seperti yang tertulis dan Anda akan siap melakukannya!

Langkah 7: Menu MTC - Navigasi

Menu MTC - Navigasi
Menu MTC - Navigasi
Menu MTC - Navigasi
Menu MTC - Navigasi
Menu MTC - Navigasi
Menu MTC - Navigasi

Kode MTC dimulai dengan layar Splash khusus, lalu memeriksa status menara. Jika tidak ada menara, itu hanya akan duduk di sana sampai menara terhubung!

Jika setidaknya satu turret terhubung, menu utama akan ditampilkan dan LED "Siap" akan menyala, kecuali jika turret terganggu atau sedang sibuk "berurusan dengan seseorang". Jika mereka sibuk, "layar Menara Sibuk" akan ditampilkan, dan LED "Sibuk" akan menyala.

Semua turret yang terhubung secara aktif harus dalam “Ready Mode” sebelum MTC dapat mengontrol turret.

Gunakan joystick (atas dan bawah) untuk menelusuri pilihan menu:

  • aria
  • Mengobrol
  • manual

Pilih opsi yang diinginkan menggunakan tombol 'X', atau dengan menekan joystick.

Mode Aria - memilih opsi ini akan menampilkan layar "Mode Aria" dan membuat menara melakukan adegan Aria di akhir game Portal 2. Setelah selesai, menara akan menutup dan menunggu perintah atau seseorang untuk membangunkannya.

Mode Obrolan - Memilih opsi ini akan menampilkan layar "Mode Obrolan" dan memulai urutan Obrolan. Setelah selesai, menara akan menutup dan menunggu perintah atau seseorang untuk membangunkannya.

Mode Manual - Memilih opsi ini akan menampilkan layar “Manual Mode”, menerangi LED “Manual” dan memungkinkan pengoperasian turret secara manual. Kontrol joystick pitch dan pivot. Menekan tombol 'X' akan mengaktifkan urutan penembakan. Menekan tombol 'T' akan membuat mereka "berbicara", di mana menara mengucapkan ucapan acak dari perpustakaan mereka.

Menekan tombol '<' atau kembali akan membatalkan tiga mode ini, menutup menara dan kembali ke menu utama.

Jika Anda ingin melihat status koneksi kawanan menara Anda (saat ini terbatas pada 3), tekan tombol 'T' saat berada di menu utama. Anda akan dibawa ke layar "status menara", di mana Anda dapat melihat status koneksi setiap menara.

Saat berada di layar “status turret”, Anda akan melihat status masing-masing turret.

  • Siap - siap untuk dikendalikan
  • Sibuk - menara sedang sibuk "merawat" seseorang
  • Tidak tersedia - MTC tidak dapat terhubung dengan menara ini

Tekan tombol '<' untuk kembali ke menu utama.

Langkah 8: Menyesuaikan Kode

Menyesuaikan Kode
Menyesuaikan Kode

Tangkapan layar yang ditampilkan di sini menunjukkan apa yang saya lihat terlalu lama… 4 sketsa sekaligus! Siapa bilang debugging tidak menyenangkan!

Kode menyediakan kontrol dan opsi yang ditunjukkan di atas, tetapi bagaimana dengan menyesuaikan kode?

Tentu saja! Tetapi ada cukup banyak yang terjadi di sini, jadi berikut adalah beberapa panduan atau tip.

Tip1 - Memodifikasi urutan "Obrolan". Modifikasi ini terjadi pada kode turret.

Saya mencoba menemukan cara agar kode berfungsi untuk saya di mana pun saya bisa. Membuat urutan obrolan lebih dapat diedit (Apakah itu sebuah kata?) sehingga saya bisa fokus pada cerita membutuhkan lebih banyak pekerjaan di awal, tetapi membuatnya lebih mudah untuk disesuaikan setelahnya.

Mengubah urutan Obrolan menggunakan struktur pengkodean yang disediakan dapat dilakukan dengan cara yang cukup mudah, asalkan Anda mengikuti metode yang digunakan dalam kode. Menggunakan file suara yang disediakan, dari game Portal 2, Anda hanya perlu mengubah tabel (chatSayings).

Pilih pepatah untuk turret biasa atau turret rusak. Pepatah adalah file mp3 yang diidentifikasi oleh "00XX -" diikuti dengan teks yang menjelaskan peribahasa tersebut. Ini adalah nomor yang merupakan bagian penting. Turret #1 akan menggunakan nilai XX ini dalam tabel. Turret #2 akan mengawali nilai XX dengan '1', dan turret #3 akan mengawali nilai XX dengan '2'. Jadi, misalnya, jika Anda memilih ungkapan, "0040 - maaf", dan ingin menara # 3 mengatakannya, Anda akan memasukkan "240" ke dalam tabel dalam urutan yang benar. Jika menara # 1 mengatakannya, Anda akan memasukkan "40" ke dalam tabel.

Lakukan hal yang sama untuk ekspresi berikutnya, dan seterusnya. Itu bisa berupa beberapa ekspresi di antara menara, atau beberapa. (Saya tidak mengetahui keterbatasan metode ini, selain memori).

Anda tidak perlu mengubah nilai tabel lain karena ini adalah pengaturan waktu yang sesuai dengan pepatah di tabel. Satu-satunya jalur lain yang berubah adalah di sekitar jalur 520.

if (i >= 43) { // akhir barisan

Nilai i di sini harus disetel ke jumlah ucapan di tabel chatSayings.

Untuk membuat ucapan yang sepenuhnya disesuaikan, (di mana kesenangan sebenarnya dimulai!), Anda perlu mengatur ekspresi dalam file bernomor, dan mengetahui lamanya waktu yang dibutuhkan untuk memutar file. Simpan file ke folder "mp3" di direktori root kartu SD menggunakan metode empat digit ("0001", "0002", dll.). Kemudian catat waktu dalam milidetik yang diperlukan untuk memutar file tersebut. Masukkan nilai-nilai ini ke dalam tabel yang sesuai.

Jadi untuk ekspresi yang disimpan sebagai, “0037 - [ekspresi Anda]”, yang membutuhkan waktu 5400 milidetik untuk dimainkan, Anda akan meletakkan '37' di tabel chatSayings di lokasi yang sesuai (dan menambahkan awalan tergantung pada turret mana yang mengatakan itu), dan 5400 di tabel NormaTimings di lokasi yang sama (seperti item ke-5 di setiap tabel).

Sekarang ketika nilai 'i' bertambah, kode akan memutar 0037 selama 5400 milidetik.

Perhatikan bahwa saya telah menambahkan variabel "timeadder" yang menambahkan sedikit waktu ekstra untuk setiap ucapan saat bermain. Ini memberikan sedikit jarak antara ucapan sehingga tidak tampak tumpang tindih.

Keindahan dari metode ini adalah bahwa tabel yang lengkap sama persis di setiap menara! Tidak perlu menyesuaikan tabel ini untuk setiap turret. Anda hanya perlu menyortir satu tabel, dan kode akan menentukan apa yang dikatakan setiap turret berdasarkan tabel yang sama.

Ini berarti Anda dapat fokus pada penulisan skrip alih-alih pengkodean!

Jika seseorang memiliki cara yang lebih baik untuk melakukan ini, saya akan senang mendengarnya!!

Langkah 9: Ringkasan

Ringkasan
Ringkasan

Jadi ini membutuhkan lebih banyak waktu daripada yang saya kira, tetapi saya agak tergelitik dengan hasilnya. Beberapa rutinitas Obrolan masih membuat saya tertawa!

Saya akan senang mendengar metode lain untuk melakukan hal-hal yang saya lakukan dalam kode saya. Saya yakin ada bagian yang dapat ditulis ulang dan menggunakan lebih sedikit memori, memungkinkan lebih banyak fitur atau opsi.

Saya juga ingin melihat ide-ide lain dimasukkan ke dalam MTC dan kontrol menara!

Saya harap saya telah menyediakan platform untuk desainer dan pembuat kode lain untuk digunakan/dicuri/dipelajari. Saya bisa melihat ini digunakan untuk membantu orang belajar coding. Hapus bagian dari MTC dan/atau turret, seperti "Mode Manual" misalnya, dan minta siswa mengembangkan cara mereka sendiri untuk memasukkan kontrol manual!

Saya telah belajar banyak dari komunitas ini dan web yang lebih luas secara umum. Saya masih kagum betapa banyak orang menghabiskan banyak waktu untuk mencari tahu dan membagikannya kepada dunia. Saya pikir saya harus mengambil apa yang telah saya pelajari, menerapkannya, lalu membagikannya kepada Anda juga!

Semoga berhasil dan bersenang-senang membangun pasukan menara Anda sendiri!

Direkomendasikan: