Indholdsfortegnelse:
- Trin 1: Dele og værktøjer
- Trin 2: Læsning af slipset
- Trin 3: Montering af NeoPixels
- Trin 4: Montering af Circuit Playground Express
- Trin 5: Tænd for CPX
- Trin 6: Opsætning af Circuit Playground Express
- Trin 7: Kodning af Circuit Playground Express
- Trin 8: Knapning af slipset
Video: Holi-Tie: 8 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Af gwfongMonkey PatchingFølg mere af forfatteren:
Om: Bare en fyr, der ønsker at lave fede ting Mere om gwfong »
Dette er Holi-Tie, et festligt slips designet til at blive brugt i løbet af ferien. Løst baseret på Ampli-Tie af Becky Stern, der bruger et Flora-bord, bruger Holi-Tie en Circuit Python Express (CPX) mikrokontroller til at drive NeoPixel-animationerne og musikken. En knap skifter mellem 2 forskellige NeoPixel -animationer. Kapacitive berøringspuder ændrer NeoPixel -farverne og animationshastighederne. Den anden knap skifter mellem LED -animationer og musik. Den indbyggede mikrofon bruges til at måle omgivende støj til VU-måleranimationen. Og CPX -højttaleren udsender feriechipmelodier.
Alt er kodet ved hjælp af Python -programmeringssproget, der kører oven på CircuitPython -systemet. Den drives af et 3,7V, 500mAH LiPo -batteri, som blev ændret til at have en tænd/sluk -kontakt.
Der er to videoklip, der viser Holi-Tie:
- Gennemført Holi-Tie
- Inde i Holi-Tie
Trin 1: Dele og værktøjer
Dele
- Circuit Playground Express
- 15x Flora Neopixels
- Magnet wire
- Selvklæbende krog og sløjfe tape
- 500mAH lipo batteri med JST stik
- Candy Cane slips
- Mini skydekontakt, SPDT
- Krympeslange
Ved indkøb af delene ville det være klogt at købe ekstraudstyr. Jeg havde i alt 20 NeoPixels, hvoraf den ene var brudt fra begyndelsen, og en jeg ødelagde. Candy Cane slipset var så billigt, at jeg købte et andet, bare hvis jeg ødelagde det første.
Værktøjer
- Varm limpistol
- Lodde station
- Trådskærere
- Lille kniv
- Multimeter
- Computer
- Lighter eller varmepistol
- Tråd og nål
Trin 2: Læsning af slipset
Hovedmålet er at få adgang til den indre slipsekerne og afgrænse linjer, der angiver, hvor lysdioderne skal placeres.
Trin 1: Bind slipset på plads
Det bliver svært at binde slipset, når elektronikken er på plads. Så bind slipset, så det ser godt ud, og knuden er nogenlunde fast og vil ikke løsne sig. Træk derefter forsigtigt i den lille ende af slipset for at åbne hullet for at få slipset over hovedet. Dette er den stilling, slipset vil blive arbejdet på.
Der findes alle slags forskellige slipseknuder. Jeg kender kun den, jeg lærte som barn, Windsor. Det bør ikke være ligegyldigt hvilken knude der bruges.
Trin 2: Åbn slipsets bagside
Rip sømmene op på den ene side af slipsløkken og logoet og derefter ned i midten af slipset. Vær forsigtig, for den skal syes tilbage til sidst.
Trin 3: Tegn linjer, hvor lysdioderne skal placeres
For at få lysdioderne til at se i de hvide stribesektioner af slipset, er det lettere at finde midterlinjen for hver hvid stribesektion på bagsiden af slipskernen og derefter kortlægge det til forsiden af slipskernen. Kontroller og dobbelttjek, at midterlinjen er 1) i midten og 2) parallelt med striben. Finjustering af LED -positionerne vil være mulig, hvis de er lidt slukket. Men det er bedst at få det så tæt på præcis nu snarere end senere.
Test linjernes centrering ved at placere lysdioder på linjerne og lægge stribestoffet ovenpå. Juster, hvor det er nødvendigt.
Trin 3: Montering af NeoPixels
Grundlæggende laver vi vores egen LED -strip. Vi monterer simpelthen lysdioderne på slipsekernen og forbinder dem derefter med hinanden.
Trin 1: Klæb NeoPixels fast i bunden
Læg en klat varm lim på bagsiden af NeoPixel, og anbring den på midterlinjerne. For sektionerne med 3 NeoPixels, juster den midterste NeoPixel lodret og lim dem først ned. Dette vil gøre det lettere at placere venstre og højre NeoPixel i forhold til midten, især da slipsets bredde øges fra top til bund.
Sørg for at orientere alle NeoPixels i samme retning fra nederst til venstre til øverst til højre. Hvis dette ikke er korrekt, fungerer båndet ikke.
En note om den varme lim. Det vil være tilstrækkeligt at få projektet afsluttet. Hvad angår om det vil vare i de kommende år, skal man bare se.
Trin 3: Lodde NeoPixels til hinanden
Fordi jeg besluttede at lodde NeoPixels sammen i stedet for at bruge ledende tråd, virker hullet i NeoPixel -puderne lidt imod os. Find bare et godt sted på puden til at lodde tråden på. Prøv ikke at fylde hullet med loddetin, men hvis det sker, vil det være OK.
Magnetwire har et tyndt lag isolering omkring en kobberkerne. Skrab isoleringen af med en kniv lige i enderne, hvor de vil blive loddet. Det er bedst at skrabe hele trådens omkreds.
Trin 4: Test forbindelse
Brug et multimeter til at teste forbindelsen mellem:
- Positive forbindelser. Der skal være forbindelse fra spids til hale. Sørg for, at testforbindelsen på puderne og ikke ledningen.
- Jordforbindelser. Udfør den samme test, men med jordpuderne.
- Hver datalinje. Fra den ene datapude til den næste skal du kontrollere, at der er forbindelse.
Trin 4: Montering af Circuit Playground Express
Circuit Playground Express (CPX) er hjertet i systemet. Adafruit har mange tutorials til denne controller. Senere i denne instruktive vil jeg fremhæve et par af MCU -funktionerne.
Trin 1: Lod CPX'en til bundspidsen NeoPixel
Klip passende længder af magnetwiren til strøm, jord og data. Skub dem gennem slipsekernestoffet, så de rører NeoPixels strøm-, jord- og datapuder. Lod dem ned og sørg for, at de eksisterende ledninger på puderne stadig giver god forbindelse.
Vend derefter slipskernen, og anbring CPX'en i ønsket position. Tilfør strømledningen til VOUT -puden, jordledningen til en hvilken som helst jordpude og datakablet til en anden I/O -pad end A0. Koden, jeg har skrevet, bruger A3.
Test forbindelsen.
Trin 2: Bind CPX
Brug en tråd og en nål til at vælge de fire ækvivalente puder og sy dem ned på slipskernen.
Trin 5: Tænd for CPX
CPX har ikke en tænd/sluk -kontakt. Det betyder, at i det øjeblik batteriet er tilsluttet, tændes slipset. Dette betyder også, at den eneste måde at slukke det på er ved at tage batteriet ud, hvilket er et stort besvær. En enkel løsning er at sætte en sluk/sluk -knap på batteriet.
Trin 1: Skær den 3. pin af på kontakten
En af de ikke-midterste stifter er ikke nødvendig. Skær det af med kontakten.
Trin 2: Lodd kontakten in-line en batterikabel
Skær batteriets jordledning et sted i midten. Skub et stykke varmekrympeslange på hver af jordtrådene. Lod den ene jordledning til en af stifterne og den anden jordledning til den anden stift. Sørg for, at de ikke rører hinanden, eller at loddet rører ved metallegemet.
Kontroller, at der ikke er tilsluttet et multimeter. Skub slangen over de loddede forbindelser, og krym den. Tilføj en smule elektrisk tape til enhver del, der kan mislykkes på grund af bøjningstræthed.
Trin 3: Kontroller, at batteriet fungerer
På dette tidspunkt kan batteriet tilsluttes CPX. Hvis alt gik godt, skulle kontakten kunne tænde og slukke CPX.
Trin 4: Monter batteriet
Sæt en smule klæbebånd på bagsiden af batteriet og på slipskernen. Dette vil holde det på plads, hvis slipset ikke håndteres for meget.
Trin 6: Opsætning af Circuit Playground Express
Jeg vil ikke gå i detaljer om, hvordan du konfigurerer CPX. Adafruit gør det og så nogle. Jeg vil give et par tips til problemer, som jeg ofte stødte på.
CPX fryser
Sandsynligvis på grund af problemer med hukommelsestid i løbetid ville CPX fryse ganske ofte. Den hurtige løsning er at slette og blinke igen. Søg efter "Old Way" i denne vejledning. Grundlæggende er det et par knapper, et træk og slip for at slette, og derefter et træk og slip for at blinke igen.
Advarsel: Dette sletter alt. Al kode på CPX går tabt.
Gemme ændringer i CPX kan forårsage problemer
Jeg opdagede, at nogle gange efter at have gemt en fil på CPX, ville python -runtime være i en dårlig tilstand. Rettelsen blev genstart python -runtime ved at trykke på reset -knappen. Tryk kun på den én gang. Ved at trykke to gange på den starter genblitzprocessen.
At spare direkte på CPX er risikabelt
På grund af muligheden for at CPX'en skal flashes igen, risikerer man at miste al deres kode. Efter at have mistet min kode to gange, fandt jeg på en simpel arbejdsgang. Jeg ville gemme min kode på den lokale harddisk. Når det var klar til at blive testet på CPX, ville jeg simpelthen kopiere det ved at køre et simpelt implementeringsskript.
Trin 7: Kodning af Circuit Playground Express
På dette tidspunkt er CPX og NeoPixels stort set komplette. Der skal ikke udføres andet mekanisk eller elektrisk arbejde med dem. Resten er alt software.
Koden kan findes på min github -konto. Kernepythonkoden skal fungere uden ændringer for alle operativsystemer. Installer ikke de eksterne Adafruit CircuitPython -biblioteker. De bruges ikke.
Her er et resumé på højt niveau af, hvad der foregår i koden.
Hvilket input gør hvad?
- Knap A: Cykler gennem LED -animationerne
- Knap B: Cykler gennem sangene
- Kapacitiv touchpad A1: Ændrer farverne for LED -animationerne
- Kapacitiv Touchpad A6: Ændrer hastigheden på LED -animationerne
3 animationer eksisterer, men kun 2 er i kraft
kode.py
import pixelsoff
#import vum meter import trapper import glimt… led_animations = [pixelsoff. PixelsOff (pixels), # vumeter. VuMeter (pixels, 100, 400) trapper. Trapper (pixels), twinkle. Twinkle (pixels)]
Jeg portede Ampli-Tie VU måler stilkoden. Den bruger CPX -mikrofonen til at opfange lyd og tænde NeoPixels baseret på lydamplitude. Jeg ville dog have flere animationer. På grund af runtime -hukommelsesbegrænsninger måtte jeg vælge, hvilke animationer jeg ville have. Så som standard vil de to andre, Trapper og Twinkle, køre uden at skulle foretage kodeændringer. For at køre VU -måleranimationen skal den ene eller begge de andre animationer kommenteres, og VU -måleren skal kommenteres.
Musikmanager og offline kodning
frosty_the_snowman.py
importere musical_notes som mn
# Frosty the Snowman # Walter E. Rollins sang = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF), …
convert_to_binary.py
sange = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] for sang i sange: data = song [0] file = song [1] med åben (fil, "wb") som bin_file: til indtastning i data: print ("writing:" + str (entry)) note = entry [0] dur = entry [1] bin_file.write (struct.pack ("<HH", note, dur))
Jeg ville have feriemusik. CPX understøtter både WAV og toner. WAV -filer viste sig at være for store med hensyn til filstørrelse og runtime -hukommelse. Brug af python -datastrukturer til at holde toner og deres varighed viste sig også at bruge for meget runtime -hukommelse. Så jeg ændrede Holi-Tie-koden for at læse en komprimeret binær fil, der kun indeholdt de nødvendige sangdata i et komprimeret binært format. Jeg skrev et script, der læser en sang, der er i en python -datastruktur, og skriver den ud i det binære format. At have sangen kodet som binære data i en fil gør sangen både lille og dynamisk. Når sangen er spillet, frigives hukommelsen.
Det er trivielt at tilføje flere sange. For detaljer, se README.md i sange.
Knap A Animerer NeoPixels, B Spiller musik, men ikke samtidigt
kode.py
def button_a_pressed ():
hvis music.is_playing (): # Stop musik, hvis du spiller musik.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Kør no-op animation next_led_animation (0) hvis musik.is_playing (): # Toggle musik til eller fra music.stop () else: music.play ()
Selv med det mere hukommelseseffektive musikstyringssystem kunne jeg ikke gemme 2 animationer i runtime -hukommelse, mens jeg spillede 1 af dem og også afspilte en sang på samme tid. Fordi jeg allerede har valgt slet ikke at have VU -meter i runtime -hukommelse, ville jeg ikke reducere antallet af animationer til kun 1. Så jeg skrev koden, så enten animationen afspilles, eller musikken afspilles, men ikke begge. En anden mulighed var at reducere antallet af NeoPixels, men det ville miste noget af animationens coolness.
Python Code Funkiness
Selvom jeg er en erfaren softwareudvikler, havde jeg aldrig skrevet Python. Efter at jeg fik styr på det og stirrede på at anvende god kodningspraksis som indkapsling og modularisering, opdagede jeg hurtigt, at jeg brugte for meget runtime -hukommelse. Så der er en hel del ikke-DRY kode. Jeg var også nødt til at bruge nogle MicroPython -teknikker som const () for yderligere at reducere problemer med hukommelsestid.
Kompilerede moduler
udarbejde
#!/bin/bash
compiler = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd sange python3./convert_to_binary.py cd.. til f i *.py; gør hvis
Tidligt i projektet fulgte jeg Adafruit's råd og lagrede alle Adafruit CircuitPython -biblioteker på flash. Dette efterlod dog lidt plads til mit projekt. For at kunne få min kode på CPX begyndte jeg at samle modulerne og placere dem på MCU'en. Det viser sig, at Holi-Tie ikke har brug for nogen af de eksterne biblioteker. De eksisterende biblioteker i UF2 var tilstrækkelige til dette projekt. At køre *.mpy -filer er lidt mere effektivt, så jeg bevarede processen med at implementere de kompilerede moduler.
Som det fremgår af kompileringskriptet ovenfor, arbejder jeg på en Windows -maskine, men bruger Unix -værktøjer som bash og python3. Jeg bruger Cygwin til at opnå dette. Dette script kan let oversættes til DOS -batch og en Windows -native Python3 -implementering.
Trin 8: Knapning af slipset
Det sidste trin er at sætte slipskernen tilbage på plads, samle slipset igen og sy det op igen. Sørg for at kunne gøre CPX tilgængelig. Du får brug for det, når du udskifter batteriet eller foretager kodeændringer.
Anbefalede:
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: 7 trin (med billeder)
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: Jeg planlægger at bruge denne Rapsberry PI i en masse sjove projekter tilbage i min blog. Tjek det gerne ud. Jeg ville tilbage til at bruge min Raspberry PI, men jeg havde ikke et tastatur eller en mus på min nye placering. Det var et stykke tid siden jeg konfigurerede en hindbær
Arduino Halloween Edition - Pop -out -skærm med zombier (trin med billeder): 6 trin
Arduino Halloween Edition - Zombies Pop -out -skærm (trin med billeder): Vil du skræmme dine venner og lave skrigende støj i Halloween? Eller vil du bare lave en god sjov? Denne pop-out-skærm fra Zombies kan gøre det! I denne Instructable vil jeg lære dig, hvordan du nemt laver jump-out zombier ved hjælp af Arduino. HC-SR0
Sådan adskilles en computer med nemme trin og billeder: 13 trin (med billeder)
Sådan adskilles en computer med nemme trin og billeder: Dette er en instruktion om, hvordan du adskiller en pc. De fleste af de grundlæggende komponenter er modulopbyggede og nemme at fjerne. Det er dog vigtigt, at du er organiseret omkring det. Dette hjælper med at forhindre dig i at miste dele og også ved at lave genmonteringen til
Ciclop 3d Scanner My Way Trin for trin: 16 trin (med billeder)
Ciclop 3d Scanner My Way Step by Step: Hej alle sammen, jeg kommer til at indse den berømte Ciclop 3D -scanner.Alle trin, der er godt forklaret på det originale projekt, er ikke til stede.Jeg lavede nogle rettelser for at forenkle processen, først Jeg udskriver basen, og end jeg genstarter printkortet, men fortsæt
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: 7 trin (med billeder)
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: Selv efter 25 års introduktion til forbrugermarkedet er infrarød kommunikation stadig meget relevant i de seneste dage. Uanset om det er dit 55 tommer 4K -fjernsyn eller dit billydsystem, har alt brug for en IR -fjernbetjening for at reagere på vores