Daftar Isi:
- Langkah 1: Suku Cadang dan Alat
- Langkah 2: Menyiapkan Dasi
- Langkah 3: Memasang NeoPixels
- Langkah 4: Memasang Sirkuit Playground Express
- Langkah 5: Menghidupkan CPX
- Langkah 6: Menyiapkan Sirkuit Playground Express
- Langkah 7: Mengkodekan Circuit Playground Express
- Langkah 8: Mengancingkan Dasi
Video: The Holi-Tie: 8 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Oleh gwfongMonkey PatchingIkuti Lainnya oleh penulis:
Tentang: Hanya seorang pria yang ingin membuat hal-hal keren Selengkapnya Tentang gwfong »
Ini adalah Holi-Tie, dasi meriah yang dirancang untuk dikenakan selama liburan. Secara longgar didasarkan pada Ampli-Tie oleh Becky Stern yang menggunakan papan Flora, Holi-Tie menggunakan mikrokontroler Circuit Python Express (CPX) untuk menggerakkan animasi dan musik NeoPixel. Tombol berubah di antara 2 animasi NeoPixel yang berbeda. Bantalan sentuh kapasitif mengubah warna NeoPixel dan kecepatan animasi. Tombol lainnya berubah antara animasi LED dan musik. Mikrofon on-board digunakan untuk mengukur kebisingan sekitar untuk animasi VU meter. Dan speaker CPX mengeluarkan nada chip liburan.
Semuanya dikodekan menggunakan bahasa pemrograman Python yang berjalan di atas sistem CircuitPython. Ini didukung oleh baterai LiPo 3.7V, 500mAH yang dimodifikasi untuk memiliki sakelar hidup / mati.
Ada dua klip video yang menunjukkan Holi-Tie:
- Selesai Holi-Dasi
- Di dalam Holi-Dasi
Langkah 1: Suku Cadang dan Alat
Bagian
- Sirkuit Taman Bermain Ekspres
- 15x Flora Neopiksel
- Kawat magnet
- Perekat kait dan loop tape
- Baterai lipo 500mAH dengan konektor JST
- dasi tongkat permen
- Sakelar geser mini, SPDT
- Tabung panas menyusut
Saat mencari suku cadang, akan lebih bijaksana untuk membeli ekstra. Saya memiliki total 20 NeoPixels, salah satunya rusak dari awal dan satu lagi saya hancurkan. Dasi Candy Cane sangat murah sehingga saya membeli yang kedua kalau-kalau saya merusak yang pertama.
Peralatan
- Pistol lem panas
- Stasiun solder
- Pemotong kawat
- Pisau kecil
- Multimeter
- Komputer
- Pemantik api atau senapan panas
- Benang dan jarum
Langkah 2: Menyiapkan Dasi
Tujuan utamanya adalah untuk mendapatkan akses ke inti dasi bagian dalam dan garis demarkasi yang menunjukkan di mana LED harus diposisikan.
Langkah 1: Ikat dasi ke posisinya
Akan sulit untuk mengikat dasi ketika elektronik terpasang. Jadi ikat dasi agar terlihat bagus dan simpulnya cukup kuat dan tidak akan terurai. Kemudian dengan hati-hati tarik ujung kecil dasi untuk membuka lubang agar dasi melewati kepala. Ini adalah posisi dasi akan dikerjakan.
Ada semua jenis simpul dasi yang berbeda. Saya hanya tahu satu yang saya pelajari sebagai seorang anak, Windsor. Seharusnya tidak masalah simpul mana yang digunakan.
Langkah 2: Buka bagian belakang dasi
Robek jahitannya di satu sisi lingkaran dasi dan logo, lalu ke bawah di tengah dasi. Hati-hati karena harus dijahit kembali di bagian akhir.
Langkah 3: Gambar garis di mana LED harus ditempatkan
Agar LED muncul di bagian garis putih dasi, lebih mudah untuk menemukan garis tengah untuk setiap bagian garis putih di bagian belakang inti dasi dan kemudian memetakannya ke bagian depan inti dasi. Periksa dan periksa kembali apakah garis tengah 1) di tengah dan 2) sejajar dengan garis. Penyetelan halus posisi LED dapat dilakukan jika sedikit mati. Tetapi yang terbaik adalah membuatnya sedekat mungkin sekarang daripada nanti.
Uji keterpusatan garis dengan menempatkan LED pada garis dan meletakkan kain bergaris di atasnya. Sesuaikan di mana diperlukan.
Langkah 3: Memasang NeoPixels
Pada dasarnya, kami membuat strip LED kami sendiri. Kami cukup memasang LED ke inti dasi dan kemudian menghubungkannya satu sama lain.
Langkah 1: Rekatkan NeoPixels ke inti dasi
Tempatkan setetes lem panas di bagian belakang NeoPixel letakkan di garis tengah. Untuk bagian dengan 3 NeoPixel, sejajarkan secara vertikal bagian tengah NeoPixel dan rekatkan terlebih dahulu. Ini akan memudahkan untuk memposisikan NeoPixel kiri dan kanan dalam kaitannya dengan tengah terutama mengingat lebar dasi meningkat dari atas ke bawah.
Pastikan untuk mengarahkan semua NeoPixels ke arah yang sama, dari kiri bawah ke kanan atas. Jika ini tidak benar, strip tidak akan berfungsi.
Catatan tentang lem panas. Ini akan cukup untuk menyelesaikan proyek. Adapun apakah itu akan berlangsung selama bertahun-tahun yang akan datang, kita hanya perlu melihat.
Langkah 3: Solder NeoPixels satu sama lain
Karena saya memutuskan untuk menyolder NeoPixel bersama-sama alih-alih menggunakan benang konduktif, lubang di bantalan NeoPixel bekerja sedikit melawan kami. Temukan saja tempat yang bagus di pad untuk menyolder kawat. Jangan mencoba mengisi lubang dengan solder, tetapi jika itu terjadi, itu akan baik-baik saja.
Kawat magnet memiliki lapisan isolasi tipis di sekitar inti tembaga. Dengan pisau, kikis insulasi tepat di ujungnya di mana mereka akan disolder. Yang terbaik adalah mengikis seluruh keliling kawat.
Langkah 4: Uji konektivitas
Gunakan multimeter untuk menguji konektivitas:
- Koneksi positif. Harus ada konektivitas dari ujung ke ujung. Pastikan konektivitas uji pada bantalan dan bukan kabel.
- Koneksi tanah. Lakukan tes yang sama tetapi dengan bantalan tanah.
- Setiap baris data. Dari satu pad data ke pad data berikutnya, pastikan ada konektivitas.
Langkah 4: Memasang Sirkuit Playground Express
Circuit Playground Express (CPX) adalah jantung dari sistem. Adafruit memiliki banyak tutorial untuk pengontrol ini. Nanti dalam instruksi ini, saya akan menyoroti beberapa fitur MCU.
Langkah 1: Solder CPX ke ujung bawah NeoPixel
Potong kabel magnet dengan panjang yang sesuai untuk daya, arde, dan data. Dorong mereka melalui kain inti dasi sehingga menyentuh bantalan daya, ground, dan data NeoPixel. Solder mereka untuk memastikan bahwa kabel yang ada pada bantalan masih membuat konektivitas yang baik.
Selanjutnya balikkan inti dasi dan letakkan CPX di posisi yang diinginkan. Umpankan kabel daya ke bantalan VOUT, kabel arde ke bantalan arde apa pun, dan kabel data ke bantalan I/O selain A0. Kode yang saya tulis menggunakan A3.
Uji konektivitas.
Langkah 2: Ikat CPX
Dengan menggunakan benang dan jarum, ambil empat bantalan yang berjarak sama dan jahit ke inti dasi.
Langkah 5: Menghidupkan CPX
CPX tidak memiliki sakelar hidup/mati. Artinya saat baterai dicolokkan, dasi akan menyala. Ini juga berarti bahwa satu-satunya cara untuk mematikannya adalah dengan mencabut baterai, yang merupakan masalah besar. Solusi sederhana adalah dengan mematikan/mematikan baterai.
Langkah 1: Potong pin ke-3 pada sakelar
Salah satu pin non-tengah tidak diperlukan. Potong rata dengan badan sakelar.
Langkah 2: Solder sakelar sebaris dengan kabel baterai
Potong kabel ground baterai di suatu tempat di tengah. Geser sepotong tabung panas menyusut pada masing-masing kabel ground. Solder satu kabel ground ke salah satu pin dan kabel ground lainnya ke pin lainnya. Pastikan mereka tidak saling bersentuhan atau solder menyentuh badan logam.
Pastikan yang tidak terhubung menggunakan multimeter. Geser tabung di atas koneksi yang disolder dan kecilkan. Tambahkan sedikit pita listrik ke bagian mana pun yang mungkin gagal karena kelelahan lentur.
Langkah 3: Pastikan baterai berfungsi
Pada titik ini, baterai dapat dicolokkan ke CPX. Jika semua berjalan dengan baik, sakelar harus dapat menghidupkan dan mematikan CPX.
Langkah 4: Pasang baterai
Letakkan sedikit pengait perekat dan selotip di sisi belakang baterai dan di inti dasi. Ini akan menjaganya tetap di tempatnya jika dasi tidak terlalu banyak ditangani.
Langkah 6: Menyiapkan Sirkuit Playground Express
Saya tidak akan membahas detail tentang cara mengatur CPX. Adafruit melakukan itu dan kemudian beberapa. Saya akan memberikan beberapa tips untuk masalah yang cukup sering saya temui.
CPX Membeku
Mungkin karena masalah memori waktu berjalan, CPX akan sering membeku. Perbaikan cepat adalah menghapus dan mem-flash ulang. Cari "Cara Lama" dalam petunjuk ini. Pada dasarnya, ini adalah beberapa penekanan tombol, seret dan lepas untuk menghapus, dan kemudian seret dan lepas untuk mem-flash ulang.
Peringatan: Ini menghapus semuanya. Semua kode pada CPX akan hilang.
Menyimpan Perubahan ke CPX Dapat Menyebabkan Masalah
Saya menemukan bahwa kadang-kadang setelah menyimpan file ke CPX runtime python akan berada dalam keadaan buruk. Cara mengatasinya adalah restart python runtime dengan menekan tombol reset. Tekan hanya sekali. Menekannya dua kali akan memulai proses flash ulang.
Menyimpan Langsung Ke CPX Beresiko
Karena kemungkinan bahwa CPX harus di-flash ulang, seseorang berisiko kehilangan semua kodenya. Setelah kehilangan kode saya dua kali, saya menemukan alur kerja sederhana. Saya akan menyimpan kode saya ke hard disk lokal. Ketika sudah siap untuk diuji pada CPX, saya cukup menyalinnya dengan menjalankan skrip penerapan sederhana.
Langkah 7: Mengkodekan Circuit Playground Express
Pada titik ini, CPX dan NeoPixels sudah cukup lengkap. Tidak ada pekerjaan mekanik atau listrik lainnya yang perlu dilakukan dengan mereka. Sisanya adalah semua perangkat lunak.
Kode dapat ditemukan di akun github saya. Kode inti python harus berfungsi tanpa perubahan apa pun untuk semua sistem operasi. Jangan menginstal perpustakaan Adafruit CircuitPython eksternal. Mereka tidak digunakan.
Berikut adalah ringkasan tingkat tinggi tentang apa yang terjadi dalam kode.
Masukan Apa Melakukan Apa?
- Tombol A: Berputar melalui animasi LED
- Tombol B: Berputar melalui lagu
- Capacitive Touch Pad A1: Mengubah warna animasi LED
- Capacitive Touch Pad A6: Mengubah kecepatan animasi LED
3 Animasi Ada Tapi Hanya 2 Yang Berlaku
kode.py
impor pixeloff
#import vumeter impor tangga import twinkle … led_animations = [pixelsoff. PixelsOff(pixels), # vumeter. VuMeter(pixels, 100, 400) ladders. Stairs(pixels), twinkle. Twinkle(pixels)]
Saya mem-porting kode gaya meteran Ampli-Tie VU. Ini menggunakan mikrofon CPX untuk mengambil suara dan menyalakan NeoPixels berdasarkan amplitudo suara. Namun, saya ingin lebih banyak animasi. Karena kendala memori runtime saya harus memilih animasi yang saya inginkan. Jadi secara default dua lainnya, Stairs dan Twinkle, akan berjalan tanpa harus membuat perubahan kode. Untuk menjalankan animasi VU meter, salah satu atau kedua animasi lainnya harus dikomentari dan VU meter tidak dikomentari.
Pengelola Musik dan Penyandian Off-Line
frosty_the_snowman.py
impor musical_notes sebagai mn
# Frosty the Snowman # Lagu Walter E. Rollins = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF), …
convert_to_binary.py
lagu = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] untuk lagu dalam lagu: data=song[0] file=song[1] dengan open(file, "wb") sebagai bin_file: untuk entri data: print("menulis: " + str(entry)) note=entry[0] dur=entry[1] bin_file.write(struct.pack("<HH", note, dur))
Saya ingin musik liburan. CPX mendukung WAV dan nada. File WAV ternyata terlalu besar dalam hal ukuran file dan memori runtime. Menggunakan struktur data python untuk menahan nada dan durasinya juga ternyata menggunakan terlalu banyak memori runtime. Jadi saya memodifikasi kode Holi-Tie untuk membaca file biner terkompresi yang hanya berisi data lagu yang diperlukan dalam format biner terkompresi. Saya menulis skrip yang membaca lagu yang disimpan dalam struktur data python dan menuliskannya ke format biner. Memiliki lagu yang dikodekan sebagai data biner dalam file membuat lagu menjadi kecil dan dinamis. Setelah lagu selesai diputar, memori dilepaskan.
Itu sepele untuk menambahkan lebih banyak lagu. Untuk detailnya, lihat README.md di lagu.
Tombol A Menghidupkan NeoPixels, B Memutar Musik, Tapi Tidak Secara Bersamaan
kode.py
def button_a_pressed():
if music.is_playing(): # Hentikan musik jika memutar music.stop() next_led_animation() def button_b_pressed(): if active_led_animation != 0: # Jalankan animasi no-op next_led_animation(0) if music.is_playing(): # Toggle musik aktif atau nonaktif music.stop() lain: music.play()
Bahkan dengan sistem manajemen musik yang lebih hemat memori, saya tidak dapat menyimpan 2 animasi runtime memory, saat memutar 1 di antaranya dan juga memutar lagu secara bersamaan. Karena saya sudah memilih untuk tidak memiliki VU meter di memori runtime sama sekali, saya tidak ingin mengurangi jumlah animasi menjadi hanya 1. Jadi saya menulis kode agar animasi diputar atau musik diputar tetapi tidak keduanya. Pilihan lain adalah mengurangi jumlah NeoPixels tetapi itu akan kehilangan beberapa kesejukan animasi.
Keanehan Kode Python
Meskipun saya seorang pengembang perangkat lunak veteran, saya tidak pernah menulis Python. Setelah saya memahaminya dan mulai menerapkan praktik pengkodean yang baik seperti enkapsulasi dan modularisasi, saya segera menemukan bahwa saya menggunakan terlalu banyak memori runtime. Jadi ada sedikit kode non-KERING. Saya juga harus menggunakan beberapa teknik MicroPython seperti const() untuk lebih mengurangi masalah run time memory.
Modul yang Dikompilasi
menyusun
#!/bin/bash
compiler=~/development/circuitpython/mpy-cross-3.x-windows.exe cd lagu python3./convert_to_binary.py cd.. untuk f di *.py; lakukan jika
Di awal proyek, saya mengikuti saran Adafruit dan menyimpan semua pustaka Adafruit CircuitPython di flash. Ini, bagaimanapun, meninggalkan sedikit ruang untuk proyek saya. Untuk bisa mendapatkan kode saya ke CPX, saya mulai mengkompilasi modul dan menempatkannya ke MCU. Ternyata Holi-Tie tidak memerlukan perpustakaan eksternal apa pun. Pustaka yang ada di UF2 sudah cukup untuk proyek ini. Menjalankan file *.mpy sedikit lebih efisien, jadi saya mempertahankan proses penerapan modul yang dikompilasi.
Seperti yang terlihat pada skrip kompilasi di atas, saya bekerja pada mesin Windows tetapi menggunakan utilitas Unix seperti bash dan python3. Saya menggunakan Cygwin untuk mencapai ini. Skrip ini dapat dengan mudah diterjemahkan ke batch DOS dan implementasi Python3 asli Windows.
Langkah 8: Mengancingkan Dasi
Langkah terakhir adalah memasang kembali inti dasi, memasang kembali dasi, dan menjahitnya kembali. Pastikan untuk dapat membuat CPX dapat diakses. Anda akan membutuhkannya saat mengganti baterai atau membuat perubahan kode.
Direkomendasikan:
Pemegang Gambar Dengan Speaker Internal: 7 Langkah (dengan Gambar)
Picture Holder Dengan Built-in Speaker: Ini adalah proyek yang bagus untuk dilakukan selama akhir pekan, jika Anda ingin membuat speaker Anda sendiri yang dapat menampung gambar/kartu pos atau bahkan daftar tugas Anda. Sebagai bagian dari pembangunan kita akan menggunakan Raspberry Pi Zero W sebagai jantung dari proyek, dan sebuah
Howto: Instalasi Raspberry PI 4 Headless (VNC) Dengan Rpi-imager dan Gambar: 7 Langkah (dengan Gambar)
Cara: Memasang Raspberry PI 4 Headless (VNC) Dengan Rpi-imager dan Gambar: Saya berencana untuk menggunakan Rapsberry PI ini dalam banyak proyek menyenangkan di blog saya. Jangan ragu untuk memeriksanya. Saya ingin kembali menggunakan Raspberry PI saya tetapi saya tidak memiliki Keyboard atau Mouse di lokasi baru saya. Sudah lama sejak saya menyiapkan Raspberry
Pengenalan Gambar Dengan Papan K210 dan Arduino IDE/Micropython: 6 Langkah (dengan Gambar)
Pengenalan Gambar Dengan Papan K210 dan Arduino IDE/Micropython: Saya sudah menulis satu artikel tentang cara menjalankan demo OpenMV di Sipeed Maix Bit dan juga membuat video demo deteksi objek dengan papan ini. Salah satu dari banyak pertanyaan yang diajukan orang adalah - bagaimana saya bisa mengenali objek yang jaringan sarafnya tidak
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib !: 9 Langkah (dengan Gambar)
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib !: Selama bertahun-tahun, saya telah mengembangkan kebiasaan membawa patung kecil saat bepergian: Saya sering membeli seni kecil kosong (seperti yang ada di gambar) dan melukis agar sesuai dengan bendera dan tema negara yang saya kunjungi (dalam hal ini, Sisilia). T
Cara Membongkar Komputer Dengan Langkah Mudah dan Gambar: 13 Langkah (dengan Gambar)
Cara Membongkar Komputer Dengan Langkah Mudah dan Gambar: Ini adalah instruksi tentang cara membongkar PC. Sebagian besar komponen dasar bersifat modular dan mudah dilepas. Namun penting bahwa Anda diatur tentang hal itu. Ini akan membantu Anda agar tidak kehilangan bagian, dan juga dalam membuat