Kazalo:

Holi-Tie: 8 korakov (s slikami)
Holi-Tie: 8 korakov (s slikami)

Video: Holi-Tie: 8 korakov (s slikami)

Video: Holi-Tie: 8 korakov (s slikami)
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Julij
Anonim
Image
Image

Avtor gwfongMonkey PatchingSledi Več avtorja:

Osvetljevalna rampa za pse
Osvetljevalna rampa za pse
Skulptura iz jeklenega srca in staljenega stekla
Skulptura iz jeklenega srca in staljenega stekla
Skulptura iz jeklenega srca in staljenega stekla
Skulptura iz jeklenega srca in staljenega stekla
Bakrena žica in fuzijski stekleni metulj
Bakrena žica in fuzijski stekleni metulj
Bakrena žica in fuzijski stekleni metulj
Bakrena žica in fuzijski stekleni metulj

O: Samo fant, ki želi narediti kul stvari Več o gwfong »

To je Holi-Tie, praznična kravata, namenjena za nošenje med prazniki. Ohlajeno temelji na Ampli-Tie Becky Stern, ki uporablja ploščo Flora, Holi-Tie uporablja mikrokrmilnik Circuit Python Express (CPX) za poganjanje animacij NeoPixel in glasbe. Gumb se spreminja med dvema različnima animacijama NeoPixel. Kapacitivne sledilne ploščice spreminjajo barve NeoPixel in hitrost animacije. Drugi gumb se spreminja med LED animacijami in glasbo. Vgrajeni mikrofon se uporablja za merjenje zunanjega hrupa za animacijo merilnika VU. Zvočnik CPX oddaja počitniške melodije.

Vse je kodirano z uporabo programskega jezika Python, ki deluje na sistemu CircuitPython. Napaja ga 3.7V, 500mAH LiPo baterija, ki je bila spremenjena tako, da ima stikalo za vklop/izklop.

Obstajata dva video posnetka, ki prikazujeta Holi-Tie:

  • Dokončana Holi-Tie
  • V notranjosti Holi-Tie

Korak: Deli in orodja

Deli

  • Circuit Playground Express
  • 15x Flora neopikslov
  • Magnetna žica
  • Lepilni kavelj in zančni trak
  • Lipo baterija 500mAH s priključkom JST
  • Kravata Candy Cane
  • Mini drsno stikalo, SPDT
  • Termoskrčljive cevi

Pri nabavi delov bi bilo pametno kupiti dodatke. Imel sem skupaj 20 NeoPixel, od katerih je bil eden od začetka pokvarjen, enega pa sem uničil. Kravata Candy Cane je bila tako poceni, da sem kupil drugo, v primeru, da sem prvo uničil.

Orodja

  • Pištola za vroče lepilo
  • Spajkalna postaja
  • Rezalniki žice
  • Majhen nož
  • Multimeter
  • Računalnik
  • Vžigalnik ali toplotna pištola
  • Niti in igla

2. korak: Priprava kravate

Priprava kravate
Priprava kravate
Priprava kravate
Priprava kravate
Priprava kravate
Priprava kravate

Glavni cilj je dostop do notranjega veznega jedra in razmejitev linij, ki označujejo, kje naj bodo LED diode nameščene.

1. korak: Privežite kravato na mesto

Ko je elektronika na mestu, bo težko povezati kravato. Tako zavežite kravato, da bo videti dobro, vozel pa je dokaj čvrst in se ne bo razpletel. Nato previdno povlecite majhen konec kravate, da odprete luknjo, da kravato popeljete čez glavo. To je položaj, na katerem se bo izenačilo.

Obstajajo vse vrste različnih vozlov za kravate. Poznam samo tistega, ki sem se ga naučil kot otrok, Windsorja. Ni važno, kateri vozel se uporablja.

2. korak: Odprite zadnji del kravate

Odprite šive na eni strani zanke in logotipa ter nato navzdol po sredini kravate. Bodite previdni, ker ga je treba na koncu zašiti.

3. korak: Narišite črte, kjer naj bodo LED diode

Če želite, da se LED diode pojavijo v odsekih kravate z belimi črtami, je lažje najti osrednjo črto za vsak odsek bele črte na zadnji strani jedra kravate in jo nato preslikati na sprednjo stran jedra kravate. Preverite in dvakrat preverite, ali je osrednja črta 1) v sredini in 2) vzporedna s črto. Fina nastavitev položajev LED bo mogoča, če so malo izklopljene. Najbolje pa je, da se čim bolj približate natančneje kot pozneje.

Preizkusite središče linij tako, da na črte položite LED diode in na njih položite črtasto tkanino. Po potrebi prilagodite.

3. korak: pritrditev NeoPixels

Pritrditev NeoPixels
Pritrditev NeoPixels
Pritrditev NeoPixels
Pritrditev NeoPixels
Pritrditev NeoPixels
Pritrditev NeoPixels
Pritrditev NeoPixels
Pritrditev NeoPixels

V bistvu izdelujemo lasten LED trak. Svetleče diode preprosto pritrdimo na vezno jedro in jih nato povežemo med seboj.

1. korak: NeoPixels pritrdite na vezno jedro

Na zadnjo stran NeoPixela položite malo vročega lepila in ga položite na sredinske črte. Za odseke s tremi NeoPixeli navpično poravnajte osrednji NeoPixel in jih najprej zlepite. Tako boste lažje postavili levi in desni NeoPixel glede na sredino, še posebej glede na to, da se širina kravate poveča od zgoraj navzdol.

Vse NeoPixele usmerite v isto smer, od spodaj levo navzgor desno. Če to ni pravilno, trak ne bo deloval.

Opomba o vročem lepilu. Dovolj bo, da se projekt zaključi. Kar zadeva, ali bo to trajalo več let, je treba le še videti.

Korak: Spajkajte NeoPixels drug na drugega

Ker sem se odločil za spajkanje NeoPixels skupaj namesto prevodnega navoja, luknja v NeoPixel blazinicah deluje malo proti nam. Poiščite dobro mesto na blazinici, na katero bi spajkali žico. Ne poskušajte zapolniti luknje s spajkanjem, če pa se to zgodi, bo v redu.

Magnetna žica ima tanko plast izolacije okoli bakrenega jedra. Z nožem odtrgajte izolacijo le na koncih, kjer bodo spajkani. Najbolje je, da strgate po celotnem obodu žice.

4. korak: Preizkusite povezljivost

Z multimetrom preizkusite povezljivost:

  1. Pozitivne povezave. Morala bi biti povezanost od konice do repa. Preverite, ali je preskusna povezljivost na blazinicah in ne na žici.
  2. Ozemljitveni priključki. Izvedite isti test, vendar z ozemljitvenimi blazinicami.
  3. Vsaka podatkovna vrstica. Od ene podatkovne ploščice do druge preverite, ali obstaja povezava.

4. korak: Pritrditev Circuit Playground Express

Pritrditev Circuit Playground Express
Pritrditev Circuit Playground Express

Circuit Playground Express (CPX) je srce sistema. Adafruit ima številne vaje za ta krmilnik. Kasneje v tem navodilu bom izpostavil nekaj funkcij MCU.

1. korak: Spajkajte CPX na spodnjo konico NeoPixel

Odrežite ustrezno dolžino magnetne žice za napajanje, ozemljitev in podatke. Potisnite jih skozi tkanino za kravato, tako da se dotikajo napajalnih plošč NeoPixel, tal in podatkovnih blazinic. Spajkajte jih in se prepričajte, da obstoječe žice na blazinicah še vedno dobro povezujejo.

Nato obrnite jedro vezice in namestite CPX v želeni položaj. Napajalni kabel napajajte z VOUT blazinico, ozemljitveno žico na katero koli ozemljitveno ploščico, podatkovno žico pa na katero koli V/I ploščico, razen A0. Koda, ki sem jo napisal, uporablja A3.

Preizkusite povezljivost.

2. korak: Povežite CPX

Z nitjo in iglo izberite vse štiri enako oddaljene blazinice in jih zašite na jedro kravate.

5. korak: Napajanje CPX

Napajanje CPX
Napajanje CPX
Napajanje CPX
Napajanje CPX
Napajanje CPX
Napajanje CPX

CPX nima stikala za vklop/izklop. To pomeni, da se bo v trenutku, ko je baterija priključena, privila kravata. To tudi pomeni, da ga lahko izklopite le tako, da odklopite baterijo, kar je velika težava. Preprosta rešitev je, da na baterijo vklopite stikalo za izklop/izklop.

1. korak: Odstranite 3. zatič na stikalu

Eden od necentričnih zatičev ni potreben. Odrežite ga v ravnini s telesom stikala.

Korak 2: Spajajte stikalo v vrstici akumulatorskega kabla

Odrežite ozemljitveno žico akumulatorja nekje na sredini. Na vsako ozemljitveno žico potisnite kos toplotno skrčne cevi. Spajajte eno ozemljitveno žico na enega od zatičev, drugo ozemljitveno žico pa na drugo nožico. Pazite, da se ne dotikajo drug drugega ali da se spajka dotakne kovinskega ohišja.

Preverite, ali niso povezani z multimetrom. Potisnite cev po spajkanih povezavah in jo skrčite. Vsakemu delu, ki lahko zaradi utrujenosti zaradi upogibanja odpove, dodajte malo električnega traku.

3. korak: Preverite delovanje baterije

Na tej točki lahko baterijo priključite v CPX. Če je vse v redu, bi moralo stikalo vklopiti in izklopiti CPX.

4. korak: Namestite baterijo

Na zadnjo stran baterije in na jedro vezalke položite malo lepilnega kaveljčka in zanke. To bo ohranilo položaj, če s kravato ne ravnate preveč.

6. korak: Nastavitev Circuit Playground Express

Ne bom se spuščal v podrobnosti o tem, kako nastaviti CPX. Adafruit to naredi in potem nekaj. Ponudil bom nekaj nasvetov za težave, s katerimi sem se pogosto srečeval.

CPX zamrzne

Verjetno bi zaradi težav s pomnilnikom časa delovanja CPX precej pogosto zamrznil. Hitra rešitev je izbrisati in znova utripati. V teh navodilih poiščite "Old Way". V bistvu gre za nekaj pritiskov gumbov, povleci in spusti za izbris, nato pa povleci in spusti za ponovno utripanje.

Opozorilo: To izbriše vse. Vsa koda na CPX bo izgubljena.

Shranjevanje sprememb v CPX lahko povzroči težave

Ugotovil sem, da je včasih po shranjevanju datoteke v CPX izvajalno okolje python v slabem stanju. Popravek je bil znova zagnan v času izvajanja pythona s pritiskom na gumb za ponastavitev. Pritisnite samo enkrat. Če dvakrat pritisnete, se bo začel postopek ponovne bliskavice.

Neposredno shranjevanje v CPX je tvegano

Zaradi možnosti ponovnega utripanja CPX obstaja nevarnost izgube vse njihove kode. Ko sem dvakrat izgubil kodo, sem prišel do preprostega poteka dela. Kodo bi shranil na lokalni trdi disk. Ko je bil pripravljen za testiranje na CPX -u, bi ga preprosto kopiral z izvajanjem preprostega scenarija za uvajanje.

7. korak: Kodiranje Circuit Playground Express

Na tej točki sta CPX in NeoPixels precej popolna. Z njimi ni treba opravljati drugih mehanskih ali električnih del. Ostalo je vsa programska oprema.

Kodo najdete na mojem računu github. Osnovna koda python mora delovati brez sprememb za vse operacijske sisteme. Ne nameščajte zunanjih knjižnic Adafruit CircuitPython. Ne uporabljajo se.

Tukaj je povzetek na visoki ravni o tem, kaj se dogaja v kodi.

Kakšen vnos pomeni kaj?

  • Gumb A: Kolesarjenje skozi LED animacije
  • Gumb B: Kolesa skozi pesmi
  • Kapacitivna sledilna ploščica A1: spremeni barve za LED animacije
  • Kapacitivna sledilna ploščica A6: spremeni hitrost LED animacij

3 animacije obstajajo, le 2 pa veljata

code.py

import pixelsoff

#import vumeter uvoz stopnic uvoz twinkle… led_animations = [pixelsoff. PixelsOff (slikovne pike), # vumeter. VuMeter (slikovne pike, 100, 400) stopnice. Stopnice (slikovne pike), twinkle. Twinkle (slikovne pike))

Prenesel sem kodo sloga merilnika Ampli-Tie VU. Uporablja mikrofon CPX za prevzem zvoka in osvetlitev NeoPixels na podlagi amplitude zvoka. Vseeno sem želel več animacij. Zaradi omejitev pomnilnika med izvajanjem sem se moral odločiti, katere animacije želim. Tako bosta privzeto ostali dve, Stairs in Twinkle, delovali brez spreminjanja kode. Če želite zagnati animacijo merilnika VU, morate eno ali obe drugi animaciji komentirati in merilnik VU razkomentirati.

Upravitelj glasbe in kodiranje brez povezave

frosty_the_snowman.py

uvozi glasbene zapiske kot mn

# Frosty the Snowman # pesem Walterja E. Rollinsa = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF),…

convert_to_binary.py

pesmi = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] za pesem v pesmih: data = song [0] file = song [1] z odprtim (file, "wb") kot bin_file: za vnos v podatke: print ("pisanje:" + str (vnos)) note = entry [0] dur = entry [1] bin_file.write (struct.pack ("<HH", opomba, dur))

Želela sem praznično glasbo. CPX podpira WAV in tone. Datoteke WAV so se izkazale za prevelike glede na velikost datotek in pomnilnik pri izvajanju. Izkazalo se je tudi, da uporaba podatkovnih struktur python za zadrževanje tonov in njihovo trajanje porabi preveč pomnilnika med izvajanjem. Zato sem kodo Holi-Tie spremenil v branje stisnjene binarne datoteke, ki je vsebovala le potrebne podatke o pesmi v stisnjeni binarni obliki. Napisal sem skript, ki bere pesem v podatkovni strukturi python in jo zapiše v binarni format. Če je skladba kodirana kot binarni podatki v datoteki, je pesem majhna in dinamična. Ko se pesem predvaja, se sprosti spomin.

Pomembno je dodati več pesmi. Za podrobnosti glejte README.md v pesmih.

Gumb A animira neopiksele, B predvaja glasbo, vendar ne hkrati

code.py

def button_a_pressed ():

if music.is_playing (): # Ustavite glasbo, če predvajate glasbo.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Zaženi animacijo brez operacije next_led_animation (0), če je music.is_playing (): # Preklopi vklop ali izklop glasbe.stop () else: music.play ()

Tudi z bolj pomnilniško učinkovitim sistemom za upravljanje glasbe nisem mogel zadržati v pomnilniku med izvajanjem 2 animacij, hkrati pa predvajati 1 od njih in hkrati predvajati pesem. Ker sem se že odločil, da merilnika VU sploh ne bom imel v pomnilniku med izvajanjem, nisem želel zmanjšati števila animacij na samo 1. Zato sem kodo napisal tako, da se animacija predvaja ali pa se predvaja glasba, vendar ne oboje. Druga možnost je bila zmanjšati število NeoPixels, vendar bi to izgubilo nekaj hladnosti animacije.

Funkcionalnost Pythonove kode

Čeprav sem veteranski razvijalec programske opreme, nisem nikoli pisal Pythona. Ko sem se tega zavedel in zazrl v uporabo dobrih kodirnih praks, kot sta enkapsulacija in modularizacija, sem hitro ugotovil, da uporabljam preveč pomnilnika za izvajanje. Torej obstaja precej kode, ki ni DRY. Prav tako sem moral uporabiti nekatere tehnike MicroPython, kot je const (), da bi še dodatno zmanjšal težave s pomnilnikom med izvajanjem.

Sestavljeni moduli

sestaviti

#!/bin/bash

prevajalnik = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd pesmi python3./convert_to_binary.py cd.. za f in *.py; naredi, če

Na začetku projekta sem upošteval nasvete Adafruit in shranil vse knjižnice Adafruit CircuitPython na flash. To pa je pustilo malo prostora za moj projekt. Da bi lahko svojo kodo prenesel na CPX, sem začel sestavljati module in jih postavljati v MCU. Izkazalo se je, da Holi-Tie ne potrebuje nobene zunanje knjižnice. Obstoječe knjižnice v UF2 so zadoščale za ta projekt. Zagon datotek *.mpy je nekoliko učinkovitejši, zato sem ohranil postopek uvajanja sestavljenih modulov.

Kot je razvidno iz zgornjega skripta za prevajanje, delam na računalniku z operacijskim sistemom Windows, vendar uporabljam pripomočke Unix, kot sta bash in python3. Za to uporabljam Cygwin. Ta skript lahko preprosto prevedete v paket DOS in izvirno implementacijo Python3 v sistemu Windows.

8. korak: Zapenjanje kravate

Zapenjanje kravate
Zapenjanje kravate
Zapenjanje kravate
Zapenjanje kravate

Zadnji korak je, da jedro kravate postavite na svoje mesto, kravato ponovno sestavite in jo zašijete. Poskrbite, da bo CPX dostopen. Potrebovali ga boste pri menjavi baterije ali spreminjanju kode.

Priporočena: