Isi kandungan:

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, November
Anonim
Image
Image

Oleh gwfongMonkey PatchingFollow More oleh pengarang:

Jalan Anjing yang menerangi
Jalan Anjing yang menerangi
Patung Jantung Baja dan Kaca Bersatu
Patung Jantung Baja dan Kaca Bersatu
Patung Jantung Baja dan Kaca Bersatu
Patung Jantung Baja dan Kaca Bersatu
Kawat Tembaga dan Rama-rama Kaca Bersatu
Kawat Tembaga dan Rama-rama Kaca Bersatu
Kawat Tembaga dan Rama-rama Kaca Bersatu
Kawat Tembaga dan Rama-rama Kaca Bersatu

Tentang: Hanya seorang lelaki yang ingin membuat perkara menarik Lebih banyak mengenai gwfong »

Ini adalah Holi-Tie, tali leher perayaan yang dirancang untuk dipakai semasa cuti. Secara longgar berdasarkan Ampli-Tie oleh Becky Stern yang menggunakan papan Flora, Holi-Tie menggunakan mikrokontroler Circuit Python Express (CPX) untuk menggerakkan animasi dan muzik NeoPixel. Butang berubah antara 2 animasi NeoPixel yang berbeza. Pad sentuh kapasitif mengubah warna NeoPixel dan kelajuan animasi. Butang lain berubah antara animasi LED dan muzik. Mikrofon on-board digunakan untuk mengukur kebisingan ambien untuk animasi meter VU. Dan pembesar suara CPX menghasilkan lagu cip percutian.

Semuanya dikodkan menggunakan bahasa pengaturcaraan Python yang berjalan di atas sistem CircuitPython. Ia dikuasakan oleh bateri LiPo 3.7V, 500mAH yang diubah suai untuk menghidupkan / mematikan suis.

Terdapat dua klip video yang menunjukkan Holi-Tie:

  • Selesai Holi-Tie
  • Di dalam Holi-Tie

Langkah 1: Bahagian dan Alat

Bahagian

  • Circuit Playground Express
  • 15x Flora Neopixels
  • Kawat magnet
  • Pita cangkuk dan gelung pelekat
  • Bateri lipo 500mAH dengan penyambung JST
  • Tali gula-gula
  • Suis slaid mini, SPDT
  • Tiub mengecilkan haba

Semasa mengambil bahagian, lebih baik membeli tambahan. Saya mempunyai sejumlah 20 NeoPixels, salah satunya rosak sejak awal dan satu yang saya hancurkan. Tali Candy Cane sangat murah sehingga saya membeli yang kedua sekiranya saya merosakkan yang pertama.

Alat

  • Pistol gam panas
  • Stesen pematerian
  • Pemotong wayar
  • Pisau kecil
  • Multimeter
  • Komputer
  • Pistol yang lebih ringan atau panas
  • Benang dan jarum

Langkah 2: Menyiapkan Ikatan

Bersedia Mengikat
Bersedia Mengikat
Bersedia Mengikat
Bersedia Mengikat
Bersedia Mengikat
Bersedia Mengikat

Matlamat utama adalah untuk mendapatkan akses ke inti tali dalaman dan garis tanda yang menunjukkan di mana LED harus diletakkan.

Langkah 1: Ikat tali leher ke kedudukannya

Sukar untuk mengikat tali apabila elektronik berada di tempatnya. Oleh itu, ikatlah tali leher sehingga kelihatan baik dan simpulnya cukup tegas dan tidak akan terurai. Kemudian tarik hujung tali leher dengan hati-hati untuk membuka lubang untuk mendapatkan tali leher di atas kepala. Ini adalah kedudukan yang akan diusahakan.

Terdapat pelbagai jenis tali leher yang berbeza. Saya hanya tahu yang saya pelajari semasa kecil, Windsor. Tidak semestinya simpulan mana yang digunakan.

Langkah 2: Buka bahagian belakang tali leher

Buka jahitan pada satu sisi gelung tali leher dan logo dan kemudian ke bahagian bawah tali leher. Berhati-hatilah kerana ia mesti dijahit pada akhir.

Langkah 3: Lukis garis di mana LED harus diletakkan

Untuk menjadikan LED muncul di bahagian jalur putih tali leher, lebih mudah untuk mencari garis tengah bagi setiap bahagian jalur putih di bahagian belakang inti tali leher dan kemudian memetakannya ke bahagian depan inti tali leher. Periksa dan periksa semula bahawa garis tengah adalah 1) di tengah dan 2) selari dengan jalur. Penalaan kedudukan LED dengan lebih baik akan dapat dilakukan sekiranya mereka berada sedikit. Tetapi yang terbaik adalah mendapatkannya sedekat mungkin daripada kemudian.

Uji pusat garis dengan meletakkan LED pada garis dan meletakkan kain jalur di atas. Sesuaikan di mana diperlukan.

Langkah 3: Melampirkan NeoPixels

Melampirkan NeoPixels
Melampirkan NeoPixels
Melampirkan NeoPixels
Melampirkan NeoPixels
Melampirkan NeoPixels
Melampirkan NeoPixels
Melampirkan NeoPixels
Melampirkan NeoPixels

Pada dasarnya, kami membuat jalur LED kami sendiri. Kami hanya memasang LED ke tali leher dan kemudian menghubungkannya antara satu sama lain.

Langkah 1: Lekatkan NeoPixels pada teras tali leher

Letakkan sebatan gam panas di bahagian belakang NeoPixel letakkan di garis tengah. Untuk bahagian dengan 3 NeoPixels, sejajarkan NeoPixel tengah secara menegak dan gam terlebih dahulu. Ini akan memudahkan meletakkan NeoPixel kiri dan kanan berhubung dengan pusat terutama kerana lebar tali leher meningkat dari atas ke bawah.

Pastikan untuk mengarahkan semua NeoPixels ke arah yang sama, dari kiri bawah ke kanan atas. Sekiranya ini tidak betul, jalur tidak akan berfungsi.

Catatan mengenai gam panas. Ia cukup untuk menyelesaikan projek ini. Mengenai sama ada ia akan berlangsung selama bertahun-tahun yang akan datang, seseorang hanya perlu melihat.

Langkah 3: Selitkan NeoPixels antara satu sama lain

Kerana saya memutuskan untuk menyatukan NeoPixels bersama-sama daripada menggunakan benang konduktif, lubang pada pad NeoPixel berfungsi sedikit demi sedikit terhadap kami. Cukup cari tempat yang baik di pad untuk memateri wayar. Jangan cuba mengisi lubang dengan pateri, tetapi jika ia berlaku, tidak mengapa.

Kawat magnet mempunyai lapisan penebat nipis di sekitar teras tembaga. Dengan pisau, potong penebat tepat di hujung di mana ia akan disolder. Lebih baik mengikis seluruh lilitan wayar.

Langkah 4: Uji kesambungan

Gunakan multimeter untuk menguji kesambungan:

  1. Hubungan positif. Harus ada hubungan dari hujung ke ekor. Pastikan kesambungan ujian pada pad dan bukan wayar.
  2. Sambungan darat. Lakukan ujian yang sama tetapi dengan pelekap tanah.
  3. Setiap baris data. Dari satu pad data ke yang berikutnya, sahkan bahawa ada kesambungan.

Langkah 4: Melampirkan Circuit Playground Express

Melampirkan Circuit Playground Express
Melampirkan Circuit Playground Express

Circuit Playground Express (CPX) adalah nadi sistem. Adafruit mempunyai banyak tutorial untuk pengawal ini. Kemudian dalam arahan ini, saya akan mengetengahkan beberapa ciri MCU.

Langkah 1: Selesaikan CPX ke hujung bawah NeoPixel

Potong panjang wayar magnet yang sesuai untuk daya, arde, dan data. Torong mereka melalui kain inti tali leher sehingga menyentuh daya, tanah, dan pad data NeoPixel. Selesaikannya dengan memastikan wayar yang ada di pad masih membuat sambungan yang baik.

Seterusnya putar teras pengikat dan letakkan CPX pada posisi keinginan. Masukkan wayar kuasa ke pad VOUT, wayar ground ke pad ground mana pun, dan wayar data ke pad I / O selain A0. Kod yang saya tulis menggunakan A3.

Uji kesambungan.

Langkah 2: Ikat CPX

Dengan menggunakan utas dan jarum, pilih empat pad yang sama jaraknya dan jahitnya ke inti tali leher.

Langkah 5: Menghidupkan CPX

Menghidupkan CPX
Menghidupkan CPX
Menghidupkan CPX
Menghidupkan CPX
Menghidupkan CPX
Menghidupkan CPX

CPX tidak mempunyai suis hidup / mati. Ini bermaksud bahawa semasa bateri dipasang, tali leher akan menyala. Ini juga bermaksud bahawa satu-satunya cara untuk mematikannya adalah dengan mencabut bateri, yang merupakan masalah besar. Penyelesaian mudah adalah dengan memasang suis mati / mati pada bateri.

Langkah 1: Potong pin ke-3 pada suis

Salah satu pin bukan pusat tidak diperlukan. Potong siram dengan badan suis.

Langkah 2: Selesaikan suis sejajar dengan bateri

Potong wayar arde bateri di suatu tempat di tengah. Luncurkan sekeping tiub pengecutan haba pada setiap wayar tanah. Pateri satu wayar ground ke salah satu pin dan wayar ground yang lain ke pin yang lain. Pastikan bahawa mereka tidak saling bersentuhan atau pateri menyentuh badan logam.

Sahkan bahawa tidak bersambung menggunakan multimeter. Geser tiub ke atas sambungan yang dipateri dan mengecilkannya. Tambahkan sedikit pita elektrik ke bahagian yang mungkin gagal kerana keletihan lenturan.

Langkah 3: Sahkan bateri berfungsi

Pada ketika ini, bateri boleh dipasang ke CPX. Sekiranya semuanya berjalan lancar, suis harus dapat menghidupkan dan mematikan CPX.

Langkah 4: Pasang bateri

Letakkan sedikit cangkuk pelekat dan pita gelung di bahagian belakang bateri dan pada tali leher. Ini akan tetap berlaku jika tali leher tidak terlalu banyak dikendalikan.

Langkah 6: Menyiapkan Circuit Playground Express

Saya tidak akan menjelaskan secara terperinci mengenai cara menetapkan CPX. Adafruit melakukan itu dan kemudian beberapa. Saya akan memberikan beberapa petua untuk masalah yang sering saya hadapi.

CPX Membeku

Mungkin kerana masalah memori masa berjalan, CPX akan kerap membeku. Pembaikan cepat adalah dengan memadam dan menyala semula. Cari "Jalan Lama" dalam arahan ini. Pada dasarnya, ia adalah beberapa penekanan butang, seret dan lepas untuk dihapus, dan kemudian seret dan lepas untuk menyala semula.

Amaran: Ini akan menghapus segalanya. Semua kod pada CPX akan hilang.

Menyimpan Perubahan pada CPX Boleh Menyebabkan Masalah

Saya dapati bahawa kadang-kadang setelah menyimpan fail ke CPX, masa berjalan python akan berada dalam keadaan buruk. Pembetulannya adalah memulakan semula waktu python dengan menekan butang reset. Tekan sekali sahaja. Menekannya dua kali akan memulakan proses kilat semula.

Menyimpan Secara Langsung Ke CPX Berisiko

Oleh kerana kemungkinan CPX mesti dimatikan semula, seseorang berisiko kehilangan semua kod mereka. Setelah kehilangan kod saya dua kali, saya membuat aliran kerja yang mudah. Saya akan menyimpan kod saya ke cakera keras tempatan. Apabila sudah siap untuk diuji pada CPX, saya hanya akan menyalinnya dengan menjalankan skrip menyebarkan yang sederhana.

Langkah 7: Mengekodkan Circuit Playground Express

Pada ketika ini, CPX dan NeoPixels hampir lengkap. Tidak ada kerja mekanikal atau elektrik lain yang perlu dilakukan bersama mereka. Selebihnya adalah semua perisian.

Kodnya boleh didapati di akaun github saya. Kod python teras harus berfungsi tanpa perubahan untuk semua sistem operasi. Jangan pasang perpustakaan Adafruit CircuitPython luaran. Mereka tidak digunakan.

Berikut adalah ringkasan tahap tinggi mengenai apa yang berlaku dalam kod tersebut.

Apa Input Adakah Apa?

  • Butang A: Menghidupkan animasi LED
  • Butang B: Mengitar lagu
  • Capacitive Touch Pad A1: Menukar warna untuk animasi LED
  • Capacitive Touch Pad A6: Mengubah kelajuan animasi LED

3 Animasi Ada Tetapi Hanya 2 Yang Berkesan

kod.py

import pixelsoff

#import vumeter import tangga import twinkle… led_animations = [pixelsoff. PixelsOff (pixels), # vumeter. VuMeter (pixels, 100, 400) tangga. Stairs (pixels), twinkle. Twinkle (pixels)]

Saya memindahkan kod gaya meter Ampli-Tie VU. Ia menggunakan mikrofon CPX untuk mengambil suara dan menerangi NeoPixels berdasarkan amplitud suara. Namun, saya mahukan lebih banyak animasi. Oleh kerana kekangan memori runtime saya terpaksa memilih animasi yang saya mahukan. Jadi secara lalai dua yang lain, Stairs dan Twinkle, akan berjalan tanpa perlu membuat perubahan kod. Untuk menjalankan animasi meter VU, satu atau kedua-dua animasi lain harus dikomentari dan meter VU tidak dikomentari.

Pengurus Muzik dan Pengekodan Luar Talian

frosty_the_snowman.py

import nota_ muzik sebagai mn

# Lagu Frosty the Snowman # 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 = lagu [0] file = lagu [1] dengan terbuka (file, "wb") sebagai bin_file: untuk kemasukan dalam data: cetak ("menulis:" + str (entri)) note = entri [0] dur = entri [1] bin_file.write (struct.pack ("<HH", note, dur))

Saya mahukan muzik percutian. CPX menyokong kedua-dua nada dan nada WAV. Fail WAV ternyata terlalu besar dari segi saiz fail dan memori runtime. Menggunakan struktur data python untuk menahan nada dan tempohnya juga ternyata terlalu banyak menggunakan memori runtime. Oleh itu, saya mengubah suai kod Holi-Tie untuk membaca fail binari termampat yang hanya mengandungi data lagu yang diperlukan dalam format binari termampat. Saya menulis skrip yang membaca lagu yang dipegang dalam struktur data python dan menulisnya ke format binari. Memiliki lagu dikodkan sebagai data binari dalam fail menjadikan lagu itu kecil dan dinamis. Setelah lagu dimainkan, memori akan dilepaskan.

Adalah remeh untuk menambahkan lebih banyak lagu. Untuk perincian, lihat README.md dalam lagu.

Butang A Animasi NeoPixels, B Memainkan Muzik, Tetapi Tidak Serentak

kod.py

butang def_a_tekan ():

if music.is_playing (): # Hentikan muzik jika bermain 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 muzik hidup atau mati music.stop () lain-lain: music.play ()

Walaupun dengan sistem pengurusan muzik yang lebih cekap memori, saya tidak dapat menahan animasi memori runtime 2, sambil memainkan 1 daripadanya dan juga memainkan lagu pada masa yang sama. Kerana saya telah memilih untuk tidak mempunyai meter VU dalam memori runtime sama sekali, saya tidak mahu mengurangkan jumlah animasi menjadi hanya 1. Oleh itu, saya menulis kodnya supaya animasi dimainkan atau muzik dimainkan tetapi tidak kedua-duanya. Pilihan lain adalah mengurangkan bilangan NeoPixels tetapi ini akan mengurangkan kesegaran animasi.

Kod Python Funkiness

Walaupun saya seorang pembangun perisian veteran, saya tidak pernah menulis Python. Setelah saya mengetahuinya dan menatap amalan pengkodan yang baik seperti enkapsulasi dan modularisasi, saya dengan cepat mengetahui bahawa saya menggunakan terlalu banyak memori runtime. Oleh itu, terdapat sedikit kod bukan KERING. Saya juga terpaksa menggunakan beberapa teknik MicroPython seperti const () untuk mengurangkan masalah ingatan masa berjalan.

Modul yang disusun

menyusun

#! / bin / bash

penyusun = ~ / development / circuitpython / mpy-cross-3.x-windows.exe cd songs python3./convert_to_binary.py cd.. for f in *.py; lakukan sekiranya

Pada awal projek, saya mengikuti nasihat Adafruit dan menyimpan semua perpustakaan Adafruit CircuitPython dengan cepat. Walau bagaimanapun, ini meninggalkan sedikit ruang untuk projek saya. Untuk mendapatkan kod saya ke CPX, saya mula menyusun modul dan meletakkannya ke MCU. Ternyata Holi-Tie tidak memerlukan perpustakaan luaran. Perpustakaan yang ada di UF2 mencukupi untuk projek ini. Menjalankan fail *.mpy sedikit lebih berkesan jadi saya meneruskan proses penggunaan modul yang disusun.

Seperti yang ditunjukkan dalam skrip kompilasi di atas, saya sedang mengusahakan mesin Windows tetapi menggunakan utiliti Unix seperti bash dan python3. Saya menggunakan Cygwin untuk mencapainya. Skrip ini dapat diterjemahkan dengan mudah ke kumpulan DOS dan pelaksanaan Python3 asli Windows.

Langkah 8: Mengikat Ikatan

Mengikat Ikatan
Mengikat Ikatan
Mengikat Ikatan
Mengikat Ikatan

Langkah terakhir adalah meletakkan kembali tali leher di tempatnya, memasang kembali tali leher, dan menjahitnya kembali. Pastikan CPX dapat diakses. Anda memerlukannya semasa mengganti bateri atau membuat perubahan kod.

Disyorkan: