Daftar Isi:
- Perlengkapan
- Langkah 1: Membangun Sirkuit
- Langkah 2: Pengkabelan dan Pemasangan
- Langkah 3: Kode
- Langkah 4: Hasil
Video: Kit Lampu Topbox Sepeda Motor Givi V56 DIY Dengan Sinyal Terintegrasi: 4 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Sebagai pengendara sepeda motor, saya sudah terbiasa diperlakukan seperti tidak terlihat di jalan. Satu hal yang selalu saya tambahkan ke sepeda saya adalah top box yang biasanya memiliki lampu terintegrasi. Saya baru-baru ini meningkatkan ke sepeda baru dan membeli kotak Monokey Givi V56 karena memiliki banyak ruang untuk barang. Kotak ini memiliki tempat untuk kit lampu pabrik yang terdiri dari dua strip LED untuk setiap sisinya. Masalahnya adalah kit ini sekitar $ 70 dan hanya rem. Ada kit aftermarket yang mungkin melakukan hal serupa dan mungkin sedikit lebih mudah dipasang, tetapi harga Anda naik hingga $150. Menjadi orang yang pandai dan mencari alasan untuk mencoba strip LED yang dapat dialamatkan, saya memutuskan untuk membuat sistem terintegrasi yang tidak hanya memiliki lampu rem, tetapi juga lampu berjalan (menyala setiap kali bergerak), lampu sein, dan lampu hazard. Hanya untuk itu, saya bahkan menambahkan urutan startup…. karena saya bisa. Perhatikan bahwa ini membutuhkan banyak pekerjaan untuk dilakukan meskipun saya memiliki banyak hal untuk dipikirkan. Terlepas dari pekerjaannya, saya agak senang dengan hasilnya. Semoga ini akhirnya bermanfaat bagi orang lain.
Operasi dasar cara kerja sistem ini adalah unit Arduino mencari sinyal pada pin: lampu rem, lampu belok kiri, dan lampu belok kanan. Untuk membaca sinyal 12 volt dari sepeda motor, saya menggunakan optoisolator untuk mengubah sinyal 12V menjadi sinyal 5V yang dapat dibaca oleh Arduino. Kode kemudian menunggu salah satu sinyal ini kemudian mengeluarkan perintah ke strip LED menggunakan perpustakaan FastLED. Itulah dasar-dasarnya, sekarang masuk ke detailnya.
Perlengkapan
Ini adalah hal-hal yang saya gunakan karena sebagian besar saya sudah memilikinya. Jelas, mereka dapat ditukar sesuai kebutuhan:
- Arduino - Saya menggunakan nano untuk pertimbangan ukuran tetapi Anda dapat menggunakan apa pun yang Anda suka selama Anda memiliki lima pin untuk digunakan.
- Regulator 5V - Saya menggunakan L7805CV yang mampu mencapai 1,5 amp. Proyek ini akan menggunakan 0,72 amp untuk LED ditambah daya untuk nano, jadi 1,5 sangat cocok untuk proyek ini.
- Kapasitor - Anda memerlukan satu 0,33 uF dan satu 0,1 uF agar pengatur tegangan dapat beroperasi dengan benar.
- 3x optoisolators - untuk melakukan konversi sinyal dari 12V ke 5V. Saya menggunakan tipe PC817X yang hanya memiliki empat pin yang kami butuhkan.
- Resistor - Anda akan membutuhkan dua jenis, tiga dari masing-masing jenis. Yang pertama harus cukup untuk mengurangi arus melalui LED IR optoisolator. Anda akan membutuhkan setidaknya 600 ohm, tetapi 700 akan menjadi ide yang lebih baik untuk menangani perubahan tegangan pada sepeda motor. Yang lain harus berada di antara 10k dan 20k untuk sinyal cepat di sisi lain optoisolator.
- Papan prototipe - Saya memiliki beberapa yang cukup kecil untuk muat di dalam kotak proyek kecil dengan sedikit pemangkasan.
- Kotak proyek - cukup besar untuk memuat komponen, tetapi cukup kecil agar mudah dipasang.
- Kawat - Saya menggunakan kabel ethernet Cat 6 karena saya memiliki banyak kabel. Ini memiliki delapan kabel semua kode warna yang membantu dengan semua koneksi yang berbeda dan merupakan ukuran yang cukup besar untuk menangani penarikan saat ini.
- Colokan - di mana pun Anda ingin sistem mudah dilepas. Saya menggunakan steker tahan air untuk memungkinkan kotak atas dilepas dan untuk menangani hujan atau air yang masuk ke dalamnya. Saya juga membutuhkan colokan yang lebih kecil untuk strip LED sehingga saya tidak perlu mengebor lubang besar.
- Ikatan ritsleting dan dudukan perekat dasi ritsleting untuk menahan semuanya pada tempatnya.
- Kecilkan bungkus untuk merapikan sambungan.
Langkah 1: Membangun Sirkuit
Jelas, jika Anda mengikuti build saya, Anda tidak perlu melalui sejumlah pengujian yang saya lakukan. Hal pertama yang saya lakukan adalah memastikan kode saya berfungsi dan saya bisa mendapatkan sinyal dengan benar dari optoisolator serta mengontrol strip LED dengan benar. Butuh beberapa saat untuk mencari cara terbaik untuk memasang pin sinyal ke isolator tetapi melalui coba-coba saya menemukan orientasi yang tepat. Saya hanya menggunakan papan prototipe standar karena saya hanya membangun satu dan mencari tahu pola jejak akan membutuhkan lebih banyak waktu daripada nilainya. Bagian atas papan sirkuit terlihat bagus, tetapi bagian bawahnya terlihat sedikit berantakan, tetapi setidaknya berfungsi.
Desain dasar dimulai dengan memasukkan daya 12V dari sumber yang diaktifkan (kabel yang hanya menyala saat sepeda motor menyala). Diagram pengkabelan benar-benar dapat membantu menemukan kabel ini. Ini dimasukkan ke satu sisi regulator tegangan. Kapasitor 0,33 uF mengikat input ini ke ground pada regulator tegangan yang kemudian diumpankan kembali ke ground pada sepeda motor. Output dari regulator tegangan akan memiliki kapasitor 0.1uF yang diikat ke ground. Kapasitor ini membantu memperlancar tegangan dari regulator. Jika Anda tidak dapat menemukannya di gambar papan sirkuit, mereka berada di bawah pengatur tegangan. Dari sana, jalur 5V menuju Vin di Arduino, ke pin daya yang akan memberi makan strip LED, dan dua sisi Sumber optoisolator yang akan memberi makan ke pin Arduino yang menyediakan sinyal 5V yang dibutuhkan.
Adapun optoisolator, ada dua sisi: satu dengan LED IR dan yang lainnya dengan transistor dengan dan detektor IR. Kami ingin menggunakan sisi LED IR untuk mengukur sinyal 12V. Karena LED memiliki tegangan maju 1,2V, kita memerlukan resistor pembatas arus secara seri. 12V - 1.2V = 10.8V dan untuk menjalankan LED pada 18 mA (saya selalu suka menjalankan kurang dari 20 mA untuk alasan seumur hidup), Anda memerlukan resistor R = 10.8V/0.018A = 600 ohm. Tegangan pada kendaraan juga cenderung berjalan lebih tinggi, berpotensi hingga 14V, jadi lebih baik untuk merencanakannya, yaitu sekitar 710 ohm, meskipun 700 akan lebih dari wajar. Output untuk sisi LED kemudian diumpankan kembali ke ground. Untuk sisi output dari optoisolator, input akan menggunakan sinyal 5V dari regulator kemudian output akan terhubung ke resistor lain sebelum ke ground. Resistor ini hanya perlu sekitar 10k - 20k ohm, setidaknya itulah yang ditunjukkan oleh lembar data saya. Ini akan memberikan pengukuran sinyal yang cepat karena kita tidak berurusan dengan lingkungan yang bising. Output ke pin Arduino akan lepas antara resistor dan output optoisolator sehingga saat sinyal mati pin low dan saat sinyal di pin high.
Lampu strip LED memiliki tiga kabel yang terkait dengannya: Daya, ground, dan data. Daya harus 5V. Proyek ini menggunakan total 12 LED (meskipun saya memiliki lebih banyak LED pada strip tetapi saya hanya menggunakan setiap LED ketiga) dan masing-masing membutuhkan 60mA ketika cahaya putih digunakan pada kecerahan penuh. Ini memberikan total 720 mA. Kami berada di dalam daya keluaran untuk pengatur tegangan, jadi kami baik-baik saja. Pastikan bahwa kawat adalah pengukur yang cukup besar untuk menangani daya, saya menggunakan kawat ethernet Cat 6 pengukur 24. Kabel Ethernet adalah sesuatu yang saya miliki dan memiliki 8 kabel berkode warna sehingga bekerja dengan baik untuk proyek ini. Satu-satunya kabel yang kemudian perlu masuk ke topbox itu sendiri adalah daya dan ground (yang keduanya terbelah di antara strip) dan dua jalur data (satu untuk setiap strip).
Sisa kabel terhubung ke pin pada arduino dan memberinya daya. Pin yang digunakan untuk proyek ini adalah sebagai berikut:
- Vin - terhubung ke 5V
- Gnd - terhubung ke ground
- Pin2 - terhubung ke jalur data strip kiri
- Pin3 - terhubung ke jalur data jalur kanan
- Pin4 - terhubung ke sinyal Rem dari optoisolator
- Pin5 - terhubung ke lampu sein kiri dari optoisolator
- Pin6 - terhubung ke lampu sein kanan dari optoisolator
Langkah 2: Pengkabelan dan Pemasangan
Setelah sirkuit dibangun, saatnya tiba untuk benar-benar menghubungkan ini ke tempatnya. Dengan menggunakan skema pengkabelan untuk sepeda Anda, Anda perlu menemukan yang berikut ini:
- Catu daya yang dialihkan
- Tanah
- Sinyal Rem Masuk
- Sinyal Belok Kiri Masuk
- Sinyal Belok Kanan Masuk
Untuk saya, ada satu colokan yang memiliki semua ini, jadi saya hanya menggunakannya. Dengan waktu yang cukup, saya mungkin dapat menemukan gaya steker yang sama dan hanya membuat modul colokan, tetapi saya tidak melakukannya, jadi saya hanya melepas insulasi di beberapa tempat dan menyolder kabel baru ke sana. Saya menggunakan colokan pada koneksi yang disambung ini sehingga saya dapat melepas sisanya jika perlu di masa mendatang. Dari sana saya meletakkan Arduino, yang sekarang berada dalam kotak proyek tertutup, di bawah kursi tempat saya memasangnya. Kabel keluaran kemudian berjalan di sepanjang bingkai rak ke steker tahan air, lalu masuk ke kotak dan berjalan di sepanjang bagian belakang ke tutupnya di mana ia terbelah untuk setiap sisi. Kabel berjalan di sepanjang bagian dalam tutup ke titik di mana koneksi untuk LED berada. Kawat membantu di tempat menggunakan ikatan ritsleting yang terpasang pada dudukan dasi ritsleting kelas luar ruangan dengan dukungan perekat. Anda dapat menemukannya di bagian pemasangan kabel di toko perbaikan rumah
Saya menggunakan dua colokan JST mini pada strip LED karena saya membutuhkan steker yang cukup kecil untuk melewati lubang dengan diameter minimum dan karena saya ingin memastikan ada cukup kawat untuk menangani kebutuhan saat ini. Sekali lagi, itu mungkin berlebihan dan saya tidak memiliki colokan kecil dengan tiga kabel yang berguna. Lubang di dalam kotak untuk dilewati kabel strip cahaya ditutup rapat agar air tidak keluar. Untuk penempatan strip LED, karena ada sedikit ketidaksesuaian dalam jarak (ada perbedaan jarak sekitar 1-1,5 mm antara lubang di reflektor dan LED) saya memposisikannya sehingga mereka akan membagi perbedaan antara LED dan LED. lubang itu sebanyak mungkin. Saya kemudian menggunakan lem panas untuk menempelkannya di tempatnya dan sealant untuk menutup sepenuhnya area tersebut. Strip LED itu sendiri tahan air, jadi tidak masalah jika basah. Meskipun sepertinya banyak yang harus dipasang, hal ini membuat sistem lebih mudah untuk melepas atau mengganti suku cadang yang diperlukan karena hal itu bisa saja terjadi.
Langkah 3: Kode
Kode sumber saya harus di awal Instructable ini. Saya selalu mengomentari kode saya dengan berat sehingga lebih mudah untuk dipahami nanti. Penafian: Saya bukan penulis kode profesional. Kode ditulis dengan metode yang lebih mudah untuk dijalankan terlebih dahulu dan beberapa perbaikan telah dilakukan, tetapi saya tahu ini bisa lebih disempurnakan. Saya juga menggunakan banyak fungsi delay() untuk pengaturan waktu yang tidak ideal. Namun, sinyal yang diterima unit bukanlah sinyal yang cepat dibandingkan, jadi saya masih merasa dibenarkan untuk menahannya menggunakan sesuatu seperti milis(). Saya juga seorang ayah dan suami yang sangat sibuk sehingga menghabiskan waktu untuk memperbaiki sesuatu yang pada akhirnya tidak akan mengubah fungsi tidak termasuk dalam daftar teratas.
Untuk proyek ini, hanya satu perpustakaan yang diperlukan yaitu perpustakaan FastLED. Ini memiliki semua kode untuk mengontrol strip LED tipe WS2811/WS2812B. Dari sana, saya akan membahas fungsi dasar yang akan digunakan.
Yang pertama selain definisi standar adalah mendeklarasikan dua strip Anda. Anda akan menggunakan kode berikut untuk setiap strip:
FastLED.addLeds(leds[0], NUM_LEDS);
Baris kode ini mengatur Pin 2 mendefinisikan strip ini sebagai strip 0 dengan jumlah LED yang ditentukan oleh NUM_LEDS konstan, yang dalam kasus saya diatur ke 16. Untuk mendefinisikan strip kedua, 2 akan menjadi 3 (untuk pin3) dan strip akan diberi label strip 1.
Baris berikutnya yang penting adalah definisi warna.
leds[0][1] = Color_high CRGB(r, g, b);
Baris kode ini digunakan meskipun dalam tampilan yang berbeda (sebagian besar saya menggunakan konstanta). Pada dasarnya, kode ini mengirimkan nilai ke setiap saluran LED (merah, hijau, biru) yang menentukan kecerahan masing-masing. Nilai kecerahan dapat ditentukan dengan angka 0 - 255. Dengan mengubah tingkat kecerahan untuk setiap saluran, Anda dapat menentukan warna yang berbeda. Untuk proyek ini, saya ingin warna putih untuk menjaga cahaya seterang mungkin. Jadi satu-satunya perubahan yang saya lakukan adalah mengatur tingkat kecerahan yang sama di ketiga saluran.
Kumpulan kode berikutnya digunakan untuk masing-masing penerangan lampu. Perhatikan bahwa untuk setiap strip, setiap LED memiliki alamat yang dimulai dari 0 untuk yang paling dekat dengan koneksi jalur data hingga LED nomor tertinggi yang Anda miliki minus 1. Contoh, ini adalah 16 strip LED, jadi yang tertinggi adalah 16 - 1 = 15. Alasannya karena LED pertama diberi label 0.
for (int i = NUM_LEDS-1; i > -1; i = i - 3) { // Ini akan mengubah lampu untuk setiap LED ketiga dari yang terakhir ke yang pertama. leds[0] = Warna_rendah; // Atur strip 0 warna LED ke warna yang dipilih. leds[1] = Color_low; // Atur strip 1 warna LED ke warna yang dipilih. FastLED.show(); // Menampilkan warna yang disetel. leds[0] = CRGB::Hitam; // Matikan set warna dalam persiapan untuk warna berikutnya. leds[1] = CRGB::Hitam; penundaan(150); } FastLED.show(); // Menampilkan warna yang disetel.
Cara kerja kode ini adalah bahwa variabel (i) digunakan dalam loop for sebagai alamat LED yang kemudian direferensikan ke jumlah penuh LED (NUM_LEDS). Alasan untuk ini adalah saya ingin lampu mulai di ujung strip daripada di awal. Pengaturan dikeluarkan ke kedua strip (leds[0] dan leds[1]) kemudian perintah untuk menunjukkan perubahan dikeluarkan. Setelah itu lampu ini dimatikan (CRGB::Black) dan lampu selanjutnya menyala. Referensi Hitam adalah warna tertentu di perpustakaan FastLED jadi saya tidak perlu mengeluarkan 0, 0, 0 untuk setiap saluran meskipun mereka akan melakukan hal yang sama. Loop For memajukan 3 LED sekaligus (i = i-3) karena saya hanya menggunakan setiap LED lainnya. Pada akhir loop ini, urutan cahaya akan berpindah dari satu LED ke LED berikutnya dengan hanya satu lampu per strip, semacam efek Knight Rider. Jika Anda ingin agar setiap lampu tetap menyala sehingga bilahnya terbentuk, Anda cukup menghapus garis yang mematikan LED yang terjadi di rangkaian kode berikutnya dalam program.
for (int i = 0; i < redup; i++) { // Cepat memudarkan lampu ke tingkat cahaya yang berjalan. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i < NUM_LEDS; i = i +3) { // Ini akan menyalakan tiga lampu terakhir untuk lampu posisi. leds[0] = CRGB(rt, gt, bt); // Atur strip 0 warna LED ke warna yang dipilih. leds[1] = CRGB(rt, gt, bt); // Atur strip 1 warna LED ke warna yang dipilih. } FastLED.show(); penundaan (3); }
Contoh kode terakhir yang saya gunakan untuk LED adalah loop fade. Di sini, saya menggunakan slot sementara untuk kecerahan untuk setiap saluran (rt, gt, bt) dan menambahnya 1 dengan penundaan antara setiap tampilan untuk mencapai tampilan yang saya inginkan. Perhatikan juga bahwa kode ini hanya mengubah tiga LED terakhir karena ini memudar di lampu yang menyala jadi saya mulai dari 9 daripada 0.
Sisa dari kode LED adalah iterasi dari ini. Segala sesuatu yang lain difokuskan di sekitar mencari sinyal pada tiga kabel yang berbeda. Area Loop() kode mencari lampu rem, yang akan berkedip sekali sebelum tetap menyala (ini dapat disesuaikan jika diinginkan) atau mencari sinyal belok. Untuk kode ini, karena saya tidak dapat berasumsi bahwa lampu belok kiri dan kanan akan menyala pada waktu yang sama untuk bahaya, saya meminta kode untuk mencari salah satunya terlebih dahulu, kemudian setelah penundaan kecil saya memeriksa untuk melihat apakah keduanya menyala. lampu hazard menyala. Satu bagian rumit yang saya miliki adalah sinyal belok karena lampu akan padam selama beberapa waktu, jadi bagaimana cara membedakan antara sinyal yang masih menyala tetapi dalam periode mati dan sinyal yang dibatalkan? Apa yang saya temukan adalah menerapkan loop penundaan yang diatur untuk melanjutkan lebih lama daripada penundaan antara sinyal berkedip. Jika sinyal belok masih menyala, maka loop sinyal akan berlanjut. Jika sinyal tidak kembali saat penundaan berakhir, maka sinyal akan kembali ke awal loop(). Untuk menyesuaikan panjang penundaan, ubah nomor untuk lightDelay konstan mengingat untuk setiap 1 di lightDelay penundaan berubah 100ms.
while (digitalRead(Belok kiri) == RENDAH) { for(int i = 0; i < lightDelay; i++) { leftTurnCheck(); if(digitalRead(Belok kiri) == TINGGI) { leftTurnLight(); } penundaan(100); } for (int i = 0; i < NUM_LEDS; i = i +3) { // Ini akan mengubah lampu untuk setiap LED ketiga dari yang terakhir ke yang pertama. leds[0] = CRGB(0, 0, 0); // Atur strip 0 warna LED ke warna yang dipilih. } for (int i = 9; i < NUM_LEDS; i = i +3) { // Ini akan mengatur lampu berjalan yang hanya menggunakan tiga lampu terakhir. leds[0] = Warna_rendah; // Atur strip 0 warna LED ke warna yang dipilih. } FastLED.show(); // Pengaturan keluaran kembali; // Setelah lampu sein tidak lagi menyala, kembali ke loop. }
Semoga sisa kodenya cukup jelas. Ini hanya serangkaian pemeriksaan dan tindakan yang berulang-ulang berdasarkan sinyal.
Langkah 4: Hasil
Bagian yang menakjubkan adalah sistem ini bekerja pertama kali saya menghubungkannya ke sepeda. Sekarang, sejujurnya saya mengujinya dengan berat di bangku cadangan sebelum ini, tetapi saya masih berharap memiliki masalah atau penyesuaian. Ternyata saya tidak perlu melakukan penyesuaian apa pun pada kode dan koneksi. Seperti yang Anda lihat di video, sistem berjalan melalui urutan startup (yang tidak harus Anda miliki), lalu default ke lampu berjalan. Setelah itu mencari rem dalam hal ini akan menyalakan semua LED dengan kecerahan penuh dan berkedip sekali sebelum tetap menyala sampai rem dilepaskan. Ketika sinyal belok digunakan, saya membuat efek bergulir untuk sisi yang ditunjukkan belokan dan sisi lainnya akan menyala atau lampu rem jika menyala. Lampu hazard hanya akan berkedip pada waktunya dengan lampu lainnya.
Semoga dengan tambahan lampu ini, saya akan lebih terlihat oleh orang lain. Paling tidak, ini adalah tambahan yang bagus untuk membuat kotak saya sedikit lebih menonjol daripada yang lain sambil memberikan utilitas. Saya harap proyek ini bermanfaat bagi orang lain juga meskipun mereka tidak bekerja dengan lampu kotak atas sepeda motor. Terima kasih!
Direkomendasikan:
Nest Hello - Bel Pintu Dengan Trafo Terintegrasi UK (220-240V AC - 16V AC): 7 Langkah (dengan Gambar)
Nest Hello - Bel Pintu Dengan Trafo Terintegrasi UK (220-240V AC - 16V AC): Saya ingin memasang bel pintu Nest Hello di rumah, alat yang berjalan pada 16V-24V AC (CATATAN: pembaruan perangkat lunak pada tahun 2019 mengubah Eropa rentang versi hingga 12V-24V AC). Lonceng bel pintu standar dengan trafo terintegrasi tersedia di Inggris di
Membangun Sinyal Belok Sepeda Sederhana: 11 Langkah (dengan Gambar)
Bangun Sinyal Belok Sepeda Sederhana: Dengan datangnya musim gugur, terkadang sulit untuk menyadari bahwa hari-hari menjadi lebih pendek, meskipun suhunya mungkin sama. Itu terjadi pada semua orang - Anda melakukan perjalanan bersepeda sore hari, tetapi sebelum Anda kembali ke tengah jalan, hari sudah gelap dan Anda
Lampu Ekor Sepeda Motor Dengan Blinker Terintegrasi Menggunakan LED yang Dapat Diprogram: 4 Langkah
Lampu Ekor Sepeda Motor Dengan Blinker Terintegrasi Menggunakan LED yang Dapat Diprogram: Halo! Ini adalah DIY yang mudah tentang cara membuat Lampu Ekor RGB yang Dapat Diprogram khusus (dengan penutup mata/indikator terintegrasi) untuk sepeda motor Anda atau mungkin apa pun menggunakan WS2812B (led yang dapat dialamatkan secara individual) dan Arduinos . Ada 4 mode pencahayaan
Lampu Sepeda Sangat Terang Menggunakan PCB Panel Lampu Kustom: 8 Langkah (dengan Gambar)
Lampu Sepeda Sangat Terang Menggunakan PCB Panel Lampu Kustom: Jika Anda memiliki sepeda maka Anda tahu betapa lubang yang tidak menyenangkan dapat terjadi pada ban dan tubuh Anda. Saya sudah cukup banyak meniup ban saya, jadi saya memutuskan untuk mendesain panel led saya sendiri dengan maksud untuk menggunakannya sebagai lampu sepeda. Salah satu yang berfokus pada menjadi E
Lampu Sinyal Tangan Sepeda: 10 Langkah (dengan Gambar)
Lampu Sinyal Tangan Sepeda: Tujuan proyek ini adalah menciptakan lampu yang pas di sarung tangan sepeda dan mengarah ke arah belokan yang diinginkan, untuk meningkatkan visibilitas di malam hari. Itu harus ringan, mudah digunakan, dan terintegrasi dengan gerakan yang ada untuk tanda