Mündəricat:

Qalstuk: 8 addım (şəkillərlə)
Qalstuk: 8 addım (şəkillərlə)

Video: Qalstuk: 8 addım (şəkillərlə)

Video: Qalstuk: 8 addım (şəkillərlə)
Video: Qalstuk bağlamağın ən asan yolu 2024, Iyul
Anonim
Image
Image

Müəllif tərəfindən gwfongMonkey PatchingFollow More:

İşıqlandıran İt Rampası
İşıqlandıran İt Rampası
Polad ürək və əridilmiş şüşə heykəltəraşlıq
Polad ürək və əridilmiş şüşə heykəltəraşlıq
Polad ürək və əridilmiş şüşə heykəltəraşlıq
Polad ürək və əridilmiş şüşə heykəltəraşlıq
Mis tel və əridilmiş şüşə kəpənək
Mis tel və əridilmiş şüşə kəpənək
Mis tel və əridilmiş şüşə kəpənək
Mis tel və əridilmiş şüşə kəpənək

Haqqında: Sərin şeylər etmək istəyən bir adam gwfong haqqında daha çox »

Bu bayram günlərində taxmaq üçün nəzərdə tutulmuş bayram qalstukudur. Flora lövhəsindən istifadə edən Becky Stern tərəfindən Ampli-Tie-ə əsaslanan Holi-Tie, NeoPixel animasiyalarını və musiqisini idarə etmək üçün Circuit Python Express (CPX) mikro nəzarətçisindən istifadə edir. Bir düymə 2 fərqli NeoPixel animasiyası arasında dəyişir. Kapasitiv toxunma yastıqları NeoPixel rənglərini və animasiya sürətini dəyişir. Digər düymə LED animasiyaları ilə musiqi arasında dəyişir. Bort mikrofonu VU sayğac animasiyası üçün ətrafdakı səs-küyü ölçmək üçün istifadə olunur. Və CPX spikeri bayram çip melodiyaları çıxarır.

Hər şey CircuitPython sistemində işləyən Python proqramlaşdırma dili ilə kodlanır. Açma/söndürmə düyməsinə malik olaraq dəyişdirilmiş 3.7V, 500mAH LiPo batareyası ilə təchiz edilmişdir.

Holi-Tie-ni göstərən iki video klip var:

  • Tamamlanmış Holi-Qalstuk
  • Holi-Qalstukun içərisində

Addım 1: Parçalar və Alətlər

Hissələri

  • Circuit Playground Express
  • 15x Flora Neopikseli
  • Maqnit tel
  • Yapışqan çəngəl və döngə lenti
  • JST konnektoru olan 500mAH lipo batareyası
  • Candy qamışı qalstuk
  • Mini sürüşmə açarı, SPDT
  • İstilik büzücü borular

Parçaları satın alarkən, əlavələr almaq ağıllı olardı. Ümumilikdə 20 NeoPixelə sahib idim, onlardan biri əvvəldən qırılmışdı, digəri isə xarab olmuşdu. Candy Cane qalstuku o qədər ucuz idi ki, birincisini xarab etməyim üçün ikincisini aldım.

Alətlər

  • İsti yapışqan silahı
  • Lehim stansiyası
  • Tel kəsicilər
  • Kiçik bıçaq
  • Multimetr
  • Kompüter
  • Çakmak və ya istilik silahı
  • İp və iynə

Addım 2: Qalstukun Hazırlanması

Qalstukun oxunması
Qalstukun oxunması
Qalstukun oxunması
Qalstukun oxunması
Qalstukun oxunması
Qalstukun oxunması

Əsas məqsəd, daxili bağlama nüvəsinə daxil olmaq və LED -lərin harada yerləşdiriləcəyini göstərən xətləri ayırmaqdır.

Addım 1: Kravatı mövqeyinə bağlayın

Elektronika yerində olduqda kravat bağlamaq çətin olacaq. Qalstuku yaxşı görünməsi və düyünün kifayət qədər möhkəm olması və açılmaması üçün bağlayın. Qalstukun başının üstündən keçməsi üçün çuxuru açmaq üçün qalstukun kiçik ucunu diqqətlə çəkin. Qalstuk üzərində çalışılacaq mövqe budur.

Hər cür fərqli bağlama düyünləri var. Yalnız uşaqlıqda öyrəndiyim Windsor -u tanıyıram. Hansı düyünün istifadə olunmasının əhəmiyyəti olmamalıdır.

Addım 2: Qalstukun arxasını açın

Qalstuk halqasının və logonun bir tərəfindəki dikişləri açın və sonra qalstukun ortasından aşağı salın. Ehtiyatlı olun, çünki sonunda yenidən tikilməlidir.

Addım 3: LED -lərin yerləşdirilməsi lazım olan xətləri çəkin

LED -lərin qalstukun ağ zolaqlı hissələrində görünməsini təmin etmək üçün bağlama nüvəsinin arxasındakı hər bir ağ zolaqlı hissənin mərkəzi xəttini tapmaq və sonra onu bağlama nüvəsinin ön tərəfinə uyğunlaşdırmaq daha asandır. Orta xəttin 1) mərkəzdə və 2) zolağa paralel olduğunu yoxlayın və iki dəfə yoxlayın. LED mövqelərini bir az uzaqlaşdırdıqda dəqiq tənzimləmək mümkün olacaq. Ancaq daha sonra deyil, indi dəqiq olaraq dəqiqləşdirmək daha yaxşıdır.

LED -ləri xətlərin üzərinə qoyaraq və üzərinə zolaqlı parça qoyaraq xətlərin mərkəzləşdirilməsini yoxlayın. Lazım olan yerdə tənzimləyin.

Addım 3: NeoPixellərin yapışdırılması

NeoPixellərin bağlanması
NeoPixellərin bağlanması
NeoPixellərin bağlanması
NeoPixellərin bağlanması
NeoPixellərin bağlanması
NeoPixellərin bağlanması
NeoPixellərin bağlanması
NeoPixellərin bağlanması

Əsasən LED şeridi özümüz edirik. Sadəcə LEDləri bağlama nüvəsinə quraşdırırıq və sonra bir -birimizə bağlayırıq.

Addım 1: NeoPixelləri bağlama nüvəsinə yapışdırın

NeoPixelin arxasına bir az isti yapışqan qoyun, orta xətlərə qoyun. 3 NeoPixel olan bölmələr üçün NeoPixelin mərkəzini şaquli olaraq hizalayın və əvvəlcə bunları yapışdırın. Bu, xüsusən də qalstukun eninin yuxarıdan aşağıya doğru artdığını nəzərə alaraq, sola və sağa NeoPixelin mərkəzə nisbətən yerləşdirilməsini asanlaşdıracaq.

Aşağıdan soldan yuxarıya doğru gedərək bütün NeoPixelləri eyni istiqamətə yönəltdiyinizə əmin olun. Bu düzgün deyilsə, zolaq işləməyəcək.

İsti yapışqan haqqında bir qeyd. Layihəni başa çatdırmaq kifayətdir. Gələcək illərlə davam edib -etməyəcəyinə gəlincə, sadəcə görmək lazımdır.

Addım 3: NeoPixelləri bir -birinə lehimləyin

Keçirici ip istifadə etmək əvəzinə NeoPixelləri birlikdə lehimləməyə qərar verdiyim üçün, NeoPixel yastiqciqlarindəki çuxur bir az da bizə qarşı işləyir. Telin lehimlənməsi üçün yastıqda yaxşı bir yer tapın. Çuxuru lehimlə doldurmağa çalışmayın, amma bu baş verərsə, yaxşı olacaq.

Maqnit tel, mis nüvənin ətrafında nazik bir izolyasiya təbəqəsinə malikdir. İzolyasiyanı bıçaqla yalnız lehimlənəcəkləri yerdən çıxarın. Telin bütün ətrafını cızmaq ən yaxşısıdır.

Addım 4: Bağlantıyı yoxlayın

Bağlanışı yoxlamaq üçün multimetrdən istifadə edin:

  1. Müsbət əlaqələr. Uçdan quyruğa qədər bir əlaqə olmalıdır. Test keçidinin teldən yox, yastiqciklərdən olduğundan əmin olun.
  2. Torpaq əlaqələri. Eyni testi yerdəki yastıqlarla edin.
  3. Hər bir məlumat xətti. Bir məlumat yastığından digərinə keçid olduğunu yoxlayın.

Addım 4: Circuit Playground Express -in bağlanması

Circuit Playground Express -in bağlanması
Circuit Playground Express -in bağlanması

Circuit Playground Express (CPX) sistemin ürəyidir. Adafruit -də bu nəzarətçi üçün çoxsaylı dərsliklər var. Daha sonra bu təlimatda MCU xüsusiyyətlərindən bir neçəsini vurğulayacağam.

Addım 1: CPX -ni NeoPixel -in alt ucuna lehimləyin

Güc, torpaq və məlumatlar üçün maqnit telinin uyğun uzunluqlarını kəsin. NeoPixel gücünə, zəminə və məlumat yastiqciqlərinə toxunmaq üçün onları bağlama parçasının içindən keçirin. Yastıqlardakı mövcud tellərin hələ də yaxşı bir əlaqə qurduğundan əmin olaraq onları aşağıya lehimləyin.

Sonra bağlama nüvəsini çevirin və CPX -ni arzu mövqeyinə qoyun. Güc telini VOUT padinə, topraklama telini hər hansı bir torpaq yastığına və məlumat telini A0 -dan başqa hər hansı bir I/O padinə verin. Yazdığım kod A3 istifadə edir.

Bağlantını sınayın.

Addım 2: CPX -ni bağlayın

Bir ip və iynə istifadə edərək, bərabər məsafədə olan dörd yastığı seçin və onları bağlama nüvəsinə tikin.

Addım 5: CPX -ni gücləndirin

CPX -ni gücləndirmək
CPX -ni gücləndirmək
CPX -ni gücləndirmək
CPX -ni gücləndirmək
CPX -ni gücləndirmək
CPX -ni gücləndirmək

CPX -də açma/söndürmə açarı yoxdur. Bu o deməkdir ki, batareyanı bağladığınız anda qalstuk açılacaq. Bu həm də onu söndürməyin yeganə yolunun böyük bir çətinlik olan batareyanı çıxartmaq deməkdir. Sadə bir həll batareyanı söndürmək/söndürməkdir.

Addım 1: Anahtardakı 3 -cü pimi kəsin

Orta olmayan sancaqlardan birinə ehtiyac yoxdur. Şalterin gövdəsi ilə eyni səviyyədə kəsin.

Addım 2: Anahtarı bir batareya telinə lehimləyin

Batareyanın torpaq telini ortada bir yerə kəsin. Torpaq tellərinin hər birinə bir parça istilik borusu sürüşdürün. Bir topraklama telini sancaqlardan birinə, digər torpaq telini digər pinə lehimləyin. Bir -birinə və ya lehimin metal gövdəyə toxunmadığından əmin olun.

Bunun multimetrdən istifadə etmədiyini yoxlayın. Borunu lehimli bağlantıların üzərinə sürüşdürün və büzün. Yorğunluq səbəbiylə uğursuz ola biləcək hər hansı bir hissəyə bir az elektrik lenti əlavə edin.

Addım 3: Batareyanın işlədiyini yoxlayın

Bu nöqtədə, batareya CPX -ə qoşula bilər. Hər şey yaxşı olarsa, keçid CPX -ni aça və söndürə bilməlidir.

Addım 4: Batareyanı quraşdırın

Batareyanın arxa tərəfinə və bağlama nüvəsinə bir az yapışqan çəngəl və döngə lenti qoyun. Qalstuk çox işlənməsə, bu onu yerində saxlayacaq.

Addım 6: Circuit Playground Express qurmaq

CPX -in necə qurulacağı barədə ətraflı məlumat verməyəcəyəm. Adafruit bunu edir, sonra da bir az. Tez -tez qarşılaşdığım məsələlər üçün bir neçə ipucu verəcəyəm.

CPX Dondurur

Yəqin ki, iş vaxtı yaddaş problemlərindən dolayı CPX olduqca tez -tez donur. Sürətli həll silmək və yenidən flaş etməkdir. Bu təlimatlarda "Köhnə Yol" u axtarın. Əsasən, bir neçə düyməyə basmaq, silmək üçün sürükləmək və sonra yenidən flaş etmək üçün sürükləmək və buraxmaqdır.

Xəbərdarlıq: Bu hər şeyi silir. CPX üzərindəki bütün kodlar itiriləcək.

Dəyişiklikləri CPX -də qeyd etmək problem yarada bilər

Bəzən bir faylı CPX -ə saxladıqdan sonra python işləmə müddətinin pis vəziyyətdə olacağını kəşf etdim. Yeniləmə düyməsini basaraq python iş vaxtını yenidən başladın. Yalnız bir dəfə basın. İki dəfə basıldıqda yenidən flaş prosesi başlayacaq.

CPX -ə birbaşa qənaət etmək risklidir

CPX-in yenidən işıqlandırılması ehtimalı səbəbindən, bütün kodlarını itirmək riski var. Kodumu iki dəfə itirdikdən sonra sadə bir iş axını ilə qarşılaşdım. Kodumu yerli sabit diskdə saxlayardım. CPX -də sınaqdan keçirilməyə hazır olduqda, sadə bir yerləşdirmə skriptini işlədərək kopyalayardım.

Addım 7: Circuit Playground Express kodlaşdırılması

Bu nöqtədə, CPX və NeoPixels olduqca tamamlandı. Onlarla başqa heç bir mexaniki və ya elektrik işinə ehtiyac yoxdur. Qalan hər şey proqramdır.

Kodu github hesabımda tapa bilərsiniz. Əsas python kodu bütün əməliyyat sistemləri üçün heç bir dəyişiklik etmədən işləməlidir. Xarici Adafruit CircuitPython kitabxanalarını quraşdırmayın. İstifadə edilmirlər.

Kodda baş verənlərin yüksək səviyyəli bir xülasəsi.

Hansı giriş nə edir?

  • Düymə A: LED animasiyalarında hərəkət edir
  • Düymə B: Mahnıları gəzir
  • Capacitive Touch Pad A1: LED animasiyalarının rənglərini dəyişir
  • Capacitive Touch Pad A6: LED animasiyalarının sürətini dəyişir

3 Animasiya mövcuddur, ancaq 2 -si qüvvədədir

kod.py

pixelsoff idxal edin

#mport vumeter idxal pilləkənləri idxal parıltı… led_animations = [pixelsoff. PixelsOff (piksel), # vumeter. VuMeter (piksel, 100, 400) pilləkənlər.

Ampli-Tie VU sayğac stil kodunu köçürdüm. Səs yığmaq və səs amplitüdünə əsaslanaraq NeoPixelləri işıqlandırmaq üçün CPX mikrofonundan istifadə edir. Ancaq daha çox animasiya istədim. İş vaxtı yaddaş məhdudiyyətləri səbəbindən istədiyim animasiyanı seçmək məcburiyyətində qaldım. Varsayılan olaraq, digər ikisi, Stairs and Twinkle, kod dəyişiklikləri etmədən işləyəcək. VU sayğac animasiyasını işə salmaq üçün digər animasiyalardan birini və ya hər ikisini şərh etmək və VU sayğacını şərh etməmək lazımdır.

Musiqi meneceri və Off-Line Kodlaşdırma

şaxtalı_qardan_pay

musiqi_notlarını mn olaraq idxal edin

# Frosty the Snowman # Walter E. Rollins mahnısı = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF),…

convert_to_binary.py

mahnılar = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] mahnılardakı mahnı üçün: data = song [0] file = song [1] with open (file, "wb") bin_file olaraq: məlumatlara giriş üçün: çap ("yazı:" + str (giriş)) qeyd = giriş [0] dur = giriş [1] bin_file.write (struct.pack ("<HH", qeyd, dur))

İstəyirəm bayram musiqisi. CPX həm WAV, həm də tonları dəstəkləyir. WAV sənədlərinin fayl ölçüsü və işləmə yaddaşı baxımından çox böyük olduğu ortaya çıxdı. Tonları və onların müddətini saxlamaq üçün python məlumat strukturlarından istifadə də çox işləmə yaddaşından istifadə etdiyi ortaya çıxdı. Beləliklə, Holi-Tie kodunu sıxılmış ikili formatda yalnız lazım olan mahnı məlumatlarını ehtiva edən sıxılmış ikili fayl oxumaq üçün dəyişdirdim. Bir python məlumat quruluşunda olan bir mahnını oxuyan və onu ikili formata yazan bir ssenari yazdım. Mahnının bir faylda ikili məlumat kimi kodlaşdırılması mahnını həm kiçik, həm də dinamik edir. Mahnı ifa edildikdən sonra yaddaş açılır.

Daha çox mahnı əlavə etmək mənasızdır. Ətraflı məlumat üçün mahnılarda README.md -ə baxın.

Düymə A NeoPixelləri Animasiya Edir, B Musiqini Çalır, Amma Eyni anda deyil

kod.py

def düyməsi_a_pressed ():

if music.is_playing (): # Musiqi çalınırsa musiqini dayandırın.stop () next_led_animation () def button_b_pressed (): active_led_animation! = 0: # music.is_playing () əgər qeyri-op animasiya next_led_animation (0): # Aç musiqi açmaq və ya söndürmək music.stop () else: music.play ()

Daha çox yaddaş səmərəli musiqi idarəetmə sisteminə sahib olsam da, 2 animasiyanı iş vaxtı yaddaşında saxlaya bilmədim, onlardan birini çalırdım və eyni zamanda bir mahnı ifa edə bilmirdim. İş vaxtı yaddaşında VU sayğacının olmamasını artıq seçdiyim üçün animasiyaların sayını sadəcə 1 -ə endirmək istəmədim. Buna görə kodu ya animasiya çalır, ya da musiqi çalır amma yazmıram. hər ikisi. Başqa bir seçim NeoPixel sayını azaltmaq idi, lakin bu, animasiya sərinliyinin bir hissəsini itirəcəkdi.

Python Kod Funksiyası

Təcrübəli bir proqram təminatçısı olsam da, Python yazmamışam. Başa düşdükdən və inkapsulyasiya və modullaşdırma kimi yaxşı kodlaşdırma təcrübələrini tətbiq etməyə baxdıqdan sonra çox işləmə yaddaşından istifadə etdiyimi tez aşkar etdim. Beləliklə, kifayət qədər DRY olmayan bir kod var. Çalışma vaxtı yaddaş problemlərini daha da azaltmaq üçün const () kimi bəzi MicroPython texnikalarından istifadə etməli oldum.

Tərtib edilmiş Modullar

tərtib etmək

#!/bin/bash

derleyici = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd mahnıları python3./convert_to_binary.py cd.. f in *.py üçün; əgər

Layihənin əvvəlində Adafruit -in tövsiyələrinə əməl etdim və bütün Adafruit CircuitPython kitabxanalarını flaş olaraq saxladım. Ancaq bu, layihəm üçün çox az yer buraxdı. Kodumu CPX -ə ala bilmək üçün modulları tərtib etməyə və MCU -ya yerləşdirməyə başladım. Məlum olur ki, Holi-Tie heç bir xarici kitabxanaya ehtiyac duymur. UF2 -dəki mövcud kitabxanalar bu layihə üçün kifayət idi. *. Mpy fayllarını işlətmək bir az daha effektlidir, buna görə də tərtib edilmiş modulların yerləşdirilməsi prosesini davam etdirdim.

Yuxarıdakı tərtib skriptində göründüyü kimi, bir Windows maşınında işləyirəm, lakin bash və python3 kimi Unix yardım proqramlarından istifadə edirəm. Bunu etmək üçün Cygwin -dən istifadə edirəm. Bu skript asanlıqla DOS partiyasına və Windows doğma Python3 tətbiqinə tərcümə edilə bilər.

Addım 8: Qalstuk düyməsini sıxın

Qalstuku Düymələndirmək
Qalstuku Düymələndirmək
Qalstuku Düymələndirmək
Qalstuku Düymələndirmək

Son addım, bağlama nüvəsini yerinə qaytarmaq, qalstuku yenidən yığmaq və yenidən tikməkdir. CPX -ni əlçatan edə biləcəyinizə əmin olun. Batareyanı dəyişdirərkən və ya kod dəyişdirərkən buna ehtiyacınız olacaq.

Tövsiyə: