Obsah:

Holi-Tie: 8 kroků (s obrázky)
Holi-Tie: 8 kroků (s obrázky)

Video: Holi-Tie: 8 kroků (s obrázky)

Video: Holi-Tie: 8 kroků (s obrázky)
Video: Malé lásky - holčička čeká na sestřičku 2024, Červenec
Anonim
Image
Image

Od gwfongMonkey PatchingSledovat více od autora:

Svítící psí rampa
Svítící psí rampa
Socha z ocelového srdce a taveného skla
Socha z ocelového srdce a taveného skla
Socha z ocelového srdce a taveného skla
Socha z ocelového srdce a taveného skla
Motýl z měděného drátu a taveného skla
Motýl z měděného drátu a taveného skla
Motýl z měděného drátu a taveného skla
Motýl z měděného drátu a taveného skla

O: Jen člověk, který chce dělat skvělé věci Více o gwfong »

Toto je Holi-Tie, sváteční kravata určená k nošení o prázdninách. Volně založený na Ampli-Tie od Becky Stern, který používá desku Flora, Holi-Tie používá k ovládání animací a hudby NeoPixel mikrokontrolér Circuit Python Express (CPX). Tlačítko přepíná mezi 2 různými animacemi NeoPixel. Kapacitní dotykové podložky mění barvy NeoPixel a rychlost animace. Druhé tlačítko přepíná mezi LED animacemi a hudbou. Integrovaný mikrofon se používá k měření okolního hluku pro animaci měřiče VU. A reproduktor CPX produkuje prázdninové čipové melodie.

Vše je kódováno pomocí programovacího jazyka Python běžícího na vrcholu systému CircuitPython. Je napájen baterií LiPo 3,7 V, 500 mAh, která byla upravena tak, aby měla vypínač.

Existují dva videoklipy, které ukazují Holi-Tie:

  • Dokončeno Holi-Tie
  • Uvnitř Holi-Tie

Krok 1: Díly a nástroje

Díly

  • Okruhové hřiště Express
  • 15x Flora Neopixel
  • Magnetický drát
  • Lepicí páska na suchý zip
  • 500mAH lipo baterie s konektorem JST
  • Kravata Candy Cane
  • Mini posuvný spínač, SPDT
  • Smršťovací bužírky

Při získávání dílů by bylo rozumné kupovat doplňky. Měl jsem celkem 20 NeoPixelů, z nichž jeden byl od začátku rozbitý a jeden jsem zničil. Kravata Candy Cane byla tak levná, že jsem si koupil druhou pro případ, že bych tu první zničil.

Nástroje

  • Horká lepicí pistole
  • Pájecí stanice
  • Nůžky na drát
  • Malý nůž
  • Multimetr
  • Počítač
  • Zapalovač nebo horkovzdušná pistole
  • Nit a jehla

Krok 2: Příprava kravaty

Příprava kravaty
Příprava kravaty
Příprava kravaty
Příprava kravaty
Příprava kravaty
Příprava kravaty

Hlavním cílem je získat přístup k vnitřnímu spojovacímu jádru a ohraničujícím liniím udávajícím, kde by měly být LED diody umístěny.

Krok 1: Vázejte kravatu na místo

Je -li elektronika na svém místě, bude obtížné zavázat kravatu. Vázejte tedy kravatu tak, aby vypadala dobře a uzel byl poměrně pevný a nerozmotával se. Poté opatrně zatáhněte za malý konec kravaty, abyste otevřeli otvor a dostali kravatu přes hlavu. Toto je pozice, na které se bude pracovat.

Existují všechny druhy různých vázacích uzlů. Znám jen ten, který jsem se naučil jako dítě, Windsor. Nezáleží na tom, který uzel je použit.

Krok 2: Otevřete zadní část kravaty

Rozepněte švy na jedné straně poutka na kravatu a loga a poté dolů uprostřed kravaty. Buďte opatrní, protože musí být na konci sešit.

Krok 3: Nakreslete čáry, kde by měly být umístěny LED diody

Chcete -li, aby se diody LED objevily v částech bílého pruhu na kravatě, je snazší najít středovou čáru pro každou sekci bílých pruhů na zadní straně jádra spojovacího pásku a poté jej namapovat na přední část vázacího jádra. Zkontrolujte a znovu zkontrolujte, zda je středová čára 1) ve středu a 2) rovnoběžná s pruhem. Jemné doladění pozic LED bude možné, pokud jsou trochu mimo. Ale je lepší to dostat co nejblíže k přesnosti nyní, než později.

Otestujte střed linek tak, že na ně umístíte LED diody a na ně položíte proužkovou tkaninu. Upravte, kde je potřeba.

Krok 3: Připojení NeoPixelů

Připojení NeoPixelů
Připojení NeoPixelů
Připojení NeoPixelů
Připojení NeoPixelů
Připojení NeoPixelů
Připojení NeoPixelů
Připojení NeoPixelů
Připojení NeoPixelů

V zásadě vyrábíme vlastní LED pásek. Jednoduše namontujeme LED diody na vázací jádro a poté je navzájem spojíme.

Krok 1: Přilepte NeoPixely k vázacímu jádru

Na zadní stranu NeoPixelu položte kapku horkého lepidla a umístěte ji na středové čáry. U řezů se 3 NeoPixely svisle zarovnejte středový NeoPixel a nejprve je slepte. To usnadní umístění levého a pravého NeoPixelu ve vztahu ke středu, zejména vzhledem k tomu, že šířka kravaty se zvětšuje shora dolů.

Ujistěte se, že všechny NeoPixely orientujete stejným směrem, od levého dolního rohu k pravému hornímu. Pokud to není správné, proužek nebude fungovat.

Poznámka k horkému lepidlu. Na dokončení projektu bude stačit. Pokud jde o to, zda to bude trvat roky, to musí člověk vidět.

Krok 3: Pájejte NeoPixely k sobě

Protože jsem se místo použití vodivého vlákna rozhodl pájet NeoPixely dohromady, otvor v podložkách NeoPixel působí proti nám trochu. Stačí si na podložce najít dobré místo, na které pájet drát. Nepokoušejte se zaplnit otvor pájkou, ale pokud k tomu dojde, bude to v pořádku.

Magnetický drát má tenkou vrstvu izolace kolem měděného jádra. Nůžem seškrábněte izolaci těsně na koncích, kde budou pájeny. Nejlepší je oškrábat celý obvod drátu.

Krok 4: Otestujte připojení

Pomocí multimetru otestujte konektivitu:

  1. Pozitivní spojení. Konektivita by měla být od špičky k patě. Ujistěte se, že testovací konektivita je na podložkách a ne na vodiči.
  2. Zemní spojení. Proveďte stejný test, ale s podložkami.
  3. Každý datový řádek. Z jednoho datového bloku do druhého ověřte, zda existuje připojení.

Krok 4: Připojení Circuit Playground Express

Připojení Express Circuit Playground
Připojení Express Circuit Playground

Circuit Playground Express (CPX) je srdcem systému. Adafruit má pro tento ovladač mnoho návodů. Později v tomto pokynu zdůrazním několik funkcí MCU.

Krok 1: Připájejte CPX ke spodní špičce NeoPixel

Odřízněte příslušné délky magnetického drátu pro napájení, uzemnění a data. Protlačte je skrz tkaninu spojovacího jádra tak, aby se dotkly napájecích, uzemňovacích a datových podložek NeoPixel. Pájejte je dolů a ujistěte se, že stávající vodiče na podložkách stále vytvářejí dobrou konektivitu.

Dále otočte spojovací jádro a umístěte CPX do požadované polohy. Napájecí vodič připojte k podložce VOUT, zemnící vodič k jakékoli zemnicí podložce a datový vodič k jakékoli jiné I/O podložce než A0. Kód, který jsem napsal, používá A3.

Otestujte konektivitu.

Krok 2: Spojte CPX

Pomocí nitě a jehly vyberte libovolné čtyři ekvidistantní podložky a přišijte je na vázací jádro.

Krok 5: Napájení CPX

Napájení CPX
Napájení CPX
Napájení CPX
Napájení CPX
Napájení CPX
Napájení CPX

CPX nemá vypínač. To znamená, že v okamžiku, kdy je baterie zapojena, se zapíná pásek. To také znamená, že jediným způsobem, jak jej vypnout, je odpojení baterie, což je velký problém. Jednoduchým řešením je dát vypínač na baterii.

Krok 1: Odřízněte 3. kolík na přepínači

Jeden z necentrických kolíků není potřeba. Odřízněte jej v jedné rovině s tělem spínače.

Krok 2: Přepájejte spínač v kabelu baterie

Odřízněte uzemňovací vodič baterie někde uprostřed. Na každý zemnící vodič nasuňte kousek smršťovací bužírky. Připojte jeden zemnící vodič k jednomu z kolíků a druhý zemnící vodič k druhému kolíku. Ujistěte se, že se navzájem nedotýkají nebo se pájka nedotýká kovového těla.

Ověřte, že nejsou připojeny pomocí multimetru. Zasuňte hadičku přes pájené spoje a zmenšete ji. Přidejte kousek elektrické pásky do jakékoli části, která může selhat v důsledku únavy z ohybu.

Krok 3: Ověřte, zda baterie funguje

V tomto okamžiku lze baterii zapojit do CPX. Pokud vše proběhlo dobře, přepínač by měl být schopen zapnout a vypnout CPX.

Krok 4: Namontujte baterii

Na zadní stranu baterie a na spojovací jádro vložte kousek lepicí pásky se suchým zipem. To udrží na místě, pokud s kravatou nebudete příliš manipulovat.

Krok 6: Nastavení Circuit Playground Express

Nebudu se podrobně zabývat nastavením CPX. To dělá Adafruit a pak někteří. Poskytnu několik tipů na problémy, se kterými se setkávám poměrně často.

CPX zamrzne

Pravděpodobně kvůli problémům s pamětí běhu by CPX docela často zamrzal. Rychlou opravou je vymazat a znovu blikat. V těchto pokynech hledejte „Old Way“. V zásadě se jedná o několik stisknutí tlačítka, přetažení a vymazání a poté přetažením znovu bliká.

Varování: Toto vymaže vše. Veškerý kód na CPX bude ztracen.

Uložení změn do CPX může způsobit problémy

Zjistil jsem, že někdy po uložení souboru do CPX bude runtime pythonu ve špatném stavu. Oprava byla restartování runtime pythonu stisknutím tlačítka reset. Stiskněte jej pouze jednou. Dvojitým stisknutím spustíte postup opakovaného blikání.

Přímé ukládání na CPX je riskantní

Kvůli možnosti, že CPX musí být znovu přehráno, hrozí riziko ztráty celého kódu. Poté, co jsem dvakrát ztratil kód, přišel jsem na jednoduchý pracovní postup. Uložil bych svůj kód na místní pevný disk. Když byl připraven k testování na CPX, jednoduše bych ho zkopíroval spuštěním jednoduchého skriptu pro nasazení.

Krok 7: Kódování Circuit Playground Express

V tomto okamžiku jsou CPX a NeoPixels do značné míry kompletní. Není třeba s nimi provádět žádné další mechanické nebo elektrické práce. Zbytek je veškerý software.

Kód lze nalézt na mém účtu github. Základní kód pythonu by měl fungovat bez jakýchkoli změn pro všechny operační systémy. Neinstalujte externí knihovny Adafruit CircuitPython. Nejsou používány.

Zde je shrnutí na vysoké úrovni o tom, co se děje v kódu.

Jaký vstup má co?

  • Tlačítko A: Prochází LED animacemi
  • Tlačítko B: Prochází skladbami
  • Kapacitní dotykový panel A1: Změní barvy pro LED animace
  • Kapacitní dotykový panel A6: Změní rychlost LED animací

Existují 3 animace, ale pouze 2 jsou účinné

code.py

importovat pixelsoff

#import vumeter import schody import twinkle… led_animations = [pixelsoff. PixelsOff (pixely), # vumeter. VuMeter (pixely, 100, 400) schody. Schody (pixely), twinkle. Twinkle (pixely)]

Přenesl jsem kód stylu měřiče Ampli-Tie VU. Používá mikrofon CPX k zachycení zvuku a osvětlení NeoPixelů na základě amplitudy zvuku. Chtěl jsem však více animací. Kvůli omezení paměti za běhu jsem si musel vybrat, které animace chci. Ve výchozím nastavení tedy poběží další dvě, Schody a Twinkle, aniž byste museli provádět změny kódu. Chcete -li spustit animaci měřiče VU, je třeba jednu nebo obě ostatní animace okomentovat a měřič VU odkomentovat.

Správce hudby a offline kódování

frosty_the_snowman.py

import music_notes as 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

písničky = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] pro píseň v písních: data = píseň [0] soubor = píseň [1] s otevřeným (soubor, "wb") jako bin_soubor: pro zadání do dat: print ("psaní:" + str (záznam)) poznámka = záznam [0] dur = záznam [1] bin_file.write (struct.pack ("<HH", poznámka, dur))

Chtěl jsem prázdninovou hudbu. CPX podporuje jak WAV, tak tóny. Soubory WAV se ukázaly být příliš velké, pokud jde o velikost souboru a runtime paměť. Ukázalo se, že použití datových struktur pythonu k uchování tónů a jejich trvání používá příliš mnoho runtime paměti. Upravil jsem tedy kód Holi-Tie tak, aby četl komprimovaný binární soubor, který obsahoval pouze potřebná data skladeb v komprimovaném binárním formátu. Napsal jsem skript, který čte skladbu uloženou v datové struktuře pythonu a zapisuje ji do binárního formátu. Když je skladba zakódována jako binární data v souboru, je skladba malá i dynamická. Jakmile je skladba dokončena, paměť se uvolní.

Je triviální přidávat další skladby. Podrobnosti najdete v souboru README.md ve skladbách.

Tlačítko A animuje NeoPixely, B přehrává hudbu, ale ne současně

code.py

def button_a_pressed ():

if music.is_playing (): # Stop music if playing music.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Run no-op animation next_led_animation (0) if music.is_playing (): # Toggle hudba zapnutá nebo vypnutá music.stop () else: music.play ()

I při paměťově efektivnějším systému správy hudby jsem nebyl schopen držet v runtime paměti 2 animace, přičemž jsem přehrával 1 z nich a také přehrávat všechny skladby současně. Protože jsem se již rozhodl, že nebudu mít VU metr v běhové paměti vůbec, nechtěl jsem omezit počet animací na pouhé 1. Napsal jsem tedy kód tak, že buď hraje animace, nebo hraje hudba, ale ne oba. Další možností bylo snížit počet NeoPixelů, ale to by ztratilo část chladu animace.

Funkčnost kódu Python

Přestože jsem zkušený vývojář softwaru, nikdy jsem nenapsal Python. Poté, co jsem to pochopil a zíral na používání dobrých kódovacích postupů, jako je zapouzdření a modularizace, jsem rychle zjistil, že používám příliš mnoho runtime paměti. Existuje tedy značná část kódu, který není DRY. Také jsem musel použít některé techniky MicroPython, jako je const (), aby se dále snížily problémy s pamětí za běhu.

Sestavené moduly

kompilovat

#!/bin/bash

kompilátor = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd písně python3./convert_to_binary.py cd.. pro f v *.py; udělat, pokud

Na začátku projektu jsem se řídil radami Adafruitu a bleskově jsem uložil všechny knihovny Adafruit CircuitPython. To však ponechalo malý prostor pro můj projekt. Abych mohl dostat svůj kód do CPX, začal jsem kompilovat moduly a umísťovat je na MCU. Ukazuje se, že Holi-Tie nepotřebuje žádnou z externích knihoven. Stávající knihovny v UF2 byly pro tento projekt dostačující. Spouštění souborů *.mpy je o něco efektivnější, takže jsem ponechal proces nasazení kompilovaných modulů.

Jak je zřejmé z výše uvedeného kompilačního skriptu, pracuji na počítači se systémem Windows, ale používám unixové nástroje, jako je bash a python3. K dosažení tohoto cíle používám Cygwin. Tento skript lze snadno přeložit do dávky DOS a implementace Pythonu3 nativní pro Windows.

Krok 8: Zapínání kravaty

Zapínání kravaty
Zapínání kravaty
Zapínání kravaty
Zapínání kravaty

Posledním krokem je vrátit vázací jádro zpět na místo, znovu sestavit kravatu a přišít zpět. Ujistěte se, že budete moci CPX zpřístupnit. Budete jej potřebovat při výměně baterie nebo při změnách kódu.

Doporučuje: