Taula de continguts:

El Holi-Tie: 8 passos (amb imatges)
El Holi-Tie: 8 passos (amb imatges)

Vídeo: El Holi-Tie: 8 passos (amb imatges)

Vídeo: El Holi-Tie: 8 passos (amb imatges)
Vídeo: НОЧЬЮ САМО ЗЛО ПРИХОДИТ В ЭТОТ ДОМ / AT NIGHT, EVIL ITSELF COMES TO THIS HOUSE 2024, Desembre
Anonim
Image
Image

Per gwfongMonkey Patching Segueix més de l'autor:

Rampa de gos il·luminadora
Rampa de gos il·luminadora
Escultura de cor d’acer i vidre fusionat
Escultura de cor d’acer i vidre fusionat
Escultura de cor d’acer i vidre fusionat
Escultura de cor d’acer i vidre fusionat
Filferro de coure i papallona de vidre fusionat
Filferro de coure i papallona de vidre fusionat
Filferro de coure i papallona de vidre fusionat
Filferro de coure i papallona de vidre fusionat

Quant a: Només un noi que vol fer coses interessants Més sobre gwfong »

Es tracta del Holi-Tie, una corbata festiva dissenyada per portar-se durant les vacances. Basat en l’ampli-Tie de Becky Stern que utilitza una placa Flora, el Holi-Tie utilitza un microcontrolador Circuit Python Express (CPX) per conduir les animacions NeoPixel i la música. Un botó canvia entre 2 animacions NeoPixel diferents. Les pastilles tàctils capacitives canvien els colors NeoPixel i les velocitats d’animació. L'altre botó canvia entre animacions LED i música. El micròfon de bord s’utilitza per mesurar el soroll ambiental per a l’animació del comptador VU. I l’altaveu CPX emet melodies de xips de vacances.

Tot es codifica mitjançant el llenguatge de programació Python que s’executa a sobre del sistema CircuitPython. Funciona amb una bateria LiPo de 3,7 V, 500 mAH que es va modificar per tenir un interruptor d’encesa / apagada.

Hi ha dos videoclips que mostren el Holi-Tie:

  • Completat Holi-Tie
  • Dins del Holi-Tie

Pas 1: peces i eines

Parts

  • Circuit Playground Express
  • 15x Neopíxels de flora
  • Filferro imant
  • Cinta adhesiva de ganxo i bucle
  • Bateria lipo de 500 mAH amb connector JST
  • Llaç Candy Cane
  • Mini interruptor lliscant, SPDT
  • Tubs termoretractables

A l’hora d’obtenir les peces, seria aconsellable comprar extres. Tenia un total de 20 NeoPixels, un dels quals estava trencat des del principi i un altre que vaig arruïnar. La corbata de Candy Cane era tan barata que en vaig comprar una segona per si de cas la vaig arruïnar.

Eines

  • Pistola de cola calenta
  • Estació de soldadura
  • Talladors de filferro
  • Ganivet petit
  • Multímetre
  • Ordinador
  • Encenedor o pistola de calor
  • Fil i agulla

Pas 2: Preparar la corbata

Preparant la corbata
Preparant la corbata
Preparant la corbata
Preparant la corbata
Preparant la corbata
Preparant la corbata

L’objectiu principal és aconseguir accés al nucli de la corbata interior i delimitar les línies que indiquen on s’haurien de col·locar els LED.

Pas 1: lligueu la corbata a la seva posició

Serà difícil empatar l’empat quan l’electrònica estigui al seu lloc. Lligueu la corbata de manera que quedi bé i el nus sigui força ferm i no es desfaci. A continuació, estireu amb cura l'extrem petit de la corbata per obrir el forat i aconseguir que la corbata sobre el cap. Aquesta és la posició en què es treballarà l’empat.

Hi ha tot tipus de nusos diferents. Només conec el que vaig aprendre de petit, el Windsor. No importa quin nus s’utilitzi.

Pas 2: obriu la part posterior de la corbata

Obriu les costures d’un costat del llaç i del logotip i després baixeu pel centre de la corbata. Vés amb compte perquè s’ha de cosir de nou al final.

Pas 3: Dibuixeu línies on s’haurien de col·locar els LED

Perquè els LED apareguin a les seccions de ratlles blanques de la corbata, és més fàcil trobar la línia central de cada secció de ratlles blanques a la part posterior del nucli de la corbata i, a continuació, assignar-la a la part frontal de la corbata. Comproveu i comproveu que la línia central sigui 1) al centre i 2) paral·lela amb la franja. Serà possible afinar les posicions del LED si estan una mica apagades. Però el millor és aconseguir-ho tan a prop d’exactes en lloc de més tard.

Proveu el centre de les línies col·locant LEDs sobre les línies i col·locant el teixit de ratlles a la part superior. Ajusta on sigui necessari.

Pas 3: adjuntar els NeoPixels

Adjunt dels NeoPixels
Adjunt dels NeoPixels
Adjunt dels NeoPixels
Adjunt dels NeoPixels
Adjunt dels NeoPixels
Adjunt dels NeoPixels
Adjunt dels NeoPixels
Adjunt dels NeoPixels

Bàsicament, estem fabricant la nostra pròpia tira LED. Simplement muntem els LED al nucli de la corbata i els connectem entre ells.

Pas 1: adheriu els NeoPixels al nucli de la corbata

Col·loqueu una mica de cola calenta a la part posterior del NeoPixel i col·loqueu-la a les línies centrals. Per a les seccions amb 3 NeoPixels, alineeu verticalment el NeoPixel central i enganxeu-los primer. Això farà que sigui més fàcil col·locar el NeoPixel esquerre i dret en relació amb el centre, sobretot donat que l’amplada de la corbata augmenta de dalt a baix.

Assegureu-vos d’orientar tots els NeoPixels en la mateixa direcció, anant de baix a esquerra a dalt a la dreta. Si això no és correcte, la tira no funcionarà.

Una nota sobre la cola calenta. N’hi haurà prou per acabar el projecte. Quant a si durarà els propers anys, només cal veure-ho.

Pas 3: soldeu els NeoPixels entre si

Com que vaig decidir soldar els NeoPixels junts en lloc d’utilitzar fils conductors, el forat dels coixinets NeoPixel funciona en contra nostra. Només cal trobar un bon lloc al coixinet per soldar el cable. No intenteu omplir el forat amb soldadura, però si passa, estarà bé.

El cable imant té una fina capa d’aïllament al voltant d’un nucli de coure. Amb un ganivet, rasqueu l’aïllament just als extrems on es soldaran. El millor és raspar tota la circumferència del fil.

Pas 4: proveu la connectivitat

Utilitzeu un multímetre per provar la connectivitat de:

  1. Connexions positives. Hi hauria d’haver connectivitat de la punta a la cua. Assegureu-vos que la connectivitat de prova dels coixinets i no del cable.
  2. Connexions a terra. Feu la mateixa prova però amb els coixinets de terra.
  3. Cada línia de dades. D’un bloc de dades al següent, verifiqueu que hi hagi connectivitat.

Pas 4: connectar el Circuit Playground Express

S’adjunta el Circuit Playground Express
S’adjunta el Circuit Playground Express

El Circuit Playground Express (CPX) és el cor del sistema. Adafruit disposa de nombrosos tutorials per a aquest controlador. Més endavant, en aquest instructiu, destacaré algunes de les funcions de la MCU.

Pas 1: soldeu el CPX a la punta inferior NeoPixel

Talla les longituds adequades del cable imant per a la potència, la terra i les dades. Feu-los passar pel teixit del nucli de la corbata de manera que toquin els coixinets d'alimentació, de terra i de dades NeoPixel. Soldeu-los cap avall assegurant-vos que els cables existents als coixinets continuen fent una bona connectivitat.

A continuació, gireu el nucli d'empat i col·loqueu el CPX a la posició desitjada. Introduïu el cable d'alimentació al coixinet VOUT, el cable de terra a qualsevol coixinet de terra i el cable de dades a qualsevol coixinet d'E / S que no sigui A0. El codi que he escrit utilitza A3.

Proveu la connectivitat.

Pas 2: lligueu el CPX

Amb un fil i una agulla, trieu quatre coixinets equidistants i cosiu-los al nucli de la corbata.

Pas 5: alimentació del CPX

Alimentació del CPX
Alimentació del CPX
Alimentació del CPX
Alimentació del CPX
Alimentació del CPX
Alimentació del CPX

El CPX no té un interruptor d’encès / apagat. Això vol dir que en el moment que la bateria estigui endollada, la corbata s’encendrà. Això també significa que l’única manera d’apagar-la és desconnectant la bateria, que és una molèstia important. Una solució senzilla és posar un interruptor d’apagat / apagat a la bateria.

Pas 1: talleu el tercer passador de l'interruptor

No cal un dels passadors no centrals. Talleu-lo al mateix nivell que el cos de l’interruptor.

Pas 2: soldeu l'interruptor en línia amb un cable de la bateria

Talleu el cable de terra de la bateria en algun lloc del centre. Feu lliscar un tros de tub retràctil per cada fil de terra. Soldeu un cable de terra a un dels pins i l’altre cable de terra a l’altre pin. Assegureu-vos que no es toquin o que la soldadura toqui el cos metàl·lic.

Verifiqueu que no estiguin connectats mitjançant un multímetre. Feu lliscar el tub sobre les connexions soldades i reduïu-lo. Afegiu una mica de cinta elèctrica a qualsevol part que pugui fallar a causa de la fatiga de flexió.

Pas 3: comproveu que la bateria funcioni

En aquest moment, la bateria es pot connectar al CPX. Si tot va bé, el commutador hauria de poder activar i apagar el CPX.

Pas 4: muntar la bateria

Poseu una mica de ganxo adhesiu i cinta adhesiva a la part posterior de la bateria i al nucli de la corbata. Això el mantindrà al seu lloc si l’empat no es manipula massa.

Pas 6: Configuració del Circuit Playground Express

No entraré en detalls sobre com configurar el CPX. Adafruit fa això i després alguns. Proporcionaré alguns consells sobre problemes que he trobat amb força freqüència.

CPX es congela

Probablement a causa de problemes de memòria en temps d'execució, el CPX es congelaria amb força freqüència. La solució ràpida és esborrar i tornar a parpellejar. Cerqueu "Old Way" en aquestes instruccions. Bàsicament, es tracta d'un parell de botons, un arrossegar i deixar anar per esborrar i, a continuació, arrossegar i deixar anar per tornar a parpellejar.

Advertiment: això esborra tot. Es perdrà tot el codi del CPX.

Desar canvis a CPX pot causar problemes

Vaig descobrir que de vegades després de desar un fitxer al CPX, el temps d'execució de Python es trobaria en un mal estat. La solució va ser reiniciar el temps d'execució de Python prement el botó de reinici. Premeu-lo només una vegada. En prémer-lo dues vegades, s'iniciarà el procés de re-flaix.

Estalviar directament a CPX és arriscat

A causa de la possibilitat que el CPX s'hagi de tornar a parpellejar, es corre el risc de perdre tot el seu codi. Després d’haver perdut el codi dues vegades, vaig arribar a un simple flux de treball. Desaria el meu codi al disc dur local. Quan estigués a punt per provar-se al CPX, simplement el copiaria executant un simple script de desplegament.

Pas 7: Codificació del Circuit Playground Express

En aquest moment, el CPX i el NeoPixels són pràcticament complets. No cal fer cap altre treball mecànic o elèctric amb ells. La resta és tot un programari.

El codi es pot trobar al meu compte de github. El codi central Python hauria de funcionar sense cap canvi per a tots els sistemes operatius. No instal·leu les biblioteques externes d'Adafruit CircuitPython. No s’utilitzen.

Aquí teniu un resum d’alt nivell del que passa al codi.

Què aporta què?

  • Botó A: recorre les animacions LED
  • Botó B: recorre les cançons
  • Teclat tàctil capacitiu A1: canvia els colors de les animacions LED
  • Teclat tàctil capacitiu A6: canvia la velocitat de les animacions LED

Existeixen 3 animacions, però només 2 estan en vigor

code.py

importació de pixelsoff

#import vumeter import escales import twinkle … led_animations = [pixelsoff. PixelsOff (píxels), # vumeter. VuMeter (píxels, 100, 400) escales. Escales (píxels), twinkle. Twinkle (píxels)]

He portat el codi d’estil del comptador Ampli-Tie VU. Utilitza el micròfon CPX per captar so i il·luminar els NeoPixels en funció de l’amplitud del so. Tot i això, volia més animacions. A causa de les limitacions de memòria d'execució, vaig haver de triar quines animacions volia. Així, per defecte, els altres dos, Stairs i Twinkle, s’executaran sense haver de fer canvis de codi. Per executar l'animació del mesurador de VU, cal comentar una o ambdues animacions i no comentar-la.

Gestor de música i codificació fora de línia

frosty_the_snowman.py

importeu notes musicals com a mn

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

convert_to_binary.py

cançons = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] per a la cançó de les cançons: data = song [0] file = song [1] with open (file, "wb") com bin_file: per a l'entrada de dades: print ("writing:" + str (entry)) nota = entrada [0] dur = entrada [1] bin_file.write (struct.pack ("<HH", nota, dur))

Volia música de vacances. El CPX admet WAV i tons. Els fitxers WAV van resultar ser massa grans en termes de mida de fitxer i memòria d’execució. Utilitzar estructures de dades Python per mantenir els tons i la seva durada també va resultar utilitzar massa memòria d’execució. Així que vaig modificar el codi Holi-Tie per llegir un fitxer binari comprimit que contenia només les dades de cançons necessàries en un format binari comprimit. He escrit un guió que llegeix una cançó en una estructura de dades Python i l’escriu al format binari. Tenir la cançó codificada com a dades binàries en un fitxer fa que la cançó sigui alhora petita i dinàmica. Un cop acabada la reproducció de la cançó, s’allibera la memòria.

És trivial afegir més cançons. Per obtenir més informació, consulteu README.md en cançons.

El botó A anima els NeoPixels, B reprodueix música, però no simultàniament

code.py

def button_a_pressed ():

if music.is_playing (): # Atura la música si reprodueix music.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Executa animació sense operació next_led_animation (0) if music.is_playing (): # Toggle música activada o desactivada music.stop () else: music.play ()

Fins i tot amb el sistema de gestió de música més eficient en memòria, no vaig poder contenir 2 animacions en memòria d'execució mentre tocava 1 d'elles i també tocava una cançó al mateix temps. Com que ja vaig optar per no tenir mesurador de VU a la memòria d’execució, no volia reduir el nombre d’animacions a només 1. Així que vaig escriure el codi perquè l’animació estigués reproduint o la música estigués reproduint, però no tots dos. Una altra opció era reduir el nombre de NeoPixels, però això perdria part de la frescor de l'animació.

Python Code Funkiness

Tot i que sóc un veterà desenvolupador de programari, mai havia escrit Python. Després de comprendre-ho i mirar-me d’aplicar bones pràctiques de codificació com l’encapsulació i la modularització, vaig descobrir ràpidament que feia servir massa memòria d’execució. Per tant, hi ha una mica de codi que no és SEC. També vaig haver d’utilitzar algunes tècniques de MicroPython com const () per reduir encara més els problemes de memòria del temps d’execució.

Mòduls compilats

compilar

#! / bin / bash

compilador = ~ / development / circuitpython / mpy-cross-3.x-windows.exe cançons cd python3./convert_to_binary.py cd.. per f en *.py; fer si

Al principi del projecte, vaig seguir els consells d’Adafruit i vaig emmagatzemar totes les biblioteques d’Adafruit CircuitPython en flash. Això, però, va deixar poc espai per al meu projecte. Per poder obtenir el meu codi al CPX, vaig començar a compilar els mòduls i a col·locar-los a la MCU. Resulta que el Holi-Tie no necessita cap de les biblioteques externes. Les biblioteques existents a la UF2 eren suficients per a aquest projecte. Executar fitxers *.mpy és una mica més eficaç, de manera que vaig continuar el procés de desplegament dels mòduls compilats.

Com és evident a l’escript de compilació anterior, estic treballant en una màquina Windows però utilitzo utilitats Unix com bash i python3. Utilitzo Cygwin per aconseguir-ho. Aquest script es pot traduir fàcilment a DOS batch i a una implementació nativa de Windows Python3.

Pas 8: botonar la corbata

Botonant la corbata
Botonant la corbata
Botonant la corbata
Botonant la corbata

L’últim pas és tornar a col·locar el nucli de la corbata, tornar a muntar la corbata i cosir-la de nou. Assegureu-vos de poder fer accessible el CPX. La necessitareu en canviar la bateria o fer canvis de codi.

Recomanat: