Daftar Isi:

Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru: 9 Langkah (dengan Gambar)
Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru: 9 Langkah (dengan Gambar)

Video: Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru: 9 Langkah (dengan Gambar)

Video: Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru: 9 Langkah (dengan Gambar)
Video: Hati2 bossku jika hendak cuci mobil. Pastikan pilih cuci steam yg model H agar lebih safety ๐Ÿ™๐Ÿ‘ 2024, November
Anonim
Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru
Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru
Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru
Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru
Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru
Arduino Kustom untuk Menjaga Tombol Roda Kemudi CAN Dengan Stereo Mobil Baru

Saya memutuskan untuk mengganti stereo mobil asli di Volvo V70 -02 saya dengan stereo baru sehingga saya dapat menikmati hal-hal seperti mp3, bluetooth, dan handsfree.

Mobil saya memiliki beberapa kontrol roda kemudi untuk stereo yang saya ingin tetap dapat digunakan. Saya tidak berharap itu menjadi masalah karena ada beberapa adaptor di pasaran yang seharusnya kompatibel dengan mobil saya. Namun saya segera menemukan bahwa mereka tidak! (Sepertinya adaptor untuk V70 mungkin bermasalah dengan -02 mobil karena protokol CAN yang sedikit berbeda.)

Jadi apa yang harus dilakukan? Simpan stereo lama? Menjalani hidup dengan tombol yang tidak berfungsi? Tentu saja tidak! Jika tidak ada adaptor yang berfungsi di pasaran maka kita harus membuatnya!

Instruksi ini dapat diterapkan (dengan beberapa adaptasi) ke mobil di mana tombol roda kemudi berkomunikasi melalui bus CAN.

Langkah 1: Cari Tahu Cara Mengirim Perintah ke Stereo

Cari Tahu Cara Mengirim Perintah ke Stereo
Cari Tahu Cara Mengirim Perintah ke Stereo
Cari Tahu Cara Mengirim Perintah ke Stereo
Cari Tahu Cara Mengirim Perintah ke Stereo

Hal pertama yang harus Anda lakukan adalah mencari tahu jenis input jarak jauh yang diharapkan oleh stereo. Biasanya pabrikan tidak akan memberi tahu Anda itu dan Anda mungkin juga tidak memiliki akses ke remote control yang berfungsi untuk rekayasa balik.

Remote in untuk stereo baru saya (Kenwood) terdiri dari satu kabel dan saya belum dapat menemukan informasi tentang cara kerjanya. Namun ia juga memiliki jack 3,5 mm untuk input jarak jauh. Saya juga tidak dapat menemukan apa pun tentang itu. Tetapi ada beberapa informasi tentang jack 3,5 mm untuk merek lain yang menyarankan bahwa perintah yang berbeda diidentifikasi dengan menerapkan resistensi khusus antara ujung dan selongsong (dan opsional antara cincin dan selongsong). Misalnya. https://forum.arduino.cc/index.php?topic=230068.0. Jadi saya memutuskan untuk mencobanya, dilengkapi dengan papan tempat memotong roti, sekelompok resistor dan colokan 3,5 mm yang dicolokkan ke stereo dan terhubung ke papan tempat memotong roti. Tidak ada yang dikenali pada awalnya, tetapi stereo memiliki menu "mode belajar" dan di sana perintah dapat berhasil diatur sambil menerapkan berbagai resistensi. Kesuksesan!

Namun saya kemudian menemukan bahwa saya membuat kesalahan di sini: Tidak semua perintah yang tampaknya dipelajari stereo akan benar-benar berfungsi. Misalnya. 30 kOhm ditemukan dalam mode belajar tetapi tidak berfungsi kemudian dan untuk beberapa perintah yang saya atur, perbedaan resistansi sangat kecil sehingga kemudian perintah yang salah dipicu.

Jadi saya sarankan Anda menggunakan papan tempat memotong roti dengan resistor dan tombol sakelar untuk semua perintah jarak jauh yang ingin Anda tangani dan benar-benar menguji bahwa semuanya akan berfungsi.

Jika stereo mobil Anda tidak dapat menerima input dengan cara yang sama maka Anda harus mencari tahu cara kerjanya sehingga Anda dapat mengadaptasi solusi ini. Jika Anda tidak dapat mengetahuinya sama sekali maka Anda memiliki masalah.

Langkah 2: Cari Tahu Dimana Terhubung ke CAN Bus

Cari Tahu Dimana Terhubung ke CAN Bus
Cari Tahu Dimana Terhubung ke CAN Bus

Anda perlu menemukan tempat yang baik untuk terhubung ke bus CAN. Karena Anda mengganti stereo lama yang berkomunikasi melalui CAN, Anda harus dapat menemukannya di belakang stereo. Bus CAN terdiri dari sepasang kabel bengkok (CAN-L dan CAN_H). Konsultasikan diagram pengkabelan untuk mobil Anda untuk memastikan.

Langkah 3: Rekayasa Balik Pesan CAN

Rekayasa Terbalik dari Pesan CAN
Rekayasa Terbalik dari Pesan CAN

Kecuali Google dapat memberi tahu Anda pesan CAN apa yang harus Anda dengarkan, maka Anda harus terhubung ke bus CAN dan melakukan rekayasa balik. Saya menggunakan Arduino Uno dan perisai CAN. (Anda tidak benar-benar membutuhkan pelindung CAN, seperti yang akan Anda lihat nanti, Anda dapat menggunakan beberapa komponen murah di papan tempat memotong roti.)

Konsultasikan dengan Google untuk mengetahui baud rate yang harus Anda gunakan saat menghubungkan ke mobil Anda. (Biasanya Anda akan menemukan bahwa ada jaringan CAN kecepatan tinggi dan kecepatan rendah. Anda terhubung ke jaringan kecepatan rendah.)

Anda juga perlu memprogram Arduino untuk mencatat semua pesan CAN melalui antarmuka serial sehingga Anda dapat menyimpannya ke file log di komputer Anda. Arduino IDE standar tidak akan menyimpan data ke file log tetapi Anda dapat menggunakan mis. Putty sebagai gantinya.

Sebelum Anda mulai menulis program, Anda perlu menginstal pustaka CAN_BUS_Shield.

Berikut adalah beberapa kode semu untuk membantu Anda memulai program Anda:

mempersiapkan()

{ init koneksi serial init CAN library } loop() { jika pesan CAN diterima { read CAN message format log entry, write log entry to serial } }

Petunjuk:

Anda akan menggunakan instance kelas MCP_CAN untuk mengakses fungsionalitas pustaka CAN:

MCP_CAN m_can;

Ini BISA:

sementara (m_can.begin() != CAN_OK)

{ penundaan(1000); }

Periksa dan baca pesan CAN:

while(m_can.checkReceive() == CAN_MSGAVAIL)

{ // Dapatkan id BISA, panjang pesan dan data pesan m_can.readMsgBufID(&m_canId, &m_msgLen, m_msgBuf); // Lakukan sesuatu dengan data pesan di sini }

Jika Anda memerlukan bantuan lebih lanjut, Anda dapat menemukan tautan ke program saya di langkah selanjutnya. Pustaka CAN shield juga menyertakan sebuah contoh. Atau periksa instruksi mviljoen2 yang menyertakan langkah serupa.

Pertama, Anda memerlukan file referensi untuk membantu Anda menyaring data. Alihkan pengapian ke mode radio dan catat semuanya selama beberapa menit tanpa menyentuh tombol apa pun.

Kemudian untuk setiap tombol, mulai logging, tekan tombol dan berhenti logging.

Setelah selesai, Anda perlu menyaring semua yang ada di log referensi Anda dari log tombol Anda untuk menemukan kandidat Anda. Saya menemukan bahwa masih banyak pesan yang tersisa, jadi saya membuat lebih banyak log dan kemudian mengharuskan "kandidat untuk perintah A harus ada di semua file tombol-A dan tidak ada file referensi". Itu membuat saya hanya memiliki beberapa kemungkinan untuk dicoba.

Log akan berisi banyak pesan sehingga Anda perlu menulis beberapa program untuk ini atau mungkin menggunakan Excel. (Saya menggunakan program dengan kondisi kode yang sangat sulit untuk kebutuhan saya, jadi saya khawatir saya tidak dapat menawarkan program yang dapat Anda gunakan.)

Sebuah kata peringatan: Anda tidak dapat memastikan bahwa sebuah tombol akan selalu menghasilkan pesan yang sama. Beberapa bit mungkin berisi penghitung yang bertambah, dll. (Namun Anda dapat mengecualikan id pesan yang sama.)

Jika Anda memiliki Volvo V70 -02, inilah yang Anda cari:

  • ID pesan: 0x0400066Byte0: 0x00, 0x40, 0x80 atau 0xc0 (tidak peduli)
  • Byte1: 0x00 (tidak peduli)
  • Byte2: 0x00 (tidak peduli)
  • Byte3: 0x00-0x07 (tidak peduli)
  • Byte4: 0x1f (tidak peduli)
  • Byte5: 0x40 (tidak peduli)
  • Byte6: 0x40 (tidak peduli)
  • Byte7: Pengidentifikasi tombol: 0x77 = volume naik, 0x7b = volume turun, 0x7d = trek berikutnya, 0x7e = trek sebelumnya.

Ketika Anda yakin bahwa Anda telah menemukan perintah, mungkin ide yang baik untuk memodifikasi program sehingga hanya mencatat pesan yang menarik. Lihat jendela log serial saat Anda menekan tombol untuk memverifikasi bahwa Anda telah mengidentifikasi pesan yang benar.

Langkah 4: Prototipe Perangkat Keras

Prototipe Perangkat Keras
Prototipe Perangkat Keras

Perangkat keras Anda harus dapat:

  1. Identifikasi perintah yang diterima di bus CAN
  2. Kirim perintah dalam format lain ke stereo

Jika Anda memiliki cukup ruang, Anda dapat menggunakan Arduino dan perisai CAN untuk bagian pertama dan memasang beberapa perangkat keras tambahan untuk yang kedua. Namun ada beberapa kelemahan:

  • Biaya perisai CAN
  • Ukuran
  • Catu daya Arduino tidak akan senang jika terhubung langsung ke mobil Anda 12V (mungkin akan berfungsi tetapi umurnya kemungkinan akan dipersingkat).

Jadi alih-alih saya menggunakan yang berikut ini:

  • Atmega 328, "Otak Arduino". (Ada beberapa varian, dapatkan yang sama dengan yang ada di Arduino Uno. Anda bisa membelinya dengan atau tanpa boot loader Arduino.)
  • 16 MHz kristal + kapasitor untuk sinyal clock.
  • MCP2551 BISA transceiver.
  • MCP2515 CAN pengontrol.
  • TSR1-2450, mengubah 6,5-36V menjadi 5V. (Tidak digunakan dalam prototipe karena perangkat lunak tidak akan peduli dengan catu daya.)
  • Sakelar CD4066B yang akan digunakan saat mengirim perintah ke stereo.
  • Beberapa resistor. (Nilai dapat ditemukan di skema Eagle di langkah selanjutnya.)

Hal yang baik dengan konfigurasi ini adalah sepenuhnya kompatibel dengan Arduino dan CAN shield library.

Jika Anda ingin menangani lebih dari empat tombol, Anda mungkin ingin mempertimbangkan untuk menggunakan sesuatu selain CD4066B. CD4066B dapat digambarkan sebagai empat sakelar dalam satu, masing-masing dikendalikan oleh salah satu pin Atmegas GPIO. Untuk setiap sakelar ada resistor yang terhubung yang dapat digunakan untuk mengontrol resistansi yang digunakan sebagai input ke stereo. Jadi ini dapat dengan mudah digunakan untuk mengirim empat perintah yang berbeda. Jika mereka digabungkan maka nilai resistansi tambahan dapat diperoleh. Di sinilah kesalahan yang saya sebutkan sebelumnya masuk. Saya memiliki empat tombol, tetapi saya berencana untuk menerapkan dua di antaranya sebagai tekan lama dan pendek untuk memberi saya enam perintah berbeda. Tetapi pada akhirnya saya menemukan bahwa saya tidak dapat menemukan kombinasi resistor yang akan memberi saya enam kombinasi yang berfungsi. Mungkin saja untuk menghubungkan sinyal keluar analog ke stereo (ujung 3,5 mm). (Perhatikan bahwa Atmega tidak memiliki pin keluaran analog yang sebenarnya sehingga beberapa perangkat keras tambahan akan diperlukan.)

Untuk tujuan pengujian, saya juga membuat simulator "mobil dan stereo" sederhana untuk terhubung ke prototipe saya. Itu membuat debugging lebih mudah dan kecuali Anda menikmati duduk di mobil dan program Anda, saya dapat merekomendasikannya.

Prototipe diilustrasikan oleh papan tempat memotong roti bagian bawah pada gambar. Untuk catu daya, pemrograman, dan pencatatan serial terpasang ke Arduino Uno di mana chip Atmega telah dilepas.

Breadboard atas adalah simulator mobil + stereo yang akan digunakan untuk pengujian awal prototipe.

Prototipe + simulator dimaksudkan untuk bekerja seperti ini:

  • Tekan salah satu tombol sakelar di papan simulator. (Itu adalah tombol roda kemudi Anda.)
  • Ketika program simulator mendeteksi penekanan tombol, program akan mengirimkan pesan CAN yang sesuai setiap 70 ms selama tombol ditekan. (Karena log yang saya ambil sebelumnya menunjukkan bahwa cara kerjanya di mobil saya.) Ini juga akan mengirim banyak pesan CAN "sampah" untuk mensimulasikan lalu lintas lain di bus.
  • Pesan CAN dikirim pada bus CAN.
  • Pesan CAN diterima oleh prototipe.
  • MCP2515 melempar semua pesan yang tidak terkait berdasarkan id pesan.
  • Ketika MCP2515 menerima pesan yang harus ditangani, itu akan menunjukkan bahwa ada pesan yang diantrekan.
  • Atmega akan membaca pesan dan memutuskan tombol mana yang harus dianggap aktif.
  • Atmega juga akan melacak kapan pesan terakhir diterima, setelah waktu tertentu tombol akan dianggap terlepas. (Pesan CAN hanya menunjukkan bahwa tombol dimatikan, bukan ditekan atau dilepaskan.)
  • Jika sebuah tombol dianggap aktif maka satu atau lebih sakelar di CD4066B akan diaktifkan.
  • Simulator (sekarang bertindak sebagai stereo Anda) akan mendeteksi bahwa hambatan diterapkan antara ujung dan selongsong. (Ujung terhubung ke 3.3V dan melalui resistor ke pin input analog. Ketika tidak ada perintah yang aktif, pin ini akan membaca 3.3V, ketika sebuah perintah aktif nilainya akan menjadi lebih rendah dan mengidentifikasi perintah tersebut.
  • Saat perintah aktif, led yang sesuai juga akan diaktifkan. (Ada enam led karena saya berencana menggunakan tekan lama / pendek yang berbeda untuk dua tombol saya.)

Untuk detail lebih lanjut tentang perangkat keras prototipe, lihat skema Eagle di langkah selanjutnya.

Detail tambahan tentang perangkat keras papan simulator:

  • Kristal 16 MHz
  • kapasitor 22 pF
  • Resistor LED harus dipilih berdasarkan sifat LED
  • Resistor terhubung ke A7 dan 3.3V, pilih mis. 2kOhm (tidak kritis).
  • Resistor yang terhubung ke MCP2551 dan MCP2515 bersifat pull-up/pull-down. Pilih mis. 10 kOhm.

(Atau Anda dapat menggunakan perisai CAN untuk "bagian CAN" dari simulator jika Anda mau.)

Penting bagi Anda untuk mengetahui bagaimana pin Atmega dipetakan ke pin Arduino saat Anda mendesain perangkat keras.

(Jangan hubungkan led apa pun langsung ke CD 4066B, itu hanya dapat menangani arus rendah. Saya mencobanya ketika saya pertama kali menguji output dan chip menjadi tidak berguna. Hal baiknya adalah saya telah membeli beberapa dari mereka hanya karena mereka sangat murah.)

Langkah 5: Pemrograman Sekering

Mungkin Anda memperhatikan pada langkah sebelumnya bahwa prototipe tidak memiliki komponen terpisah untuk menghasilkan sinyal clock ke MCP2515. Itu karena sudah ada kristal 16 MHz yang digunakan sebagai sinyal clock Atmega yang bisa kita gunakan. Tapi kita tidak bisa begitu saja menghubungkannya langsung ke MCP2515 dan secara default tidak ada sinyal clock out di Atmega.

(Jika Anda mau, Anda dapat melewati langkah ini dan menambahkan perangkat keras jam tambahan sebagai gantinya.)

Namun kita dapat menggunakan sesuatu yang disebut "pemrograman sekering" untuk mengaktifkan sinyal clock out pada salah satu pin GPIO.

Pertama, Anda perlu mencari file bernama "boards.txt" yang digunakan oleh Arduino IDE Anda. Anda perlu menyalin entri untuk Arduino Uno, memberinya nama baru dan mengubah nilai untuk low_fuses.

Papan baru saya terlihat seperti ini:

############################################################# ############ # Berdasarkan Arduino Uno # Perubahan: # low_fuses diubah dari 0xff ke 0xbf untuk mengaktifkan clock 16 MHz # keluar di Atmega PB0/pin 14 = Arduino D8

clkuno.name=Jam keluar (Arduino Uno)

clkuno.upload.protocol=arduino clkuno.upload.maximum_size=32256 clkuno.upload.speed=115200 clkuno.bootloader.low_fuses=0xbf clkuno.bootloader.high_fuses=0xde clkuno.bootloader.extended_fuses=0xfd clkuno..bootloader.file=optiboot_atmega328.hex clkuno.bootloader.unlock_bits=0xff clkuno.bootloader.lock_bits=0xcf clkuno.build.mcu=atmega328p clkuno.build.f_cpu=16000000L clkuno.

##############################################################

Perhatikan bahwa jam keluar diaktifkan dengan mengatur bit kontrolnya ke 0.

Ketika Anda telah membuat papan baru di file konfigurasi papan, Anda harus membakar boot loader baru ke Atmega. Ada berbagai cara untuk melakukan ini, saya menggunakan metode yang dijelaskan di

Setelah Anda melakukan ini, ingatlah untuk memilih jenis papan baru Anda dan bukan Arduino Uno saat Anda mengunggah program ke Atmega.

Langkah 6: Perangkat Lunak

Perangkat Lunak
Perangkat Lunak

Saatnya membuat perangkat keras bodoh menjadi pintar dengan menambahkan beberapa perangkat lunak.

Berikut adalah beberapa kode semu untuk prototipe:

lastReceivedTime = 0

lastReceivedCmd = none cmdTimeout = 100 setup() { aktifkan watchdog configure pins D4-D7 sebagai pin output init CAN setup CAN filter } loop() { reset watchdog if (pesan CAN diterima) { untuk setiap perintah tombol { jika pesan CAN milik perintah tombol { lastReceivedTime = sekarang lastReceivedCmd = cmd } } } if now > lastReceivedTime + cmdTimeout { lastReceivedCmd = none } untuk setiap perintah tombol { if lastReceivedCmd adalah perintah tombol { set command pin output = on } else { set command pin output = off } } }

cmdTimeout memutuskan berapa lama kita harus menunggu sebelum kita mempertimbangkan tombol aktif terakhir yang dirilis. Karena perintah pesan tombol CAN dikirim kira-kira setiap 70 ms, itu perlu lebih besar dari itu dengan beberapa margin. Namun jika terlalu besar akan ada pengalaman lag. Jadi 100 ms sepertinya kandidat yang bagus.

Tapi apa itu anjing penjaga? Ini adalah fitur perangkat keras kecil yang berguna yang dapat menyelamatkan kita jika terjadi kerusakan. Bayangkan kita memiliki bug yang menyebabkan program macet saat perintah volume naik aktif. Kemudian kita akan berakhir dengan stereo pada volume maksimal! Tetapi jika pengawas tidak diatur ulang untuk waktu tertentu, ia akan memutuskan bahwa sesuatu yang tidak terduga telah terjadi dan hanya mengeluarkan pengaturan ulang.

batalkan pengaturan()

{ // izinkan maksimal 250 md untuk loop wdt_enable(WDTO_250MS); // barang init lainnya } void loop() { wdt_reset(); // melakukan sesuatu }

BISA menyaring? Nah, Anda dapat mengonfigurasi pengontrol CAN untuk membuang semua pesan yang tidak cocok dengan filter sehingga perangkat lunak tidak perlu membuang waktu untuk pesan yang tidak kita pedulikan.

topeng panjang tanpa tanda = 0x1ffffffff; // Sertakan semua 29 bit header di mask

filterId panjang yang tidak ditandatangani = 0x0400066; // Kami hanya peduli dengan id pesan CAN ini m_can.init_Mask(0, CAN_EXTID, mask); // Mask 0 berlaku untuk filter 0-1 m_can.init_Mask(1, CAN_EXTID, mask); // Mask 1 berlaku untuk filter 2-5 m_can.init_Filt(0, CAN_EXTID, filterId); m_can.init_Filt(1, CAN_EXTID, filterId); m_can.init_Filt(2, CAN_EXTID, filterId); m_can.init_Filt(3, CAN_EXTID, filterId); m_can.init_Filt(4, CAN_EXTID, filterId); m_can.init_Filt(5, CAN_EXTID, filterId);

Periksa kode pustaka CAN dan dokumentasi pengontrol CAN untuk detail selengkapnya tentang cara menyiapkan filter + mask.

Anda juga dapat mengatur pengontrol CAN untuk meningkatkan interupsi ketika pesan (yang tidak disaring) diterima. (Tidak termasuk dalam contoh di atas tetapi ada beberapa kode untuk itu di program saya.) Dalam hal ini tidak benar-benar menambah nilai apa pun dan mungkin membingungkan jika Anda tidak terbiasa dengan pemrograman.

Jadi itu adalah perangkat lunak prototipe dalam ringkasan. Tetapi kami juga membutuhkan beberapa kode untuk papan simulator:

lastSentTime = 0

minDelayTime = 70 setup() { konfigurasikan pin A0-A5 sebagai pin keluaran, konfigurasikan pin D4-D7 sebagai pin input dengan pullup internal. init CAN } loop() { send "junk" can msg set activeButton = none for each button { if button ditekan { set activeButton = button } } if activeButton != none { if now > lastSentTime + minDelayTime { perintah tombol kirim dapat mengirim pesan } set lastSentTime = sekarang } inval = baca pin A7 foreach(cmd) { if (min < inval < max) { led on } else { led off } } tunggu 1 ms }

Ini akan terus mengirim pesan CAN "sampah" kira-kira setiap md dan saat tombol ditekan, perintah yang sesuai setiap 70 md.

Anda mungkin perlu mencatat input pada pin A7 sambil menekan tombol yang berbeda untuk mengetahui nilai yang sesuai untuk variabel min dan maks yang dimiliki setiap tombol. (Atau Anda dapat menghitungnya, tetapi sebenarnya membaca input akan memberi Anda nilai yang lebih tepat.)

Anda harus sedikit berhati-hati saat memprogram mode pin. Jika Anda secara tidak sengaja mengatur pin yang dimaksudkan untuk menggunakan pullup internal sebagai pin output, maka Anda akan membuat pintasan potensial yang akan merusak Arduino Anda saat Anda mengatur output tinggi.

Jika Anda ingin memeriksa program saya, mereka dapat diunduh di sini:

  • CAN pesan log program
  • Program untuk papan simulator
  • Program untuk prototipe / papan akhir

Anda harus menyadari bahwa program-program tersebut tidak benar-benar cocok dengan kode semu di sini, mereka mengandung banyak hal "ekstra" yang tidak terlalu diperlukan dan jika Anda tidak terbiasa dengan pemrograman berorientasi objek, mungkin akan sedikit sulit untuk dibaca..

Langkah 7: Perangkat Keras Terakhir

Perangkat Keras Terakhir
Perangkat Keras Terakhir
Perangkat Keras Terakhir
Perangkat Keras Terakhir
Perangkat Keras Terakhir
Perangkat Keras Terakhir

Ketika Anda puas dengan program Anda (ingat untuk menguji prototipe di dalam mobil setelah pengujian akhir dengan papan simulator) sekarang saatnya untuk membangun perangkat keras yang sebenarnya.

Anda memiliki tiga opsi di sini:

  • Cepat dan kotor - solder barang bersama-sama di papan prototipe PCB.
  • Hardcore DIY - etsa PCB Anda sendiri.
  • Cara malas - pesan PCB profesional untuk menyolder komponen.

Jika Anda tidak terburu-buru, saya dapat merekomendasikan opsi terakhir. Jika Anda hanya membutuhkan PCB kecil seperti ini maka sangat murah untuk memesannya dari China. (Dan kemudian Anda mungkin akan mendapatkan sepuluh potong atau lebih sehingga Anda dapat membayar beberapa kesalahan penyolderan.)

Untuk memesan PCB, Anda harus mengirimkan desain Anda dalam format Gerber. Ada berbagai perangkat lunak untuk ini. Saya menggunakan Eagle yang dapat saya rekomendasikan. Anda dapat mengharapkan beberapa jam untuk mempelajarinya tetapi kemudian berfungsi dengan baik. Untuk papan kecil seperti ini Anda bisa menggunakannya secara gratis.

Berhati-hatilah saat membuat desain. Anda tidak ingin menunggu empat minggu untuk pengiriman hanya untuk mengetahui bahwa Anda melakukan sesuatu yang salah.

(Jika Anda memiliki keterampilan menyolder yang baik, Anda dapat merancang komponen yang dipasang di permukaan dan mendapatkan adaptor yang sangat kecil. Saya tidak.)

Kemudian pesan di mis. https://www.seeedstudio.com/fusion_pcb.html. Ikuti petunjuk tentang cara menghasilkan file Gerber dari desain Anda. Anda juga bisa mendapatkan preview dari hasil untuk memastikan bahwa itu baik-baik saja.

(Pada akhirnya saya harus memilih resistor lain untuk R4-R7 daripada yang tercantum dalam gambar skema. Sebaliknya saya menggunakan 2k, 4.7k, 6.8k dan 14.7k.)

Dan ingat - jangan bingung penomoran pin Atmega dengan penomoran pin Arduino!

Saya sarankan Anda tidak menyolder chip Atmega secara langsung tetapi menggunakan soket. Kemudian Anda dapat dengan mudah menghapusnya jika Anda perlu memprogram ulang.

Langkah 8: Pemasangan Mobil

Pemasangan Mobil
Pemasangan Mobil
Pemasangan Mobil
Pemasangan Mobil

Sekarang ke bagian yang paling menyenangkan - pasang di mobil Anda dan mulai gunakan! (Setelah Anda membuat / membeli kasing untuk itu.)

Jika Anda telah sepenuhnya menguji prototipe di mobil Anda, semuanya akan bekerja dengan sempurna.

(Seperti yang saya sebutkan sebelumnya, saya tidak melakukannya, jadi saya harus mengganti beberapa resistor dan melakukan beberapa perubahan dalam program saya.)

Juga pertimbangkan apakah Anda harus memasangnya di belakang stereo atau di tempat lain. Saya menemukan tempat yang bagus di atas kotak sarung tangan saya di mana saya dapat menjangkaunya dari dalam kotak sarung tangan tanpa membongkar apa pun. Itu mungkin berguna jika saya memutuskan untuk memutakhirkannya nanti.

Akhirnya tombol saya berfungsi lagi! Bagaimana saya bisa bertahan selama dua bulan tanpa mereka?

Langkah 9: Perbaikan di Masa Depan

Seperti disebutkan, jika saya membuat versi 2.0 ini saya akan mengganti 4066B dengan sesuatu yang lain (mungkin potensiometer digital) untuk fleksibilitas yang lebih besar.

Ada juga banyak hal lain yang dapat Anda lakukan. Misalnya. tambahkan modul bluetooth dan buat aplikasi remote control untuk ponsel Anda. Atau modul gps, maka ketika Anda dekat dengan rumah Anda dapat secara otomatis menaikkan volume dan mengirim pesan "windows down" CAN sehingga semua tetangga Anda dapat menikmati musik indah Anda.

Direkomendasikan: