Isi kandungan:

Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru: 9 Langkah (dengan Gambar)
Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru: 9 Langkah (dengan Gambar)

Video: Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru: 9 Langkah (dengan Gambar)

Video: Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru: 9 Langkah (dengan Gambar)
Video: Viral! Anak dan ibu diusir dari KRL?? 2024, Julai
Anonim
Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru
Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru
Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru
Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru
Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru
Custom Arduino untuk Tetap DAPAT Tombol Roda Kemudi Dengan Stereo Kereta Baru

Saya memutuskan untuk mengganti stereo kereta asal di Volvo V70 -02 saya dengan stereo baru sehingga saya dapat menikmati barang seperti mp3, bluetooth dan bebas tangan.

Kereta saya mempunyai beberapa kawalan roda stereng untuk stereo yang saya mahu masih dapat digunakan. Saya tidak menyangka akan menjadi masalah kerana terdapat beberapa adaptor di pasaran yang semestinya sesuai dengan kereta saya. Bagaimanapun saya segera mengetahui bahawa mereka tidak! (Sepertinya adaptor untuk V70 mungkin menghadapi masalah dengan -02 kereta kerana protokol CAN yang sedikit berbeza.)

Oleh itu, apa yang perlu dilakukan? Simpan stereo lama? Hidup dengan butang yang tidak berfungsi? Sudah tentu tidak! Sekiranya tidak ada penyesuai yang berfungsi di pasaran maka kita harus membuatnya!

Instruksional ini dapat digunakan (dengan beberapa penyesuaian) pada kereta di mana butang roda kemudi berkomunikasi melalui bas CAN.

Langkah 1: Ketahui Cara Menghantar Perintah ke Stereo

Ketahui Cara Menghantar Perintah ke Stereo
Ketahui Cara Menghantar Perintah ke Stereo
Ketahui Cara Menghantar Perintah ke Stereo
Ketahui Cara Menghantar Perintah ke Stereo

Perkara pertama yang harus anda lakukan ialah mengetahui jenis input jarak jauh yang diharapkan stereo. Biasanya pengeluar tidak akan memberitahu anda dan anda mungkin juga tidak mempunyai akses ke alat kawalan jauh yang berfungsi untuk teknik terbalik.

Alat kawalan jauh untuk stereo baru saya (Kenwood) terdiri daripada satu wayar dan saya belum dapat mengetahui maklumat mengenai cara ia berfungsi. Namun ia juga mempunyai bicu 3,5 mm untuk input jauh. Saya juga tidak dapat mengetahui apa-apa mengenai perkara itu. Tetapi ada beberapa maklumat mengenai bicu 3,5 mm untuk jenama lain yang menunjukkan bahawa perintah yang berbeza dikenal pasti dengan menerapkan rintangan khusus antara hujung dan lengan (dan pilihan antara cincin dan lengan). Cth. https://forum.arduino.cc/index.php?topic=230068.0. Oleh itu, saya memutuskan untuk mencuba, dilengkapi dengan papan roti, sekumpulan perintang dan palam 3.5 mm yang dipasang ke stereo dan disambungkan ke papan roti. Tidak ada yang dikenali pada awalnya, tetapi stereo mempunyai menu "mod pembelajaran" dan di sana perintah dapat disiapkan dengan berjaya sambil menerapkan pelbagai rintangan. Berjaya!

Walau bagaimanapun, saya kemudian mendapati bahawa saya membuat kesilapan di sini: Tidak semua arahan yang stereo nampaknya akan berfungsi. Cth. 30 kOhm dijumpai dalam mod pembelajaran tetapi tidak berfungsi kemudian dan untuk beberapa arahan saya menetapkan perbezaan rintangan sangat kecil sehingga kemudian perintah yang salah dicetuskan.

Oleh itu, saya mengesyorkan agar anda menggunakan papan roti dengan perintang dan butang suis untuk semua arahan jauh yang ingin anda kendalikan dan benar-benar menguji bahawa semuanya akan berfungsi.

Sekiranya stereo kereta anda tidak dapat menerima input dengan cara yang sama, anda harus memikirkan cara kerjanya sehingga anda dapat menyesuaikan penyelesaian ini. Sekiranya anda tidak dapat mengetahui sama sekali maka anda mempunyai masalah.

Langkah 2: Ketahui Tempat Menyambung ke Bas CAN

Ketahui Tempat Menghubungkan ke Bas CAN
Ketahui Tempat Menghubungkan ke Bas CAN

Anda perlu mencari tempat yang baik untuk menyambung ke bas CAN. Oleh kerana anda mengganti stereo lama yang berkomunikasi BOLEH anda seharusnya dapat menjumpainya di belakang stereo. Bas CAN terdiri daripada sepasang wayar berpintal (CAN-L dan CAN_H). Rujuk gambarajah pendawaian agar kereta anda pasti.

Langkah 3: Kejuruteraan Balik Mesej CAN

Kejuruteraan Balik Mesej CAN
Kejuruteraan Balik Mesej CAN

Kecuali jika Google dapat memberitahu anda apa mesej CAN yang harus anda dengarkan maka anda perlu menyambung ke bas CAN dan melakukan beberapa teknik terbalik. Saya menggunakan Arduino Uno dan pelindung CAN. (Anda tidak benar-benar memerlukan pelindung CAN, kerana anda akan melihat kemudian anda boleh menggunakan beberapa komponen yang murah pada papan roti.)

Rujuk Google untuk mengetahui kadar baud yang harus anda gunakan semasa menyambung ke kereta anda. (Biasanya anda akan mendapati bahawa ada kelajuan tinggi dan kelajuan rendah DAPAT jaring. Anda menyambung ke jaring berkelajuan rendah.)

Anda juga perlu memprogram Arduino untuk mencatat semua mesej CAN melalui antara muka bersiri sehingga anda dapat menyimpannya ke fail log di komputer anda. Arduino IDE standard tidak akan menyimpan data ke fail log tetapi anda boleh menggunakan mis. Putty sebaliknya.

Sebelum mula menulis program anda, anda perlu memasang pustaka CAN_BUS_Shield.

Berikut adalah beberapa kod pseudo untuk membantu anda memulakan program anda:

persediaan ()

{sambungan siri init perpustakaan CAN boleh} gelung () {jika mesej CAN diterima {baca CAN format mesej entri tulis masukkan log masuk ke siri}}

Petunjuk:

Anda akan menggunakan contoh kelas MCP_CAN untuk mengakses fungsi perpustakaan CAN:

MCP_CAN m_can;

Init BOLEH:

sementara (m_can.begin ()! = CAN_OK)

{kelewatan (1000); }

Periksa dan baca mesej CAN:

sementara (m_can.checkReceive () == CAN_MSGAVAIL)

{// Dapatkan ID CAN, panjang mesej dan data mesej m_can.readMsgBufID (& m_canId, & m_msgLen, m_msgBuf); // Lakukan sesuatu dengan data mesej di sini}

Sekiranya anda memerlukan lebih banyak pertolongan, anda boleh mendapatkan pautan ke program saya di kemudian hari. Perpustakaan perisai CAN juga merangkumi contoh. Atau periksa arahan mviljoen2 yang merangkumi langkah serupa.

Mula-mula anda memerlukan fail rujukan untuk membantu anda menyaring data. Tukar pencucuhan ke mod radio dan log semuanya selama beberapa minit tanpa menyentuh butang apa pun.

Kemudian untuk setiap butang, mulakan log, tekan butang dan berhenti log.

Setelah selesai anda perlu menyaring semua yang ada di log rujukan anda dari log butang anda untuk mencari calon anda. Saya mendapat tahu bahawa masih ada banyak mesej yang tersisa, jadi saya membuat lebih banyak log dan kemudian meminta bahawa "calon arahan A mesti ada di semua fail butang-A dan tidak ada fail rujukan". Itu hanya memberi saya beberapa kemungkinan untuk dicuba.

Log akan mengandungi banyak mesej sehingga anda perlu menulis beberapa program untuk ini atau mungkin menggunakan Excel. (Saya menggunakan program dengan syarat berkod yang sangat keras untuk keperluan saya, jadi saya takut tidak dapat menawarkan program yang boleh anda gunakan.)

Peringatan: Anda tidak pasti bahawa butang akan selalu menghasilkan mesej yang serupa. Sebilangan bit mungkin mengandungi pembilang tambahan dll. (Anda boleh kecuali id mesejnya sama).

Sekiranya anda mempunyai Volvo V70 -02, inilah yang anda mahukan:

  • Id mesej: 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: Pengecam butang: 0x77 = kelantangan naik, 0x7b = kelantangan turun, 0x7d = trek seterusnya, 0x7e = trek sebelumnya.

Apabila anda yakin bahawa anda telah menemui perintah, sebaiknya ubah suai program sehingga hanya mencatat mesej yang menarik. Lihat tetingkap log bersiri semasa anda menekan butang untuk mengesahkan bahawa anda telah mengenal pasti mesej yang betul.

Langkah 4: Prototaip Perkakasan

Prototaip Perkakasan
Prototaip Perkakasan

Perkakasan anda perlu dapat:

  1. Kenal pasti arahan yang diterima di bas CAN
  2. Hantar arahan dalam format lain ke stereo

Sekiranya anda mempunyai ruang yang cukup, anda boleh menggunakan pelindung Arduino dan CAN untuk bahagian pertama dan melampirkan beberapa perkakasan tambahan untuk bahagian kedua. Walau bagaimanapun terdapat beberapa kelemahan:

  • Kos pelindung CAN
  • Saiz
  • Bekalan kuasa Arduino tidak akan senang jika disambungkan terus ke kereta 12V anda (ia mungkin akan berfungsi tetapi jangka hayatnya mungkin akan dipendekkan).

Oleh itu, saya menggunakan yang berikut:

  • Atmega 328, "otak Arduino". (Terdapat beberapa varian, dapatkan yang sama dengan yang ada di Arduino Uno. Anda boleh membelinya dengan atau tanpa boot loader Arduino.)
  • Kapasitor + kristal 16 MHz untuk isyarat jam.
  • MCP2551 DAPAT transceiver.
  • Pengawal MCP2515 CAN.
  • TSR1-2450, menukar 6.5-36V menjadi 5V. (Tidak digunakan dalam prototaip kerana perisian tidak akan peduli dengan bekalan kuasa.)
  • Suis CD4066B yang akan digunakan ketika mengirim perintah ke stereo.
  • Sepasang perintang. (Nilai boleh didapati dalam skema Eagle pada langkah berikutnya.)

Perkara yang baik dengan konfigurasi ini ialah ia sepenuhnya serasi dengan perpustakaan perisai Arduino dan CAN.

Sekiranya anda ingin mengendalikan lebih daripada empat butang, anda mungkin ingin mempertimbangkan untuk menggunakan yang lain daripada CD4066B. CD4066B dapat digambarkan sebagai empat suis dalam satu, masing-masing dikendalikan oleh salah satu pin GPIO Atmegas. Untuk setiap suis ada resistor yang disambungkan yang dapat digunakan untuk mengawal rintangan yang digunakan sebagai input ke stereo. Jadi ini dapat digunakan dengan mudah untuk menghantar empat perintah yang berbeza. Sekiranya ia digabungkan maka nilai rintangan tambahan dapat diperoleh. Di sinilah kesalahan yang saya sebutkan tadi masuk. Saya mempunyai empat butang, tetapi saya merancang untuk melaksanakan dua daripadanya sebagai tekan panjang dan pendek untuk memberi saya enam arahan yang berbeza. Tetapi pada akhirnya saya mendapat tahu bahawa saya tidak dapat menemui gabungan perintang yang akan memberi saya enam kombinasi kerja. Sebaliknya mungkin menyambungkan isyarat keluar analog ke stereo (hujung 3,5 mm) sebagai gantinya. (Perhatikan bahawa Atmega tidak mempunyai pin keluar analog yang benar sehingga diperlukan beberapa perkakasan tambahan.)

Untuk tujuan ujian, saya juga membuat simulator "kereta dan stereo" yang mudah untuk disambungkan ke prototaip saya. Ini menjadikan debug lebih mudah dan melainkan jika anda senang duduk di dalam kereta dan program saya, saya boleh mengesyorkannya.

Prototaip ini digambarkan oleh papan roti bawah pada gambar. Untuk bekalan kuasa, pengaturcaraan dan pembalakan bersiri, ia dilampirkan ke Arduino Uno di mana cip Atmega telah dikeluarkan.

Papan roti atas adalah simulator stereo kereta + yang akan digunakan untuk ujian awal prototaip.

Prototaip + simulator dimaksudkan untuk berfungsi seperti ini:

  • Tekan salah satu butang suis pada papan simulator. (Itu adalah butang roda stereng anda.)
  • Apabila program simulator mengesan butang tekan, ia akan menghantar mesej CAN yang sesuai setiap 70 ms selagi butang itu ditekan. (Kerana log yang saya ambil sebelumnya menunjukkan cara kerjanya di dalam kereta saya.) Ia juga akan menghantar banyak mesej CAN yang "sampah" untuk mensimulasikan lalu lintas lain di dalam bas.
  • Mesej CAN dihantar di bas CAN.
  • Mesej CAN boleh diterima oleh prototaip.
  • MCP2515 membuang semua mesej yang tidak berkaitan berdasarkan id mesej.
  • Apabila MCP2515 menerima mesej yang harus ditangani, ia akan menunjukkan bahawa ia mempunyai mesej yang dihidupkan.
  • Atmega akan membaca mesej dan memutuskan butang mana yang harus dianggap aktif.
  • Atmega juga akan terus melacak ketika pesan terakhir diterima, setelah waktu tertentu butang akan dianggap dilepaskan. (Mesej CAN hanya menunjukkan bahawa butang turun, bukan tombol telah ditekan atau dilepaskan.)
  • Sekiranya butang dianggap aktif maka satu atau lebih suis dalam CD4066B akan diaktifkan.
  • Simulator (kini bertindak sebagai stereo anda) akan mengesan bahawa rintangan dikenakan antara hujung dan lengan. (Hujungnya disambungkan ke 3.3V dan melalui perintang ke pin input analog. Apabila tidak ada perintah yang aktif, pin ini akan membaca 3.3V, ketika suatu perintah sedang aktif nilainya akan menjadi lebih rendah dan mengenal pasti perintah tersebut.
  • Semasa perintah aktif, led yang sesuai juga akan diaktifkan. (Terdapat enam led kerana saya merancang untuk menggunakan tekan panjang / pendek yang berbeza untuk dua butang saya.)

Untuk maklumat lebih lanjut mengenai perkakasan prototaip, lihat skema Eagle pada langkah seterusnya.

Maklumat tambahan mengenai perkakasan papan simulator:

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

(Atau anda boleh menggunakan pelindung CAN untuk "bahagian CAN" simulator jika anda mahu.)

Penting untuk anda mengetahui bagaimana pin Atmega dipetakan ke pin Arduino semasa anda merancang perkakasan.

(Jangan sambungkan led langsung ke CD 4066B, ia hanya dapat menangani arus rendah. Saya mencuba bahawa ketika saya pertama kali menguji output dan cip menjadi tidak berguna. Perkara yang baik adalah bahawa saya telah membeli beberapa dari mereka hanya kerana mereka sangat murah.)

Langkah 5: Pengaturcaraan Fius

Mungkin anda perhatikan pada langkah sebelumnya bahawa prototaip tidak mempunyai komponen yang terpisah untuk menghasilkan isyarat jam ke MCP2515. Itu kerana sudah ada kristal 16 MHz yang digunakan sebagai isyarat jam Atmega yang dapat kita gunakan. Tetapi kita tidak boleh menghubungkannya terus ke MCP2515 dan secara lalai tidak ada isyarat keluar jam di Atmega.

(Sekiranya anda mahu, anda boleh melangkau langkah ini dan menambah perkakasan jam tambahan.)

Walau bagaimanapun, kita dapat menggunakan sesuatu yang disebut "fuse programming" untuk membolehkan isyarat keluar jam pada salah satu pin GPIO.

Mula-mula anda perlu mencari fail bernama "boards.txt" yang digunakan oleh Arduino IDE anda. Anda perlu menyalin entri untuk Arduino Uno, memberikannya nama baru dan menukar nilai untuk low_fuse.

Papan baru saya kelihatan seperti ini:

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

clkuno.name = 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.konfuner_funfuner.bfloader.bootloader.file = optiboot_atmega328.hex clkuno.bootloader.unlock_bits = 0xff clkuno.bootloader.lock_bits = 0xcf clkuno.build.mcu = atmega328p clkuno.build.f_cpu = 16000000Lkkuno.build.kuno.bb.bb.bb.kun

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

Perhatikan bahawa jam keluar diaktifkan dengan menetapkan bit kawalannya ke 0.

Apabila anda telah membuat papan baru dalam fail konfigurasi papan, anda perlu membakar pemuat but baru ke Atmega. Terdapat pelbagai cara untuk melakukan ini, saya menggunakan kaedah yang dijelaskan di

Setelah anda melakukan ini, ingatlah untuk memilih jenis papan baru anda dan bukan Arduino Uno ketika anda memuat naik program ke Atmega.

Langkah 6: Perisian

Perisian
Perisian

Masa untuk menjadikan perkakasan bodoh pintar dengan menambahkan beberapa perisian.

Berikut adalah beberapa kod semu untuk prototaip:

lastReceivedTime = 0

lastReceivedCmd = none cmdTimeout = 100 setup () {membolehkan pengawas mengkonfigurasi pin D4-D7 sebagai pin output di setup CAN CAN filter} loop () {reset watchdog if (pesan CAN diterima) {untuk setiap arahan butang {jika mesej CAN milik arahan butang {lastReceivedTime = now lastReceivedCmd = cmd}}} jika sekarang> lastReceivedTime + cmdTimeout {lastReceivedCmd = none} untuk setiap arahan butang {if lastReceivedCmd adalah perintah butang {set command pin output = on} other {set command pin output = off }}}

cmdTimeout memutuskan berapa lama kita harus menunggu sebelum mempertimbangkan butang aktif terakhir yang dilepaskan. Kerana perintah pesanan butang CAN dihantar kira-kira setiap 70 ms, ia perlu lebih besar daripada itu dengan sedikit margin. Tetapi jika besar akan ada pengalaman ketinggalan. Jadi 100 ms kelihatan seperti calon yang baik.

Tetapi apa itu pengawas? Ini adalah ciri perkakasan kecil yang berguna yang dapat menyelamatkan kita sekiranya berlaku kemalangan. Bayangkan bahawa kita mempunyai bug yang menyebabkan program terhenti semasa perintah naikkan suara aktif. Maka kita akan berakhir dengan stereo pada kelantangan maksimum! Tetapi jika pengawas tidak diset semula untuk waktu tertentu, ia akan memutuskan bahawa sesuatu yang tidak dijangka telah berlaku dan hanya mengeluarkan semula.

persediaan tidak sah ()

{// izinkan maksimum 250 ms untuk gelung wdt_enable (WDTO_250MS); // barang init lain} gelung kosong () {wdt_reset (); // buat barang}

BOLEH menapis? Anda boleh mengkonfigurasi pengawal CAN untuk membuang semua mesej yang tidak sesuai dengan penapis sehingga perisian tidak perlu membuang masa untuk mesej yang tidak kita pedulikan.

topeng panjang yang tidak ditandatangani = 0x1fffffff; // Masukkan semua 29 kepingan kepala ke dalam topeng

penapis panjang yang tidak ditandatanganiId = 0x0400066; // Kami hanya memperhatikan id mesej CAN ini m_can.init_Mask (0, CAN_EXTID, topeng); // Topeng 0 digunakan untuk penapis 0-1 m_can.init_Mask (1, CAN_EXTID, topeng); // Topeng 1 digunakan untuk penapis 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 kod perpustakaan CAN dan dokumentasi pengawal CAN untuk maklumat lebih lanjut mengenai cara menyediakan penapis + topeng.

Anda juga boleh menyiapkan pengawal CAN untuk meningkatkan gangguan ketika mesej (yang tidak disaring) diterima. (Tidak termasuk dalam contoh di atas tetapi ada beberapa kod untuknya dalam program saya.) Dalam hal ini tidak benar-benar menambah nilai dan mungkin membingungkan jika Anda tidak terbiasa dengan pengaturcaraan.

Jadi itu adalah perisian prototaip secara ringkas. Tetapi kami memerlukan beberapa kod untuk papan simulator juga:

lastSentTime = 0

minDelayTime = 70 setup () {konfigurasikan pin A0-A5 sebagai pin output mengkonfigurasi pin D4-D7 sebagai pin input dengan penarikan dalaman. init CAN} gelung () {kirim "sampah" boleh msg tetapkan aktifButton = tidak ada untuk setiap butang {jika butang ditekan {set aktifButton = butang}} jika aktifButton! = tidak ada {jika sekarang> lastSentTime + minDelayTime {arahan butang kirim dapat mesej } set lastSentTime = now} inval = pin baca A7 foreach (cmd) {if (min <inval <max) {led on} other {led off}} tunggu 1 ms}

Ini akan terus menghantar mesej CAN "sampah" kira-kira setiap ms dan sementara butang ditekan perintah yang sesuai setiap 70 ms.

Anda mungkin perlu memasukkan input pada pin A7 sambil menekan butang yang berbeza untuk mengetahui nilai yang sesuai untuk pemboleh ubah min dan maksimum yang dimiliki setiap butang. (Atau anda boleh menghitungnya, tetapi sebenarnya membaca input akan memberi anda nilai yang lebih tepat.)

Anda perlu berhati-hati ketika memprogram mod pin. Sekiranya anda tidak sengaja menetapkan pin yang dimaksudkan untuk menggunakan pullup dalaman sebagai pin output, maka anda akan membuat jalan pintas yang berpotensi yang akan merosakkan Arduino anda apabila anda menetapkan outputnya tinggi.

Sekiranya anda ingin menyemak program saya, program tersebut boleh dimuat turun di sini:

  • Program log mesej CAN
  • Program untuk papan simulator
  • Program untuk prototaip / papan akhir

Anda harus sedar bahawa program-program tersebut tidak begitu sepadan dengan kod semu di sini, ia mengandungi banyak perkara "tambahan" yang tidak begitu diperlukan dan jika anda tidak biasa dengan pengaturcaraan berorientasikan objek, mungkin agak sukar dibaca.

Langkah 7: Perkakasan Akhir

Perkakasan Akhir
Perkakasan Akhir
Perkakasan Akhir
Perkakasan Akhir
Perkakasan Akhir
Perkakasan Akhir

Apabila anda berpuas hati dengan program anda (ingatlah untuk menguji prototaip di dalam kereta selepas ujian terakhir dengan papan simulator) sudah tiba masanya untuk membina perkakasan sebenar.

Anda mempunyai tiga pilihan di sini:

  • Pantas dan kotor - pasangkan barang bersama di papan prototaip PCB.
  • Hardcore DIY - buat PCB sendiri.
  • Cara malas - memerintahkan PCB profesional untuk menyolder komponennya.

Sekiranya anda tidak tergesa-gesa saya boleh mengesyorkan pilihan terakhir. Sekiranya anda hanya memerlukan PCB kecil seperti ini, sangat murah untuk memesannya dari China. (Dan kemudian anda mungkin akan mendapat sepuluh keping atau lebih sehingga anda mampu melakukan beberapa kesalahan pematerian.)

Untuk memesan PCB, anda perlu menghantar reka bentuk anda dalam format Gerber. Terdapat pelbagai perisian untuk ini. Saya menggunakan Eagle yang boleh saya cadangkan. Anda boleh mengharapkan beberapa jam untuk mempelajarinya tetapi kemudian ia berfungsi dengan baik. Untuk papan kecil seperti ini, anda boleh menggunakannya secara percuma.

Hati-hati semasa membuat reka bentuk. Anda tidak mahu menunggu empat minggu untuk penghantaran hanya untuk mengetahui bahawa anda melakukan sesuatu yang salah.

(Sekiranya anda mempunyai kemahiran pematerian yang baik, anda boleh merancang komponen yang dipasang di permukaan dan mendapatkan penyesuai yang sangat kecil. Saya tidak.)

Kemudian pesan di mis. https://www.seeedstudio.com/fusion_pcb.html. Ikuti arahan bagaimana menghasilkan fail Gerber dari reka bentuk anda. Anda juga boleh mendapatkan pratonton hasil untuk memastikannya baik-baik saja.

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

Dan ingat - jangan mengelirukan penomboran pin Atmega dengan penomboran pin Arduino!

Saya mengesyorkan agar anda tidak menyolder cip Atmega secara langsung tetapi menggunakan soket. Kemudian anda boleh membuangnya dengan mudah sekiranya anda perlu memprogramkannya semula.

Langkah 8: Pemasangan Kereta

Pemasangan Kereta
Pemasangan Kereta
Pemasangan Kereta
Pemasangan Kereta

Sekarang ke bahagian yang paling menyeronokkan - pasangkannya di dalam kereta anda dan mulakan menggunakannya! (Selepas anda membuat / membeli casing untuknya.)

Sekiranya anda sudah menguji sepenuhnya prototaip di dalam kereta anda, semuanya mesti berfungsi dengan sempurna.

(Seperti yang saya nyatakan sebelumnya saya tidak melakukannya, saya harus mengganti beberapa perintang dan melakukan beberapa perubahan dalam program saya.)

Pertimbangkan juga jika anda harus memasangnya di belakang stereo atau di tempat lain. Saya menjumpai tempat yang bagus di atas kotak sarung tangan saya di mana saya boleh mencapainya dari dalam kotak sarung tangan tanpa melepaskan apa-apa. Itu mungkin berguna sekiranya saya memutuskan untuk menaik tarafnya kemudian.

Akhirnya butang saya berfungsi semula! Bagaimana saya boleh bertahan selama dua bulan tanpa mereka?

Langkah 9: Penambahbaikan Masa Depan

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

Terdapat banyak perkara lain yang boleh anda lakukan. Cth. tambahkan modul bluetooth dan buat aplikasi alat kawalan jauh untuk telefon anda. Atau modul gps, maka apabila anda berada dekat dengan rumah, anda boleh menaikkan kelantangan secara automatik dan menghantar mesej "windows down" BOLEH supaya semua jiran anda dapat menikmati muzik indah anda.

Disyorkan: