Daftar Isi:

The Holi-Tie: 8 Langkah (dengan Gambar)
The Holi-Tie: 8 Langkah (dengan Gambar)

Video: The Holi-Tie: 8 Langkah (dengan Gambar)

Video: The Holi-Tie: 8 Langkah (dengan Gambar)
Video: PERAYAAN 17AN BIKIN PENONTON MELONGO! Inilah 10 Festival Jalanan yang Berhasil Menarik Perhatian 2024, Juli
Anonim
Image
Image

Oleh gwfongMonkey PatchingIkuti Lainnya oleh penulis:

Ramp Anjing yang Menerangi
Ramp Anjing yang Menerangi
Hati Baja dan Patung Kaca Fused
Hati Baja dan Patung Kaca Fused
Hati Baja dan Patung Kaca Fused
Hati Baja dan Patung Kaca Fused
Kawat Tembaga dan Kupu-Kupu Kaca Fused
Kawat Tembaga dan Kupu-Kupu Kaca Fused
Kawat Tembaga dan Kupu-Kupu Kaca Fused
Kawat Tembaga dan Kupu-Kupu Kaca Fused

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

Menyiapkan Dasi
Menyiapkan Dasi
Menyiapkan Dasi
Menyiapkan Dasi
Menyiapkan Dasi
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

Memasang NeoPixels
Memasang NeoPixels
Memasang NeoPixels
Memasang NeoPixels
Memasang NeoPixels
Memasang NeoPixels
Memasang NeoPixels
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:

  1. Koneksi positif. Harus ada konektivitas dari ujung ke ujung. Pastikan konektivitas uji pada bantalan dan bukan kabel.
  2. Koneksi tanah. Lakukan tes yang sama tetapi dengan bantalan tanah.
  3. Setiap baris data. Dari satu pad data ke pad data berikutnya, pastikan ada konektivitas.

Langkah 4: Memasang Sirkuit Playground Express

Memasang Sirkuit Playground Express
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

Menghidupkan CPX
Menghidupkan CPX
Menghidupkan CPX
Menghidupkan CPX
Menghidupkan CPX
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

Mengancingkan Dasi
Mengancingkan Dasi
Mengancingkan Dasi
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: