Cuprins:
- Pasul 1: Piese și instrumente
- Pasul 2: Pregătirea cravatei
- Pasul 3: Atașarea NeoPixels
- Pasul 4: Atașarea Circuit Playground Express
- Pasul 5: Alimentarea CPX
- Pasul 6: Configurarea Circuit Playground Express
- Pasul 7: Codificarea Circuit Playground Express
- Pasul 8: Butonarea cravatei
Video: Holi-Tie: 8 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
De gwfongMonkey Patching Urmăriți mai multe de la autor:
Despre: Doar un tip care caută să facă lucruri interesante Mai multe despre gwfong »
Acesta este Holi-Tie, o cravată festivă concepută pentru a fi purtată în timpul sărbătorilor. Bazat pe Ampli-Tie de Becky Stern, care folosește o placă Flora, Holi-Tie folosește un microcontroler Circuit Python Express (CPX) pentru a conduce animațiile NeoPixel și muzica. Un buton se schimbă între 2 animații NeoPixel diferite. Tampoanele tactile capacitive modifică culorile NeoPixel și viteza de animație. Celălalt buton se schimbă între animațiile LED și muzică. Microfonul de la bord este folosit pentru a măsura zgomotul ambiental pentru animația VU-meter. Iar difuzorul CPX redă melodii cu cipuri de vacanță.
Totul este codat folosind limbajul de programare Python care rulează deasupra sistemului CircuitPython. Este alimentat de o baterie LiPo de 3,7 V, 500 mAH, care a fost modificată pentru a avea un comutator pornit / oprit.
Există două videoclipuri care arată Holi-Tie:
- Finalizat Holi-Tie
- În interiorul Holi-Tie
Pasul 1: Piese și instrumente
Părți
- Circuit Playground Express
- 15x Flora Neopixels
- Fir magnetic
- Banda cu cârlig și buclă adezivă
- Baterie lipo de 500mAH cu conector JST
- Cravată Candy Cane
- Mini comutator glisant, SPDT
- Tuburi termocontractabile
La aprovizionarea pieselor, ar fi înțelept să cumpărați extras. Am avut în total 20 de NeoPixeli, dintre care unul a fost rupt de la început și unul pe care l-am stricat. Cravata Candy Cane a fost atât de ieftină, încât am cumpărat una a doua, în caz că am stricat-o pe prima.
Instrumente
- Pistol de lipit fierbinte
- Stație de lipit
- Freze de sârmă
- Cuțit mic
- Multimetru
- Calculator
- Brichetă sau pistol cu căldură
- Fir și ac
Pasul 2: Pregătirea cravatei
Scopul principal este de a obține acces la nucleul interior al legăturii și de a delimita liniile care indică locul în care ar trebui poziționate LED-urile.
Pasul 1: Legați cravata în poziție
Va fi dificil să legăm cravata atunci când aparatele electronice sunt la locul lor. Deci, legați cravata astfel încât să arate bine și nodul să fie destul de ferm și să nu se desfacă. Apoi trageți cu grijă capătul mic al cravatei pentru a deschide gaura pentru a obține cravata peste cap. Aceasta este poziția pe care se va lucra cravata.
Există tot felul de noduri de cravată diferite. Îl cunosc doar pe cel pe care l-am învățat în copilărie, Windsor. Nu ar trebui să conteze nodul utilizat.
Pasul 2: Deschideți partea din spate a cravatei
Deschideți cusăturile pe o parte a buclei de cravată și sigla și apoi în jos în centrul cravatei. Aveți grijă, deoarece la sfârșit trebuie cusut înapoi.
Pasul 3: Desenați linii în care ar trebui să fie plasate LED-urile
Pentru ca LED-urile să apară în secțiunile de bandă albă ale cravatei, este mai ușor să găsiți linia centrală pentru fiecare secțiune de bandă albă pe partea din spate a miezului cravatei și apoi să o mapați în fața miezului cravatei. Verificați și verificați dacă linia centrală este 1) în centru și 2) paralelă cu banda. Reglarea fină a pozițiilor LED-urilor va fi posibilă dacă acestea sunt puțin oprite. Dar cel mai bine este să îl obțineți cât mai aproape de exact acum decât mai târziu.
Testați centrarea liniilor prin plasarea LED-urilor pe linii și așezarea țesăturii cu dungi deasupra. Reglați acolo unde este necesar.
Pasul 3: Atașarea NeoPixels
Practic, ne facem propria bandă LED. Montăm pur și simplu LED-urile pe nucleul de legare și apoi le conectăm între ele.
Pasul 1: Aderați NeoPixels la miezul cravatei
Așezați un strat de adeziv fierbinte pe spatele NeoPixel, așezați-l pe liniile centrale. Pentru secțiunile cu 3 NeoPixeli, aliniați vertical NeoPixelul central și lipiți-le mai întâi. Acest lucru va face mai ușoară poziționarea NeoPixel stânga și dreapta în raport cu centrul, mai ales având în vedere că lățimea cravatei crește de sus în jos.
Asigurați-vă că orientați toți NeoPixels în aceeași direcție, mergând de la stânga jos la dreapta sus. Dacă acest lucru nu este corect, banda nu va funcționa.
O notă despre lipiciul fierbinte. Va fi suficient pentru a finaliza proiectul. În ceea ce privește dacă va dura ani buni, trebuie doar să vedem.
Pasul 3: lipiți NeoPixels unul cu celălalt
Deoarece am decis să lipim NeoPixels împreună în loc să folosim fir conductiv, gaura din tampoanele NeoPixel funcționează puțin împotriva noastră. Găsiți doar un loc bun pe tampon pentru a lipi firul. Nu încercați să umpleți gaura cu lipit, dar dacă se întâmplă, va fi OK.
Sârma magnetică are un strat subțire de izolație în jurul unui miez de cupru. Cu un cuțit, îndepărtați izolația chiar la capetele unde vor fi lipite. Cel mai bine este să răzuiești întreaga circumferință a firului.
Pasul 4: Testați conectivitatea
Folosiți un multimetru pentru a testa conectivitatea:
- Conexiuni pozitive. Ar trebui să existe conectivitate de la vârf la coadă. Asigurați-vă că conectivitatea de testare pe tampoane și nu firul.
- Conexiuni la sol. Efectuați același test, dar cu tampoanele de la sol.
- Fiecare linie de date. De la un bloc de date la altul, verificați dacă există conectivitate.
Pasul 4: Atașarea Circuit Playground Express
Circuit Playground Express (CPX) este inima sistemului. Adafruit are numeroase tutoriale pentru acest controler. Mai târziu, în acest instructable, voi evidenția câteva dintre caracteristicile MCU.
Pasul 1: lipiți CPX la vârful inferior NeoPixel
Tăiați lungimile corespunzătoare ale firului magnetic pentru putere, masă și date. Împingeți-le prin țesătura miezului cravatei astfel încât să atingă plăcile NeoPixel de alimentare, la sol și date. Lipiți-le în jos, asigurându-vă că firele existente pe plăci asigură încă o conectivitate bună.
Apoi răsuciți miezul cravatei și plasați CPX în poziția dorită. Alimentați firul de alimentare către pad-ul VOUT, firul de masă către orice pad de masă și firul de date către orice pad I / O, altul decât A0. Codul pe care l-am scris folosește A3.
Testați conectivitatea.
Pasul 2: legați CPX-ul
Folosind un fir și un ac, alegeți oricare patru plăcuțe echidistante și coaseți-le în jos pe miezul cravatei.
Pasul 5: Alimentarea CPX
CPX nu are un comutator de pornire / oprire. Aceasta înseamnă că în momentul în care bateria este conectată, cravata se va activa. Acest lucru înseamnă, de asemenea, că singura modalitate de oprire este deconectând bateria, care este o problemă majoră. O soluție simplă este să puneți întrerupătorul oprit / oprit pe baterie.
Pasul 1: Tăiați al treilea pin de pe comutator
Unul dintre pinii non-centrali nu este necesar. Tăiați-l la același nivel cu corpul comutatorului.
Pasul 2: lipiți comutatorul în linie cu un cablu de baterie
Tăiați firul de împământare al bateriei undeva la mijloc. Glisați o bucată de tub termocontractabil pe fiecare dintre firele de la sol. Lipiți un fir de împământare pe unul dintre pini și celălalt fir de împământare pe celălalt pin. Asigurați-vă că acestea nu se ating sau că lipirea atinge corpul metalic.
Verificați dacă acestea nu sunt conectate folosind un multimetru. Glisați tubulatura peste conexiunile lipite și micșorați-o. Adăugați un pic de bandă electrică la orice piesă care poate eșua din cauza oboselii la îndoire.
Pasul 3: Verificați funcționarea bateriei
În acest moment, bateria poate fi conectată la CPX. Dacă totul a mers bine, comutatorul ar trebui să poată porni și opri CPX-ul.
Pasul 4: Montați bateria
Puneți un pic de cârlig adeziv și bandă buclă pe partea din spate a bateriei și pe miezul de legare. Acest lucru îl va menține în loc dacă cravata nu este manipulată prea mult.
Pasul 6: Configurarea Circuit Playground Express
Nu voi intra în detalii despre modul de configurare a CPX. Adafruit face asta și apoi unele. Voi oferi câteva sfaturi pentru probleme pe care le-am întâlnit destul de des.
CPX Blochează
Probabil din cauza problemelor de memorie a timpului de rulare, CPX ar îngheța destul de des. Remedierea rapidă este ștergerea și reluarea intermitentului. Căutați „Old Way” în aceste instrucțiuni. Practic, este vorba de câteva apăsări de butoane, un glisare și fixare pentru ștergere, apoi un glisare și fixare pentru a clipi din nou.
Avertisment: Acest lucru șterge totul. Tot codul de pe CPX se va pierde.
Salvarea modificărilor la CPX poate cauza probleme
Am descoperit că, uneori, după salvarea unui fișier pe CPX, timpul de execuție python ar fi într-o stare proastă. Remedierea a fost repornirea timpului de execuție python apăsând butonul de resetare. Apăsați-l o singură dată. Apăsând-o de două ori va începe procesul de re-flash.
Salvarea directă pe CPX este riscantă
Din cauza posibilității ca CPX-ul să fie reluat, cineva riscă să-și piardă tot codul. După ce mi-am pierdut codul de două ori, am venit cu un flux de lucru simplu. Mi-aș salva codul pe hard diskul local. Când era gata să fie testat pe CPX, aș copia-l pur și simplu rulând un script de implementare simplu.
Pasul 7: Codificarea Circuit Playground Express
În acest moment, CPX și NeoPixels sunt destul de complete. Nici o altă lucrare mecanică sau electrică nu trebuie făcută cu ele. Restul este tot software.
Codul poate fi găsit în contul meu github. Codul python de bază ar trebui să funcționeze fără modificări pentru toate sistemele de operare. Nu instalați bibliotecile externe Adafruit CircuitPython. Nu sunt folosite.
Iată un rezumat la nivel înalt a ceea ce se întâmplă în cod.
Ce intrare înseamnă ce?
- Butonul A: Ciclează prin animațiile LED
- Butonul B: Ciclează melodiile
- Capacitive Touch Pad A1: Schimbă culorile pentru animațiile cu LED-uri
- Touchpad capacitiv A6: Schimbă viteza animațiilor cu LED-uri
Există 3 animații, dar numai 2 sunt în vigoare
code.py
import pixeloff
#import vumeter import scări import sclipire … led_animations = [pixelsoff. PixelsOff (pixeli), # vumeter. VuMeter (pixeli, 100, 400) scări. Scări (pixeli), sclipire. Twinkle (pixeli)]
Am portat codul de stil al contorului Ampli-Tie VU. Folosește microfonul CPX pentru a prelua sunetul și a lumina NeoPixels pe baza amplitudinii sunetului. Cu toate acestea, am vrut mai multe animații. Datorită constrângerilor de memorie în timpul rulării, a trebuit să aleg ce animații doresc. Deci, în mod implicit, celelalte două, Scări și Twinkle, vor rula fără a fi nevoie să faceți modificări de cod. Pentru a rula animația contorului VU, una sau ambele animații trebuie comentate și contorul VU necomentat.
Manager muzică și codificare offline
frosty_the_snowman.py
import note muzicale ca 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
melodii = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] pentru melodie în melodii: data = melodie [0] fișier = melodie [1] cu deschis (fișier, "wb") ca fișier bin_: pentru intrarea în date: print ("scris:" + str (intrare)) notă = intrare [0] dur = intrare [1] bin_file.write (struct.pack ("<HH", notă, dur))
Am vrut muzică de sărbători. CPX acceptă atât WAV cât și tonuri. Fișierele WAV s-au dovedit a fi prea mari în ceea ce privește dimensiunea fișierului și memoria de rulare. Utilizarea structurilor de date Python pentru a păstra tonurile și durata acestora s-a dovedit, de asemenea, să utilizeze prea multă memorie de rulare. Așa că am modificat codul Holi-Tie pentru a citi un fișier binar comprimat care conținea doar datele melodiei necesare într-un format binar comprimat. Am scris un script care citește o melodie păstrată într-o structură de date python și o scrie în format binar. Având melodia codificată ca date binare într-un fișier, face melodia atât mică, cât și dinamică. Odată ce piesa este terminată de redare, memoria este eliberată.
Este banal să adăugați mai multe melodii. Pentru detalii, consultați README.md în melodii.
Butonul A Animează NeoPixeli, B redă muzică, dar nu simultan
code.py
buton def_a_pressed ():
if music.is_playing (): # Opriți muzica dacă redați music.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Rulați animație fără opțiune next_led_animation (0) dacă music.is_playing (): # Comutați muzică activată sau dezactivată music.stop () else: music.play ()
Chiar și cu un sistem de gestionare a muzicii mai eficient din punct de vedere al memoriei, nu am reușit să rețin 2 animații în memoria de execuție, în timp ce jucam 1 dintre ele și, de asemenea, să redau o melodie în același timp. Deoarece am optat deja să nu am deloc VU meter în memoria de rulare deloc, nu am vrut să reduc numărul de animații la doar 1. Așa că am scris codul astfel încât fie animația să fie redată, fie muzica să fie redată, dar nu ambii. O altă opțiune a fost reducerea numărului de NeoPixels, dar acest lucru ar pierde o parte din răceala animației.
Python Code Funkiness
Deși sunt un dezvoltator veteran de software, nu am scris niciodată Python. După ce am prins-o și am privit aplicând bune practici de codificare, cum ar fi încapsularea și modularizarea, am descoperit rapid că foloseam prea multă memorie de rulare. Deci, există un pic de cod non-DRY. De asemenea, a trebuit să folosesc câteva tehnici MicroPython, cum ar fi const (), pentru a reduce în continuare problemele de memorie în timpul rulării.
Module compilate
compila
#! / bin / bash
compilator = ~ / development / circuitpython / mpy-cross-3.x-windows.exe cd cântece python3./convert_to_binary.py cd.. pentru f in *.py; faceți dacă
La începutul proiectului, am urmat sfaturile Adafruit și am stocat toate bibliotecile Adafruit CircuitPython pe flash. Acest lucru, însă, a lăsat puțin loc pentru proiectul meu. Pentru a putea obține codul meu pe CPX, am început să compilez modulele și să le plasez pe MCU. Se pare că Holi-Tie nu are nevoie de biblioteci externe. Bibliotecile existente în UF2 au fost suficiente pentru acest proiect. Rularea fișierelor *.mpy este puțin mai eficientă, așa că am păstrat procesul de implementare a modulelor compilate.
Așa cum este evident în scriptul de compilare de mai sus, lucrez la o mașină Windows, dar folosesc utilitare Unix precum bash și python3. Folosesc Cygwin pentru a realiza acest lucru. Acest script poate fi tradus cu ușurință în lot DOS și o implementare nativă Windows Python3.
Pasul 8: Butonarea cravatei
Ultimul pas este de a pune miezul cravatei la loc, reasambla cravata și coase-o înapoi. Asigurați-vă că puteți face CPX accesibil. Veți avea nevoie de ea atunci când înlocuiți bateria sau când faceți modificări de cod.
Recomandat:
Cum: Instalarea Raspberry PI 4 Headless (VNC) cu Rpi-imager și imagini: 7 pași (cu imagini)
Cum: Instalarea Raspberry PI 4 Headless (VNC) cu Rpi-imager și Pictures: Plănuiesc să folosesc acest Rapsberry PI într-o grămadă de proiecte distractive din blogul meu. Simțiți-vă liber să o verificați. Am vrut să mă întorc să folosesc Raspberry PI, dar nu aveam tastatură sau mouse în noua mea locație. A trecut ceva timp de când am configurat un Raspberry
Cameră cu infrarosu cu imagini termice DIY: 3 pași (cu imagini)
Cameră cu infrarosu cu imagini termice DIY: Bună ziua! Caut mereu proiecte noi pentru lecțiile mele de fizică. Acum doi ani am dat peste un raport despre senzorul termic MLX90614 de la Melexis. Cel mai bun cu doar 5 ° FOV (câmp vizual) ar fi potrivit pentru o cameră termică făcută de sine. Pentru a citi
Lansați prezentarea de imagini de vacanță cu o atingere de magie!: 9 pași (cu imagini)
Lansează-ți prezentarea cu imagini de vacanță cu un strop de magie! pentru a se potrivi cu steagul și tema țării pe care o vizitez (în acest caz, Sicilia). T
Cum să dezasamblați un computer cu pași și imagini ușoare: 13 pași (cu imagini)
Cum să dezasamblați un computer cu pași și imagini ușoare: Aceasta este o instrucțiune despre cum să dezasamblați un computer. Majoritatea componentelor de bază sunt modulare și ușor de îndepărtat. Cu toate acestea, este important să fiți organizat în acest sens. Acest lucru vă va ajuta să nu vă pierdeți piese și, de asemenea, să faceți reasamblarea
Vizualizator digital de imagini 3D - „The DigiStereopticon”: 6 pași (cu imagini)
Vizualizator digital de imagini 3D - „The DigiStereopticon”: fotografia stereoscopică a căzut în lipsă. Acest lucru se datorează probabil faptului că oamenilor nu le place să poarte ochelari speciali pentru a vedea instantanee de familie. Iată un mic proiect distractiv pe care îl poți face în mai puțin de o zi pentru a-ți face imaginea 3D