Satura rādītājs:

Holi-Tie: 8 soļi (ar attēliem)
Holi-Tie: 8 soļi (ar attēliem)

Video: Holi-Tie: 8 soļi (ar attēliem)

Video: Holi-Tie: 8 soļi (ar attēliem)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Jūlijs
Anonim
Image
Image

Pērtiķu lāpīšanaSeko vairāk autoram:

Izgaismojošs suņu panduss
Izgaismojošs suņu panduss
Tērauda sirds un kausēta stikla skulptūra
Tērauda sirds un kausēta stikla skulptūra
Tērauda sirds un kausēta stikla skulptūra
Tērauda sirds un kausēta stikla skulptūra
Vara stieple un kausēts stikla tauriņš
Vara stieple un kausēts stikla tauriņš
Vara stieple un kausēts stikla tauriņš
Vara stieple un kausēts stikla tauriņš

Par: Vienkārši puisis, kurš vēlas radīt foršas lietas Vairāk par gwfong »

Šī ir svētku kaklasaite Holi-Tie, kas paredzēta valkāšanai svētku laikā. Holi-Tie, kura pamatā ir Becky Stern Ampli-Tie, kurā tiek izmantota Flora plāksne, izmanto Circuit Python Express (CPX) mikrokontrolleri, lai vadītu NeoPixel animācijas un mūziku. Poga mainās starp divām dažādām NeoPixel animācijām. Kapacitatīvie skārienpaliktņi maina NeoPixel krāsas un animācijas ātrumu. Otra poga pārslēdzas starp LED animācijām un mūziku. Borta mikrofons tiek izmantots apkārtējā trokšņa mērīšanai transportlīdzekļa bloka skaitītāja animācijai. Un CPX skaļrunis izvada svētku mikroshēmas.

Viss tiek kodēts, izmantojot Python programmēšanas valodu, kas darbojas virs CircuitPython sistēmas. To darbina 3.7V, 500mAH LiPo akumulators, kas tika pārveidots, lai tam būtu ieslēgšanas/izslēgšanas slēdzis.

Ir divi videoklipi, kas parāda Holi-Tie:

  • Pabeigts Holi-Tie
  • Holi-Tie iekšpusē

1. darbība: detaļas un rīki

Daļas

  • Circuit Playground Express
  • 15x Flora neopikseļi
  • Magnēta vads
  • Līmējoša āķa un cilpas lente
  • 500mAH lipo akumulators ar JST savienotāju
  • Candy Cane kaklasaite
  • Mini slīdnis, SPDT
  • Termiski saraušanās caurule

Iegādājoties detaļas, būtu prātīgi iegādāties papildiespējas. Man kopumā bija 20 NeoPikseļi, no kuriem viens bija salauzts no sākuma un viens - es sabojāju. Kaklasaite Candy Cane bija tik lēta, ka es nopirku otru, tikai gadījumā, ja es sabojāju pirmo.

Rīki

  • Karstās līmes pistole
  • Lodēšanas stacija
  • Stiepļu griezēji
  • Mazs nazis
  • Multimetrs
  • Dators
  • Šķiltavas vai siltuma lielgabals
  • Diegi un adata

2. solis: kaklasaites sagatavošana

Kaklasaites sagatavošana
Kaklasaites sagatavošana
Kaklasaites sagatavošana
Kaklasaites sagatavošana
Kaklasaites sagatavošana
Kaklasaites sagatavošana

Galvenais mērķis ir piekļūt iekšējam kaklasaites kodolam un norobežot līnijas, kas norāda, kur gaismas diodēm jābūt novietotām.

1. solis: sasiet kaklasaiti vietā

Kaklasaiti būs grūti sasiet, kad elektronika ir savās vietās. Tāpēc sasieniet kaklasaiti tā, lai tā izskatās labi un mezgls ir diezgan stingrs un neizšķīst. Pēc tam uzmanīgi pavelciet kaklasaites mazo galu, lai atvērtu caurumu, lai kaklasaite būtu virs galvas. Šī ir pozīcija, pie kuras kaklasaite tiks strādāta.

Ir dažādi kaklasaites mezgli. Es zinu tikai to vienu, ko iemācījos bērnībā - Vindzoru. Tam nevajadzētu nozīmēt, kurš mezgls tiek izmantots.

2. solis: atveriet kaklasaites aizmuguri

Izgrieziet šuves kaklasaites cilpas vienā pusē un logotipu un pēc tam lejup pa kaklasaites centru. Esiet piesardzīgs, jo beigās tas ir jāšuj atpakaļ.

3. solis: uzzīmējiet līnijas, kur jānovieto gaismas diodes

Lai gaismas diodes parādītos kaklasaites balto svītru sekcijās, ir vieglāk atrast katras baltās svītras sadaļas centra līniju kaklasaites aizmugurē un pēc tam kartēt to kaklasaites serdes priekšpusē. Pārbaudiet un vēlreiz pārbaudiet, vai centra līnija ir 1) centrā un 2) paralēla svītrai. LED pozīciju precizēšana būs iespējama, ja tās būs nedaudz izslēgtas. Bet vislabāk to iegūt pēc iespējas tuvāk tagad, nevis vēlāk.

Pārbaudiet līniju centrējumu, novietojot gaismas diodes uz līnijām un uzliekot svītru audumu uz augšu. Pielāgojiet, kur nepieciešams.

3. solis: NeoPikseļu pievienošana

NeoPikseļu pievienošana
NeoPikseļu pievienošana
NeoPikseļu pievienošana
NeoPikseļu pievienošana
NeoPikseļu pievienošana
NeoPikseļu pievienošana
NeoPikseļu pievienošana
NeoPikseļu pievienošana

Būtībā mēs izgatavojam savu LED sloksni. Mēs vienkārši uzstādām gaismas diodes uz kaklasaites serdes un pēc tam savienojam tās savā starpā.

1. solis: pielīmējiet NeoPixels pie kaklasaites kodola

NeoPixel aizmugurē ielieciet karstu līmi. Novietojiet to uz centrālajām līnijām. Sekcijām ar 3 NeoPixels vertikāli izlīdziniet NeoPixel centru un vispirms pielīmējiet tās. Tas atvieglos kreisā un labā NeoPixel novietošanu attiecībā pret centru, jo īpaši ņemot vērā to, ka kaklasaites platums palielinās no augšas uz leju.

Noteikti orientējiet visus NeoPikseļus vienā virzienā, pārejot no apakšas pa kreisi uz augšējo labo pusi. Ja tas nav pareizi, sloksne nedarbosies.

Piezīme par karstu līmi. Pietiks, lai projekts tiktu pabeigts. Attiecībā uz to, vai tas ilgs vairākus gadus, ir tikai jāredz.

3. solis: lodējiet NeoPikseļus savā starpā

Tā kā es nolēmu NeoPixels lodēt kopā, nevis izmantot vadošu vītni, caurums NeoPixel spilventiņos nedaudz darbojas pret mums. Vienkārši atrodiet uz spilventiņa labu vietu, kur pielodēt vadu. Nemēģiniet aizpildīt caurumu ar lodmetālu, bet, ja tas notiks, viss būs kārtībā.

Magnēta vadam ir plāns izolācijas slānis ap vara serdi. Ar nazi nokasiet izolāciju tieši to galos, kur tie tiks pielodēti. Vislabāk ir nokasīt visu stieples apkārtmēru.

4. darbība. Pārbaudiet savienojamību

Izmantojiet multimetru, lai pārbaudītu savienojumu:

  1. Pozitīvi savienojumi. Ir jābūt savienojamībai no gala līdz astei. Pārliecinieties, vai testa savienojums ir uz spilventiņiem, nevis vadam.
  2. Zemes savienojumi. Veiciet to pašu pārbaudi, bet ar zemes spilventiņiem.
  3. Katra datu līnija. No viena datu spilventiņa uz otru pārbaudiet, vai ir savienojamība.

4. darbība. Circuit Playground Express piestiprināšana

Circuit Playground Express piestiprināšana
Circuit Playground Express piestiprināšana

Circuit Playground Express (CPX) ir sistēmas sirds. Adafruit ir daudz pamācību šim kontrolierim. Vēlāk šajā pamācībā es izcelšu dažas MCU funkcijas.

1. solis: pielodējiet CPX pie NeoPixel apakšējā gala

Izgrieziet atbilstošu magnēta stieples garumu jaudai, zemei un datiem. Izvelciet tos cauri kaklasaites kodola audumam, lai tie pieskartos NeoPixel jaudai, zemei un datu paliktņiem. Lodējiet tos, pārliecinoties, ka esošie vadi uz spilventiņiem joprojām nodrošina labu savienojumu.

Pēc tam apgrieziet kaklasaites serdi un novietojiet CPX vēlamajā stāvoklī. Padevējiet barošanas vadu VOUT spilventiņam, zemējuma vadu jebkuram zemējuma spilventiņam un datu vadu jebkuram I/O spilventiņam, izņemot A0. Manis rakstītais kods izmanto A3.

Pārbaudiet savienojamību.

2. darbība. Piesaistiet CPX

Izmantojot diegu un adatu, izvēlieties visus četrus vienādā attālumā esošos spilventiņus un šujiet tos uz kaklasaites serdes.

5. darbība. CPX barošana

CPX barošana
CPX barošana
CPX barošana
CPX barošana
CPX barošana
CPX barošana

CPX nav ieslēgšanas/izslēgšanas slēdža. Tas nozīmē, ka brīdī, kad akumulators ir pievienots, kaklasaite ieslēgsies. Tas nozīmē arī to, ka vienīgais veids, kā to izslēgt, ir atvienot akumulatoru, kas rada lielas problēmas. Vienkāršs risinājums ir akumulatora izslēgšanas/izslēgšanas slēdzis.

1. darbība: nogrieziet slēdža trešo tapu

Viena no tapām, kas nav centrā, nav nepieciešama. Nogrieziet to vienā līmenī ar slēdža korpusu.

2. solis: lodējiet slēdzi rindā ar akumulatora vadu

Izgrieziet akumulatora zemējuma vadu kaut kur vidū. Uzbīdiet termiski saraušanās caurules gabalu uz katra zemējuma vada. Lodējiet vienu zemējuma vadu pie vienas tapas un otru zemējuma vadu pie citas tapas. Pārliecinieties, ka tie nepieskaras viens otram, vai lodēšana nepieskaras metāla korpusam.

Pārbaudiet, vai tie nav savienoti, izmantojot multimetru. Pārbīdiet cauruli pār lodētiem savienojumiem un saraujiet to. Pievienojiet nedaudz elektriskās lentes jebkurai daļai, kas var neizdoties lieces noguruma dēļ.

3. darbība: pārbaudiet, vai akumulators darbojas

Šajā brīdī akumulatoru var pievienot CPX. Ja viss noritēja labi, slēdzim vajadzētu būt iespējai ieslēgt un izslēgt CPX.

4. solis: uzstādiet akumulatoru

Uzlieciet nedaudz līmes āķa un cilpas lentes akumulatora aizmugurē un uz saites serdes. Tas saglabās to vietā, ja kaklasaite netiek pārāk apstrādāta.

6. darbība: Circuit Playground Express iestatīšana

Es neiedziļināšos sīkāk, kā iestatīt CPX. Adafruit to dara un tad daži. Es sniegšu dažus padomus problēmām, ar kurām es saskāros diezgan bieži.

CPX sasalst

Iespējams, ka darbības laika atmiņas problēmu dēļ CPX iesaldēsies diezgan bieži. Ātrais risinājums ir dzēst un atkārtoti mirgot. Šajos norādījumos meklējiet “Old Way”. Būtībā tas ir pāris pogu nospiešanas, velciet un nometiet, lai izdzēstu, un pēc tam velciet un nometiet, lai atkal mirgot.

Brīdinājums: tas izdzēš visu. Viss CPX kods tiks zaudēts.

Saglabājot izmaiņas CPX, var rasties problēmas

Es atklāju, ka dažreiz pēc faila saglabāšanas CPX python izpildlaiks būtu sliktā stāvoklī. Labojums bija restartēt python izpildlaiku, nospiežot atiestatīšanas pogu. Nospiediet to tikai vienu reizi. Nospiežot to divreiz, sāksies atkārtotas zibspuldzes process.

Tieša saglabāšana CPX ir riskanta

Tā kā pastāv iespēja, ka CPX ir jāatspoguļo atkārtoti, pastāv risks zaudēt visu kodu. Divreiz pazaudējis savu kodu, es izdomāju vienkāršu darbplūsmu. Es saglabātu savu kodu lokālajā cietajā diskā. Kad tas bija gatavs testēšanai CPX, es to vienkārši nokopēju, palaižot vienkāršu izvietošanas skriptu.

7. darbība. Circuit Playground Express kodēšana

Šajā brīdī CPX un NeoPixels ir gandrīz pabeigti. Ar tiem nav jāveic citi mehāniski vai elektriski darbi. Viss pārējais ir programmatūra.

Kods ir atrodams manā github kontā. Python kodam vajadzētu darboties bez izmaiņām visās operētājsistēmās. Neinstalējiet ārējās Adafruit CircuitPython bibliotēkas. Tie netiek izmantoti.

Šeit ir augsta līmeņa kopsavilkums par to, kas notiek kodā.

Kāda ieeja ko dara?

  • Poga A: Pārvietojas pa LED animācijām
  • Poga B: Ritiniet dziesmas
  • Kapacitatīvs skārienpaliktnis A1: maina LED animāciju krāsas
  • Kapacitatīvs skārienpaliktnis A6: maina LED animāciju ātrumu

Pastāv 3 animācijas, bet ir spēkā tikai 2

code.py

importēt pikseļus

#import vumeter importēt kāpnes importēt mirgošanu … led_animations = [pixelsoff. PixelsOff (pikseļi), # vumeter. VuMeter (pikseļi, 100, 400) kāpnes. Kāpnes (pikseļi), mirdzums. Mirgošana (pikseļi)]

Es pārnesu Ampli-Tie VU skaitītāja stila kodu. Tas izmanto CPX mikrofonu, lai uztvertu skaņu un iedegtu NeoPixels, pamatojoties uz skaņas amplitūdu. Tomēr es gribēju vairāk animāciju. Runtime atmiņas ierobežojumu dēļ man bija jāizvēlas, kuras animācijas es vēlos. Tātad pēc noklusējuma pārējās divas - kāpnes un mirgošana - darbosies, neveicot koda izmaiņas. Lai palaistu transportlīdzekļa bloka skaitītāja animāciju, viena vai abas citas animācijas ir jākomentē un transportlīdzekļa bloka skaitītājs nekomentē.

Mūzikas pārvaldnieks un bezsaistes kodēšana

frosty_the_snowman.py

importēt music_notes kā 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

dziesmas = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] dziesmai dziesmās: data = song [0] file = song [1] with open (file, "wb") kā bin_file: datu ievadīšanai: print ("rakstīšana:" + str (ieraksts)) piezīme = ieraksts [0] dur = ieraksts [1] bin_file.write (strukt.pack ("<HH", piezīme, dur))

Es gribēju svētku mūziku. CPX atbalsta gan WAV, gan toņus. WAV faili faila lieluma un izpildlaika atmiņas ziņā izrādījās pārāk lieli. Izmantojot python datu struktūras, lai saglabātu toņus un to ilgumu, izrādījās, ka tiek izmantots pārāk daudz izpildlaika atmiņas. Tāpēc es mainīju Holi-Tie kodu, lai izlasītu saspiestu bināro failu, kurā bija tikai nepieciešamie dziesmas dati saspiestā binārā formātā. Es uzrakstīju skriptu, kas nolasa pitona datu struktūrā glabātu dziesmu un izraksta to binārā formātā. Ja dziesma tiek kodēta kā bināri dati failā, dziesma kļūst gan maza, gan dinamiska. Kad dziesma ir atskaņota, atmiņa tiek atbrīvota.

Ir mazsvarīgi pievienot vairāk dziesmu. Sīkāku informāciju skatiet dziesmās README.md.

Poga A animē NeoPikseļus, B atskaņo mūziku, bet ne vienlaicīgi

code.py

def button_a_pressed ():

if music.is_playing (): # Apturiet mūziku, ja tiek atskaņota mūzika. stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Palaist animāciju bez opcijām next_led_animation (0), ja mūzika.is_playing (): # Pārslēgt mūzika mūzikas ieslēgšana vai izslēgšana. stop () cits: music.play ()

Pat ar atmiņas ziņā efektīvāku mūzikas pārvaldības sistēmu es nevarēju izpildlaika atmiņā saglabāt 2 animācijas, atskaņojot 1 no tām, kā arī atskaņot dziesmu vienlaikus. Tā kā es jau izvēlējos, lai VU mērītājs vispār nebūtu izpildlaika atmiņā, es negribēju samazināt animāciju skaitu līdz vienai. Tāpēc es uzrakstīju kodu tā, lai vai nu animācija tiek atskaņota, vai mūzika tiek atskaņota, bet ne gan. Vēl viena iespēja bija samazināt NeoPikseļu skaitu, taču tas zaudētu daļu animācijas vēsuma.

Python koda funkcionalitāte

Lai gan esmu programmatūras izstrādātājs veterāns, es nekad nebiju rakstījis Python. Pēc tam, kad es to sapratu un skatījos, piemērojot labu kodēšanas praksi, piemēram, iekapsulēšanu un modulāciju, es ātri atklāju, ka izmantoju pārāk daudz izpildlaika atmiņas. Tātad ir diezgan daudz ne-DRY koda. Man bija arī jāizmanto dažas MicroPython metodes, piemēram, const (), lai vēl vairāk samazinātu darbības laika atmiņas problēmas.

Apkopoti moduļi

sastādīt

#!/bin/bash

kompilators = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd dziesmas python3./convert_to_binary.py cd.. f failam *.py; darīt, ja

Projekta sākumā es sekoju Adafruit padomam un visas Adafruit CircuitPython bibliotēkas saglabāju zibspuldzē. Tomēr tas atstāja maz vietas manam projektam. Lai varētu ievietot savu kodu CPX, es sāku apkopot moduļus un ievietot tos MCU. Izrādās, ka Holi-Tie nav nepieciešama neviena ārējā bibliotēka. Šim projektam pietika ar UF2 esošajām bibliotēkām. *. Mpy failu palaišana ir nedaudz efektīvāka, tāpēc es turpināju apkopoto moduļu izvietošanas procesu.

Kā redzams iepriekš apkopotajā skriptā, es strādāju ar Windows mašīnu, bet izmantoju Unix utilītas, piemēram, bash un python3. Es izmantoju Cygwin, lai to paveiktu. Šo skriptu var viegli tulkot DOS partijā un Windows vietējā Python3 ieviešanā.

8. solis: kaklasaites piespraušana

Piespraust kaklasaiti
Piespraust kaklasaiti
Piespraust kaklasaiti
Piespraust kaklasaiti

Pēdējais solis ir salikt kaklasaites serdi atpakaļ, salikt kaklasaiti un atkal uzšūt. Pārliecinieties, ka varat padarīt CPX pieejamu. Tas būs nepieciešams, nomainot akumulatoru vai mainot kodu.

Ieteicams: