Inhoudsopgave:

De Holi-Tie: 8 stappen (met afbeeldingen)
De Holi-Tie: 8 stappen (met afbeeldingen)

Video: De Holi-Tie: 8 stappen (met afbeeldingen)

Video: De Holi-Tie: 8 stappen (met afbeeldingen)
Video: Stropdas Strikken Tutorial | Hoe strik je een stropdas? 2024, Mei
Anonim
Image
Image

Door gwfongMonkey PatchingVolg meer van de auteur:

Verlichtende hondenhelling
Verlichtende hondenhelling
Stalen hart en gesmolten glassculptuur
Stalen hart en gesmolten glassculptuur
Stalen hart en gesmolten glassculptuur
Stalen hart en gesmolten glassculptuur
Koperdraad en gesmolten glasvlinder
Koperdraad en gesmolten glasvlinder
Koperdraad en gesmolten glasvlinder
Koperdraad en gesmolten glasvlinder

Over: Gewoon een man die coole dingen wil maken Meer over gwfong »

Dit is de Holi-Tie, een feestelijke stropdas ontworpen om te dragen tijdens de feestdagen. Losjes gebaseerd op de Ampli-Tie van Becky Stern die een Flora-bord gebruikt, gebruikt de Holi-Tie een Circuit Python Express (CPX)-microcontroller om de NeoPixel-animaties en de muziek aan te sturen. Een knop wisselt tussen 2 verschillende NeoPixel-animaties. Capacitieve touchpads veranderen de NeoPixel-kleuren en de animatiesnelheden. De andere knop wisselt tussen LED-animaties en muziek. De ingebouwde microfoon wordt gebruikt om omgevingsgeluid te meten voor de animatie van de VU-meter. En de CPX-luidspreker voert vakantiechipmelodieën uit.

Alles is gecodeerd met behulp van de programmeertaal Python die bovenop het CircuitPython-systeem draait. Het wordt aangedreven door een 3.7V, 500mAH LiPo-batterij die is aangepast om een aan/uit-schakelaar te hebben.

Er zijn twee videoclips die de Holi-Tie laten zien:

  • Voltooide Holi-Tie
  • Binnen de Holi-Tie

Stap 1: Onderdelen en gereedschappen

Onderdelen

  • Circuit Speeltuin Express
  • 15x Flora Neopixels
  • Magneetdraad
  • Zelfklevende klittenband
  • 500 mAh lipo-batterij met JST-connector
  • Candy Cane stropdas
  • Mini-schuifschakelaar, SPDT
  • Krimpkous

Bij het inkopen van de onderdelen is het verstandig om extra's te kopen. Ik had in totaal 20 NeoPixels, waarvan er een vanaf het begin kapot was en een die ik verpestte. De Candy Cane-stropdas was zo goedkoop dat ik een tweede kocht voor het geval ik de eerste zou verpesten.

Gereedschap

  • Heet lijmpistool
  • Soldeerstation
  • Draadsnijders
  • Klein mes
  • Multimeter
  • Computer
  • Aansteker of heteluchtpistool
  • Draad en naald

Stap 2: De stropdas klaarmaken

De stropdas klaarmaken
De stropdas klaarmaken
De stropdas klaarmaken
De stropdas klaarmaken
De stropdas klaarmaken
De stropdas klaarmaken

Het belangrijkste doel is om toegang te krijgen tot de binnenste bindkern en om lijnen af te bakenen die aangeven waar de LED's moeten worden geplaatst.

Stap 1: Bind de stropdas op zijn plaats

Het zal moeilijk zijn om de stropdas te knopen wanneer de elektronica op zijn plaats zit. Bind de stropdas dus zo dat hij er goed uitziet en de knoop redelijk stevig is en niet uitrafelt. Trek dan voorzichtig aan het smalle uiteinde van de stropdas om het gat te openen om de stropdas over het hoofd te krijgen. Dit is de positie waaraan de das zal worden gewerkt.

Er zijn allerlei verschillende stropdasknopen. Ik ken alleen degene die ik als kind heb geleerd, de Windsor. Het zou niet uit moeten maken welke knoop wordt gebruikt.

Stap 2: Open de achterkant van de stropdas

Scheur de naden aan één kant van de lus en het logo open en vervolgens in het midden van de stropdas. Wees voorzichtig, want het moet aan het einde weer worden dichtgenaaid.

Stap 3: Teken lijnen waar de LED's moeten worden geplaatst

Om de LED's in de witte streepsecties van de kabelbinder te laten verschijnen, is het gemakkelijker om de middenlijn voor elke witte streepsectie op de achterkant van de kabelbinder te vinden en die vervolgens toe te wijzen aan de voorkant van de kabelbinder. Controleer en controleer nogmaals of de middellijn 1) in het midden en 2) evenwijdig aan de streep is. Fijnafstemming van de LED-posities is mogelijk als ze een beetje afwijken. Maar het is het beste om het nu zo dicht mogelijk bij exact te krijgen in plaats van later.

Test de centrering van de lijnen door LED's op de lijnen te plaatsen en de streepstof erop te leggen. Pas aan waar nodig.

Stap 3: De NeoPixels bevestigen

De NeoPixels bevestigen
De NeoPixels bevestigen
De NeoPixels bevestigen
De NeoPixels bevestigen
De NeoPixels bevestigen
De NeoPixels bevestigen
De NeoPixels bevestigen
De NeoPixels bevestigen

Kortom, we maken onze eigen LED-strip. We monteren de LED's eenvoudig op de verbindingskern en verbinden ze vervolgens met elkaar.

Stap 1: Bevestig de NeoPixels aan de verbindingskern

Plaats een beetje hete lijm op de achterkant van de NeoPixel en plaats deze op de middenlijnen. Voor de secties met 3 NeoPixels, lijnt u de middelste NeoPixel verticaal uit en lijmt u deze eerst vast. Dit maakt het gemakkelijker om de linker en rechter NeoPixel ten opzichte van het midden te positioneren, vooral omdat de breedte van de das van boven naar beneden toeneemt.

Zorg ervoor dat u alle NeoPixels in dezelfde richting richt, van linksonder naar rechtsboven. Als dit niet correct is, zal de strip niet werken.

Een opmerking over de hete lijm. Het is voldoende om het project af te ronden. Of het nog jaren meegaat, moet je maar afwachten.

Stap 3: Soldeer de NeoPixels aan elkaar

Omdat ik besloot de NeoPixels aan elkaar te solderen in plaats van geleidende draad te gebruiken, werkt het gat in de NeoPixel-pads een beetje tegen ons. Zoek gewoon een goede plek op de pad om de draad op te solderen. Probeer het gat niet te vullen met soldeer, maar als het gebeurt, komt het goed.

Magneetdraad heeft een dunne laag isolatie rond een koperen kern. Schraap met een mes de isolatie net aan de uiteinden waar ze worden gesoldeerd. Het is het beste om de hele omtrek van de draad te schrapen.

Stap 4: Test de connectiviteit

Gebruik een multimeter om de connectiviteit te testen van:

  1. Positieve verbindingen. Er moet verbinding zijn van punt tot staart. Zorg ervoor dat de testverbinding op de pads zit en niet op de draad.
  2. Aardverbindingen. Voer dezelfde test uit, maar met de aardingspads.
  3. Elke datalijn. Controleer van het ene datapad naar het andere of er verbinding is.

Stap 4: De Circuit Playground Express bevestigen

De Circuit Playground Express bevestigen
De Circuit Playground Express bevestigen

De Circuit Playground Express (CPX) is het hart van het systeem. Adafruit heeft talloze tutorials voor deze controller. Later in deze instructable zal ik enkele van de MCU-functies benadrukken.

Stap 1: Soldeer de CPX aan de onderste punt NeoPixel

Knip de juiste lengtes van de magneetdraad af voor de voeding, aarde en gegevens. Duw ze door de bindkernstof zodat ze de NeoPixel-voeding, aarde en datapads raken. Soldeer ze vast en zorg ervoor dat de bestaande draden op de pads nog steeds een goede verbinding maken.

Draai vervolgens de bindkern om en plaats de CPX in de gewenste positie. Voer de stroomdraad naar de VOUT-pad, de aardingsdraad naar een aardingspad en de datadraad naar een ander I/O-pad dan A0. De code die ik heb geschreven gebruikt A3.

Test de connectiviteit.

Stap 2: Bind de CPX vast

Gebruik een draad en naald, kies vier op gelijke afstanden liggende kussentjes en naai ze vast op de stropdaskern.

Stap 5: De CPX van stroom voorzien

De CPX van stroom voorzien
De CPX van stroom voorzien
De CPX van stroom voorzien
De CPX van stroom voorzien
De CPX van stroom voorzien
De CPX van stroom voorzien

De CPX heeft geen aan/uit schakelaar. Dit betekent dat op het moment dat de batterij wordt aangesloten, de das aangaat. Dit betekent ook dat de enige manier om het uit te schakelen is door de batterij los te koppelen, wat een groot gedoe is. Een simpele oplossing is om een aan/uit schakelaar op de accu te plaatsen.

Stap 1: Knip de 3e pin op de schakelaar af

Een van de niet-centrische pinnen is niet nodig. Snijd het gelijk met het lichaam van de schakelaar af.

Stap 2: Soldeer de schakelaar in-line een batterijkabel

Knip de aardedraad van de accu ergens in het midden door. Schuif een stuk krimpkous op elk van de aardingsdraden. Soldeer een aardingsdraad aan een van de pinnen en de andere aardingsdraad aan de andere pin. Zorg ervoor dat ze elkaar niet raken of dat het soldeer de metalen behuizing raakt.

Controleer of die niet zijn aangesloten met behulp van een multimeter. Schuif de slang over de soldeerverbindingen en krimp deze. Voeg een beetje elektrische tape toe aan elk onderdeel dat mogelijk defect raakt door buigvermoeidheid.

Stap 3: Controleer of de batterij werkt

Op dit punt kan de batterij worden aangesloten op de CPX. Als alles goed is gegaan, zou de schakelaar de CPX moeten kunnen in- en uitschakelen.

Stap 4: Monteer de batterij

Plak een beetje klittenband op de achterkant van de batterij en op de kabelbinder. Dit houdt het op zijn plaats als de stropdas niet te veel wordt gehanteerd.

Stap 6: De Circuit Playground Express instellen

Ik zal niet in detail treden over het instellen van de CPX. Adafruit doet dat en nog wat. Ik zal een paar tips geven voor problemen die ik vaak tegenkwam.

CPX loopt vast

Waarschijnlijk als gevolg van problemen met het runtime-geheugen, zou de CPX vrij vaak vastlopen. De snelle oplossing is om te wissen en opnieuw te flashen. Zoek naar "Old Way" in deze instructies. Kortom, het is een paar keer op de knop drukken, slepen en neerzetten om te wissen en vervolgens slepen en neerzetten om opnieuw te flitsen.

Waarschuwing: hiermee wordt alles gewist. Alle code op de CPX gaat verloren.

Wijzigingen opslaan in CPX kan problemen veroorzaken

Ik ontdekte dat soms na het opslaan van een bestand op de CPX de python-runtime in een slechte staat zou zijn. De oplossing was om de python-runtime opnieuw te starten door op de reset-knop te drukken. Druk er maar één keer op. Als u er twee keer op drukt, wordt het proces voor opnieuw flitsen gestart.

Rechtstreeks opslaan op CPX is riskant

Vanwege de mogelijkheid dat de CPX opnieuw moet worden geflashed, loopt men het risico al hun code te verliezen. Nadat ik twee keer mijn code was kwijtgeraakt, bedacht ik een eenvoudige workflow. Ik zou mijn code opslaan op de lokale harde schijf. Toen het klaar was om te worden getest op de CPX, zou ik het gewoon kopiëren door een eenvoudig implementatiescript uit te voeren.

Stap 7: De Circuit Playground Express coderen

Op dit moment zijn de CPX en NeoPixels vrijwel compleet. Er hoeven geen andere mechanische of elektrische werkzaamheden mee te worden gedaan. De rest is allemaal software.

De code is te vinden op mijn github-account. De kernpython-code zou zonder enige wijziging voor alle besturingssystemen moeten werken. Installeer de externe Adafruit CircuitPython-bibliotheken niet. Ze worden niet gebruikt.

Hier is een samenvatting op hoog niveau van wat er in de code gebeurt.

Welke invoer doet wat?

  • Knop A: Bladert door de LED-animaties
  • Knop B: Bladert door de nummers
  • Capacitieve Touch Pad A1: Verandert de kleuren voor de LED-animaties
  • Capacitieve Touch Pad A6: Verandert de snelheid van de LED-animaties

Er zijn 3 animaties, maar er zijn er maar 2 van kracht

code.py

pixelsoff importeren

#import vumeter import trappen import twinkle … led_animations = [pixelsoff. PixelsOff(pixels), # vumeter. VuMeter(pixels, 100, 400) trappen. Trappen (pixels), twinkle. Twinkle(pixels)]

Ik heb de Ampli-Tie VU-meterstijlcode geporteerd. Het gebruikt de CPX-microfoon om geluid op te vangen en de NeoPixels te verlichten op basis van geluidsamplitude. Ik wilde echter meer animaties. Vanwege runtime-geheugenbeperkingen moest ik kiezen welke animaties ik wilde. Dus standaard zullen de andere twee, Stairs en Twinkle, worden uitgevoerd zonder codewijzigingen aan te brengen. Om de VU-meteranimatie uit te voeren, moet een of beide andere animaties worden uitgecommentarieerd en VU-meter zonder commentaar.

Music Manager en offline codering

frosty_the_snowman.py

importeer muzieknoten als mn

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

convert_to_binary.py

liedjes = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] voor nummer in nummers: data=song[0] file=song[1] met open(file, "wb") as bin_file: voor invoer in data: print("writing: " + str(entry)) note=entry[0] dur=entry[1] bin_file.write(struct.pack("<HH", note, dur))

Ik wilde vakantiemuziek. De CPX ondersteunt zowel WAV als tonen. WAV-bestanden bleken te groot in termen van bestandsgrootte en runtime-geheugen. Het gebruik van python-datastructuren om tonen en hun duur vast te houden bleek ook te veel runtime-geheugen te gebruiken. Dus ik wijzigde de Holi-Tie-code om een gecomprimeerd binair bestand te lezen dat alleen de benodigde songdata in een gecomprimeerd binair formaat bevatte. Ik heb een script geschreven dat een nummer in een python-gegevensstructuur leest en het uitschrijft in het binaire formaat. Als de song als binaire data in een bestand is gecodeerd, wordt de song zowel klein als dynamisch. Zodra het nummer klaar is met spelen, wordt het geheugen vrijgegeven.

Het is triviaal om meer nummers toe te voegen. Voor details, zie README.md in songs.

Knop A animeert NeoPixels, B speelt muziek af, maar niet tegelijkertijd

code.py

def button_a_pressed():

if music.is_playing(): # Stop muziek bij afspelen van music.stop() next_led_animation() def button_b_pressed(): if active_led_animation != 0: # Voer no-op animatie uit next_led_animation(0) if music.is_playing(): # Toggle muziek aan of uit music.stop() else: music.play()

Zelfs met het meer geheugenefficiënte muziekbeheersysteem was ik niet in staat om 2 animaties in het runtime-geheugen vast te houden, terwijl ik er 1 speelde en ook een nummer allemaal tegelijkertijd afspeelde. Omdat ik er al voor had gekozen om helemaal geen VU-meter in het runtime-geheugen te hebben, wilde ik het aantal animaties niet terugbrengen tot slechts 1. Dus schreef ik de code zodat ofwel de animatie speelt of de muziek speelt, maar niet beide. Een andere optie was om het aantal NeoPixels te verminderen, maar dat zou een deel van de coolheid van de animatie verliezen.

Funkiness van Python-code

Hoewel ik een ervaren softwareontwikkelaar ben, had ik nog nooit Python geschreven. Nadat ik het onder de knie had en goede coderingspraktijken zoals inkapseling en modularisatie begon toe te passen, ontdekte ik al snel dat ik te veel runtime-geheugen gebruikte. Er is dus behoorlijk wat niet-DROGE code. Ik moest ook enkele MicroPython-technieken gebruiken, zoals const() om problemen met het runtime-geheugen verder te verminderen.

Gecompileerde modules

compileren

#!/bin/bash

compiler=~/development/circuitpython/mpy-cross-3.x-windows.exe cd-nummers python3./convert_to_binary.py cd.. voor f in *.py; doen als

In het begin van het project volgde ik het advies van Adafruit op en bewaarde ik alle Adafruit CircuitPython-bibliotheken op flash. Dit liet echter weinig ruimte over voor mijn project. Om mijn code op de CPX te krijgen, begon ik de modules te compileren en op de MCU te plaatsen. Het blijkt dat de Holi-Tie geen van de externe bibliotheken nodig heeft. De bestaande bibliotheken in de UF2 waren voldoende voor dit project. Het uitvoeren van *.mpy-bestanden is iets efficiënter, dus ik heb het proces van het implementeren van de gecompileerde modules behouden.

Zoals blijkt uit het bovenstaande compileerscript, werk ik op een Windows-machine maar gebruik ik Unix-hulpprogramma's zoals bash en python3. Ik gebruik Cygwin om dit te bereiken. Dit script kan eenvoudig worden vertaald naar DOS-batch en een Windows-native Python3-implementatie.

Stap 8: De das dichtknopen

De das dichtknopen
De das dichtknopen
De das dichtknopen
De das dichtknopen

De laatste stap is om de stropdaskern weer op zijn plaats te zetten, de stropdas weer in elkaar te zetten en weer vast te naaien. Zorg ervoor dat u de CPX toegankelijk kunt maken. U hebt deze nodig bij het vervangen van de batterij of bij het wijzigen van de code.

Aanbevolen: