Talaan ng mga Nilalaman:

The Holi-Tie: 8 Hakbang (na may Mga Larawan)
The Holi-Tie: 8 Hakbang (na may Mga Larawan)

Video: The Holi-Tie: 8 Hakbang (na may Mga Larawan)

Video: The Holi-Tie: 8 Hakbang (na may Mga Larawan)
Video: Matthew 6-7 | Feb 20-26 | Come Follow Me Insights 2024, Hulyo
Anonim
Image
Image

Sa pamamagitan ng gwfongMonkey PatchingFollow Higit pa ng may-akda:

Nag-iilaw na Ramp ng Aso
Nag-iilaw na Ramp ng Aso
Steel Heart at Fused Glass Sculpture
Steel Heart at Fused Glass Sculpture
Steel Heart at Fused Glass Sculpture
Steel Heart at Fused Glass Sculpture
Copper Wire at Fused Glass Butterfly
Copper Wire at Fused Glass Butterfly
Copper Wire at Fused Glass Butterfly
Copper Wire at Fused Glass Butterfly

Tungkol sa: Isang lalaki lamang na naghahanap upang gumawa ng mga cool na bagay Dagdag pa Tungkol sa gwfong »

Ito ang Holi-Tie, isang maligaya na kurbatang idinisenyo upang maisusuot sa panahon ng bakasyon. Malayang nakabatay sa Ampli-Tie ni Becky Stern na gumagamit ng isang Flora board, ang Holi-Tie ay gumagamit ng isang Circuit Python Express (CPX) microcontroller upang himukin ang mga NeoPixel na animasyon at musika. Nagbabago ang isang pindutan sa pagitan ng 2 magkakaibang mga NeoPixel na animasyon. Ang mga capacitive touch pad ay binabago ang mga kulay ng NeoPixel at ang bilis ng animation. Ang iba pang mga pindutan ay nagbabago sa pagitan ng mga LED animation at musika. Ginagamit ang on-board microphone upang sukatin ang ingay sa paligid para sa VU meter na animasyon. At ang CPX speaker ay naglalabas ng mga holiday chip.

Ang lahat ay naka-code gamit ang wika ng programa ng Python na tumatakbo sa ibabaw ng system ng CircuitPython. Ito ay pinalakas ng isang 3.7V, 500mAH LiPo na baterya na binago upang magkaroon ng isang on / off switch.

Mayroong dalawang mga video clip na nagpapakita ng Holi-Tie:

  • Nakumpleto ang Holi-Tie
  • Sa loob ng Holi-Tie

Hakbang 1: Mga Bahagi at Mga Tool

Mga Bahagi

  • Circuit Playground Express
  • 15x Flora Neopixels
  • Wire na pang-akit
  • Malagkit na hook at loop ng tape
  • 500mAH lipo na baterya na may konektor ng JST
  • Tali ng Candy Cane
  • Mini slide switch, SPDT
  • Heat shrink tubing

Kapag pinanggalingan ang mga piyesa, magiging matalino na bumili ng mga extra. Mayroon akong isang kabuuang 20 NeoPixels, ang isa ay nasira mula sa simula at ang isa ay nasira ko. Napakaliit ng kurbatang Candy Cane kaya bumili ako ng pangalawa kung sakaling nasira ko ang una.

Mga kasangkapan

  • Mainit na glue GUN
  • Istasyon ng paghihinang
  • Mga pamutol ng wire
  • Maliit na kutsilyo
  • Multimeter
  • Computer
  • Mas magaan o heat gun
  • Thread at karayom

Hakbang 2: Paghahanda ng Tie

Paghahanda ng Tie
Paghahanda ng Tie
Paghahanda ng Tie
Paghahanda ng Tie
Paghahanda ng Tie
Paghahanda ng Tie

Ang pangunahing layunin ay upang makakuha ng pag-access sa panloob na kurbatang kurbatang at i-demarcate ang mga linya na nagpapahiwatig kung saan dapat nakaposisyon ang mga LED.

Hakbang 1: Itali ang kurbatang sa posisyon

Mahirap itali ang kurbatang kapag nasa lugar na ang electronics. Kaya itali ang kurbatang upang maganda ang hitsura nito at ang buhol ay medyo matatag at hindi malulutas. Pagkatapos ay maingat na hilahin ang maliit na dulo ng kurbatang upang buksan ang butas upang makuha ang kurbatang sa ulo. Ito ang posisyon na pagagawan ng kurbatang.

Mayroong lahat ng mga iba't ibang mga magkakatali na buhol. Alam ko lang ang natutunan ko noong bata ako, ang Windsor. Hindi dapat alintana kung aling buhol ang ginamit.

Hakbang 2: Buksan ang likod ng kurbatang

Rip buksan ang mga tahi sa isang gilid ng kurbatang kurbatang at ang logo at pagkatapos ay pababa sa gitna ng kurbatang. Mag-ingat dahil kailangan itong maitahi pabalik sa dulo.

Hakbang 3: Gumuhit ng mga linya kung saan dapat ilagay ang mga LED

Upang lumitaw ang mga LED sa mga seksyon ng puting guhit ng kurbatang, mas madaling makahanap ng gitnang linya para sa bawat seksyon ng puting guhit sa likod ng kurbatang core at pagkatapos ay i-mapa iyon sa harap ng core ng kurbatang. Suriin at i-double check na ang gitnang linya ay 1) sa gitna at 2) kahanay ng guhit. Ang pag-tune ng mga posisyon ng LED ay posible kung sila ay medyo naka-off. Ngunit pinakamahusay na makuha ito bilang malapit sa eksaktong ngayon kaysa sa paglaon.

Subukan ang pagiging sentro ng mga linya sa pamamagitan ng paglalagay ng mga LED sa mga linya at paglalagay ng gulong tela sa itaas. Ayusin kung saan kinakailangan.

Hakbang 3: Paglalakip sa NeoPixels

Paglalakip sa NeoPixels
Paglalakip sa NeoPixels
Paglalakip sa NeoPixels
Paglalakip sa NeoPixels
Paglalakip sa NeoPixels
Paglalakip sa NeoPixels
Paglalakip sa NeoPixels
Paglalakip sa NeoPixels

Talaga, gumagawa kami ng aming sariling LED strip. Pasimpleng i-mount namin ang mga LED sa core ng kurbatang at pagkatapos ay ikonekta ang mga ito sa bawat isa.

Hakbang 1: Sumunod sa mga NeoPixels sa core ng kurbatang

Maglagay ng dab ng mainit na pandikit sa likod ng NeoPixel ilagay ito sa mga gitnang linya. Para sa mga seksyon na may 3 NeoPixels, patayo ihanay ang gitnang NeoPixel at idikit muna ang mga pababa. Gagawin nitong mas madali ang posisyon ng kaliwa at kanang NeoPixel na may kaugnayan sa gitna lalo na't binibigyan ng lapad ng kurbatang tumataas mula sa itaas hanggang sa ibaba.

Siguraduhing i-orient ang lahat ng mga NeoPixel sa parehong direksyon, pagpunta sa ibabang kaliwa hanggang kanang itaas. Kung hindi ito tama, hindi gagana ang strip.

Isang tala tungkol sa mainit na pandikit. Sapat na upang makumpleto ang proyekto. Tulad ng kung magtatagal ito sa darating na mga taon, kailangang makita lamang ng isa.

Hakbang 3: Maghinang ng mga NeoPixels sa bawat isa

Dahil napagpasyahan kong maghinang ng magkasama ang NeoPixels sa halip na gumamit ng kondaktibo na thread, ang butas sa NeoPixel pads ay gumagana laban sa amin nang kaunti. Humanap lamang ng isang magandang lugar sa pad upang maghinang sa wire papunta. Huwag subukang punan ang butas ng panghinang, ngunit kung mangyari ito, magiging OK lang.

Ang wire wire ay may manipis na layer ng pagkakabukod sa paligid ng isang core ng tanso. Gamit ang isang kutsilyo, i-scrape ang pagkakabukod sa mga dulo lamang kung saan sila ay hihihinang. Mahusay na i-scrape ang buong paligid ng wire.

Hakbang 4: Subukan ang pagkakakonekta

Gumamit ng isang multimeter upang subukan ang pagkakakonekta ng:

  1. Positibong koneksyon. Dapat mayroong pagkakakonekta mula sa dulo hanggang sa buntot. Tiyaking ang pagkakakonekta ng pagsubok sa mga pad at hindi ang kawad.
  2. Mga koneksyon sa lupa. Magsagawa ng parehong pagsubok ngunit sa mga ground pad.
  3. Ang bawat linya ng data. Mula sa isang data pad hanggang sa susunod, i-verify na mayroong pagkakakonekta.

Hakbang 4: Pag-attach sa Circuit Playground Express

Paglalakip sa Circuit Playground Express
Paglalakip sa Circuit Playground Express

Ang Circuit Playground Express (CPX) ang puso ng system. Ang Adafruit ay may maraming mga tutorial para sa controller na ito. Mamaya sa pagtuturo na ito, i-highlight ko ang ilan sa mga tampok ng MCU.

Hakbang 1: Ihihinang ang CPX sa ibabang tip ng NeoPixel

Gupitin ang naaangkop na haba ng magnetikong wire para sa lakas, lupa, at data. Itulak ang mga ito sa pamamagitan ng tela ng core ng kurbatang upang hawakan nila ang NeoPixel power, ground, at data pads. Ibaba ang mga ito siguraduhin na ang mga mayroon nang mga wire sa pad ay gumagawa pa rin ng mahusay na pagkakakonekta.

Susunod na baligtarin ang core ng kurbatang at ilagay ang CPX sa posisyon ng pagnanais. Pakainin ang power wire sa VOUT pad, ang ground wire sa anumang ground pad, at ang data wire sa anumang I / O pad maliban sa A0. Ang code na isinulat ko ay gumagamit ng A3.

Subukan ang pagkakakonekta.

Hakbang 2: Itali ang CPX

Gamit ang isang thread at karayom, pumili ng anumang apat na equidistant pad at tahiin ito pababa sa kurdon ng kurbatang.

Hakbang 5: Pagpapatakbo ng CPX

Pinapagana ang CPX
Pinapagana ang CPX
Pinapagana ang CPX
Pinapagana ang CPX
Pinapagana ang CPX
Pinapagana ang CPX

Ang CPX ay walang isang on / off switch. Nangangahulugan ito na sa sandaling naka-plug in ang baterya, bubuksan ang tali. Nangangahulugan din ito na ang tanging paraan upang patayin ito ay sa pamamagitan ng pag-unplug ng baterya, na isang pangunahing abala. Ang isang simpleng solusyon ay upang ilagay ang isang off / off switch sa baterya.

Hakbang 1: Putulin ang ika-3 pin sa switch

Ang isa sa mga di-center na pin ay hindi kinakailangan. Gupitin ito ng flush gamit ang katawan ng switch.

Hakbang 2: Paghinang ng switch na in-line ng isang lead ng baterya

Gupitin ang ground wire ng baterya sa isang lugar sa gitna. I-slide ang isang piraso ng init na pag-urong ng tubo sa bawat mga wire sa lupa. Maghinang ng isang ground wire sa isa sa mga pin at ang iba pang ground wire sa kabilang pin. Tiyaking hindi sila magkadikit o hinahawakan ng solder ang metal na katawan.

I-verify na hindi iyon konektado gamit ang isang multimeter. I-slide ang tubing sa mga soldered na koneksyon at i-shrink ito. Magdagdag ng isang piraso ng electrical tape sa anumang bahagi na maaaring mabigo dahil sa baluktot na pagkapagod.

Hakbang 3: Patunayan na gumagana ang baterya

Sa puntong ito, ang baterya ay maaaring mai-plug sa CPX. Kung naging maayos ang lahat, dapat na ma-on at patayin ng switch ang CPX.

Hakbang 4: I-mount ang baterya

Maglagay ng kaunting adhesive hook at loop ng loop sa likurang bahagi ng baterya at sa kurdon ng kurbatang. Mapapanatili nito sa lugar kung hindi masyadong pinangasiwaan ang kurbatang.

Hakbang 6: Pag-set up ng Circuit Playground Express

Hindi ko idedetalye ang tungkol sa kung paano i-set up ang CPX. Ginagawa iyon ng Adafruit at pagkatapos ay ilan. Magbibigay ako ng ilang mga tip para sa mga isyu na madalas kong nakatagpo.

Nag-freeze ang CPX

Marahil dahil sa pagpapatakbo ng mga isyu sa memorya ng oras, ang CPX ay madalas na nagyeyelo. Ang mabilis na ayusin ay burahin at muling flash. Maghanap para sa "Old Way" sa mga tagubiling ito. Talaga, ito ay isang pares ng mga pagpindot sa pindutan, isang pag-drag at drop upang burahin, at pagkatapos ay isang drag at drop upang muling mag-flash.

Babala: Binubura nito ang lahat. Mawawala ang lahat ng code sa CPX.

Ang pag-save ng Mga Pagbabago sa CPX ay Maaaring Maging sanhi ng Mga Isyu

Natuklasan ko na minsan pagkatapos mai-save ang isang file papunta sa CPX ang python runtime ay nasa isang masamang estado. Ang pag-aayos ay restart ang runtime ng python sa pamamagitan ng pagpindot sa pindutan ng pag-reset. Minsan lang pindutin ito. Ang pagpindot dito nang dalawang beses ay magsisimula ang proseso ng muling pag-flash.

Ang Pag-save nang Direkta Sa CPX Ay Mapanganib

Dahil sa posibilidad na ang CPX ay dapat na muling mai-flash, may isang panganib na maalis ang lahat ng kanilang code. Matapos mawala ang aking code nang dalawang beses, nakagawa ako ng isang simpleng daloy ng trabaho. I-save ko ang aking code sa lokal na hard disk. Kapag handa na itong masubukan sa CPX, kakopya ko lang ito sa pamamagitan ng pagpapatakbo ng isang simpleng script ng pag-deploy.

Hakbang 7: Pag-coding sa Circuit Playground Express

Sa puntong ito, ang CPX at NeoPixels ay medyo kumpleto. Walang ibang gawaing mekanikal o elektrikal ang kailangang gawin sa kanila. Ang natitira ay ang lahat ng software.

Ang code ay matatagpuan sa aking github account. Ang pangunahing code ng sawa ay dapat na gumana nang walang anumang mga pagbabago para sa lahat ng mga operating system. Huwag i-install ang panlabas na aklatan ng Adafruit CircuitPython. Hindi sila ginagamit.

Narito ang isang mataas na antas ng buod ng kung ano ang nangyayari sa code.

Ano ang Input?

  • Button A: Mga cycle sa pamamagitan ng mga LED na animasyon
  • Button B: Pag-ikot ng mga kanta
  • Capacitive Touch Pad A1: Binabago ang mga kulay para sa mga LED na animasyon
  • Capacitive Touch Pad A6: Binabago ang bilis ng mga LED animation

3 Mga Animasyon Na Umiiral Ngunit 2 Lamang ang May Epekto

code.py

mag-import ng pixel

#import vumeter import hagdan import twinkle… led_animations = [pixeloff. PixelsOff (pixel), # vumeter. VuMeter (pixel, 100, 400) hagdan. Stairs (pixel), twinkle. Twinkle (pixel)]

Nag-port ako ng Ampli-Tie VU meter style code. Gumagamit ito ng CPX microphone upang kunin ang tunog at sindihan ang NeoPixels batay sa amplitude ng tunog. Gayunpaman, nais ko ng maraming mga animasyon. Dahil sa mga hadlang sa runtime memory kailangan kong pumili kung aling mga animasyon ang gusto ko. Kaya sa pamamagitan ng default ang dalawa pa, Stair at Twinkle, ay tatakbo nang hindi na kinakailangang gumawa ng mga pagbabago sa code. Upang patakbuhin ang VU meter na animasyon, ang isa o pareho ng iba pang mga animasyon ay dapat na bigyan ng puna at ang VU meter ay hindi nasisiyahan.

Music Manager at Off-Line Encoding

frosty_the_snowman.py

mag-import ng mga musikal_notes bilang mn

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

convert_to_binary.py

mga kanta = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] para sa kanta sa mga kanta: data = song [0] file = song [1] na may bukas (file, "wb") bilang bin_file: para sa pagpasok sa data: print ("Writing:" + str (entry)) note = entry [0] dur = entry [1] bin_file.write (struct.pack ("<HH", note, dur))

Gusto ko ng holiday music. Sinusuportahan ng CPX ang parehong WAV at mga tono. Ang mga file ng WAV ay naging napakalaki sa mga tuntunin ng laki ng file at memorya ng runtime. Ang paggamit ng mga istruktura ng data ng python upang humawak ng mga tono at ang kanilang tagal ay naka-out din upang magamit ang labis na memorya ng runtime. Kaya binago ko ang Holi-Tie code upang mabasa ang isang naka-compress na binary file na naglalaman lamang ng kinakailangang data ng kanta sa isang naka-compress na binary format. Sumulat ako ng isang script na binabasa ang isang kanta na gaganapin sa isang istraktura ng data ng sawa at isinulat ito sa binary format. Ang pagkakaroon ng naka-encode na kanta bilang binary data sa isang file ay ginagawang maliit at pabago-bago ang kanta. Kapag natapos na ang pag-play ng kanta, inilabas ang memorya.

Ito ay walang halaga upang magdagdag ng maraming mga kanta. Para sa mga detalye, tingnan ang README.md sa mga kanta.

Button A Animates NeoPixels, B Play Music, Ngunit Hindi Sabay

code.py

def button_a_pressed ():

kung music.is_playing (): # Itigil ang musika kung nagpe-play ng music.stop () next_led_animation () def button_b_pressed (): kung active_led_animation! = 0: # Patakbuhin ang no-op na animasyon na next_led_animation (0) kung music.is_playing (): # Toggle musika sa o off music.stop () iba pa: music.play ()

Kahit na sa mas mahusay na memorya ng mahusay na sistema ng pamamahala ng musika, hindi ko nagawang hawakan ang runtime memory 2 na mga animasyon, habang nagpe-play ng 1 sa kanila at naglalaro din ng isang kanta nang sabay. Dahil nag-opt na ako na walang VU meter sa runtime memory, hindi ko nais na bawasan ang bilang ng mga animations hanggang sa 1. Kaya't isinulat ko ang code upang ang animasyon ay nagpe-play o ang musika ay tumutugtog ngunit hindi pareho Ang isa pang pagpipilian ay upang mabawasan ang bilang ng mga NeoPixels ngunit na malaya ang ilan sa coolness ng animasyon.

Pagkabago ng Python Code

Bagaman ako ay isang beterano na developer ng software, hindi pa ako nakasulat ng Python. Matapos kong makuha ang hang ito at tumitig sa paglalapat ng mahusay na mga kasanayan sa pag-coding tulad ng encapsulation at modularization, mabilis kong natuklasan na gumagamit ako ng labis na memorya ng runtime. Kaya mayroong isang makatarungang piraso ng hindi DRY code. Kailangan ko ring gumamit ng ilang mga diskarte sa MicroPython tulad ng const () upang higit na mabawasan ang mga isyu sa memorya ng run time.

Mga Pinagsamang Module

magtipon

#! / baseng / bash

tagatala = ~ / development / circuitpython / mpy-cross-3.x-windows.exe cd songs python3./convert_to_binary.py cd.. para sa f in *.py; gawin kung

Maaga sa proyekto sinundan ko ang payo ni Adafruit at naimbak ang lahat ng mga aklatan ng Adafruit CircuitPython sa flash. Gayunpaman, iniwan ang maliit na silid para sa aking proyekto. Upang makuha ang aking code papunta sa CPX, sinimulan kong isulat ang mga module at ilagay ang mga ito sa MCU. Ito ay lumabas na ang Holi-Tie ay hindi nangangailangan ng anumang mga panlabas na aklatan. Ang mga umiiral na aklatan sa UF2 ay sapat para sa proyektong ito. Ang pagpapatakbo ng *.mpy file ay medyo mas mahusay kung kaya't iningatan ko ang proseso ng pag-deploy ng mga naipon na mga module.

Tulad ng maliwanag sa compile script sa itaas, nagtatrabaho ako sa isang Windows machine ngunit gumagamit ng mga kagamitan sa Unix tulad ng bash at python3. Gumagamit ako ng Cygwin upang magawa ito. Madaling maisalin ang script na ito sa DOS batch at isang pagpapatupad ng katutubong Windows Python3.

Hakbang 8: Buttoning Up the Tie

Buttoning Up the Tie
Buttoning Up the Tie
Buttoning Up the Tie
Buttoning Up the Tie

Ang pangwakas na hakbang ay ibalik ang lugar ng core ng kurbatang, muling tipunin ang kurbatang, at tahiin ito pabalik. Siguraduhin na ma-access ang CPX. Kakailanganin mo ito kapag pinapalitan ang baterya o gumagawa ng mga pagbabago sa code.

Inirerekumendang: