Obsah:
- Krok 1: Díly a nástroje
- Krok 2: Příprava kravaty
- Krok 3: Připojení NeoPixelů
- Krok 4: Připojení Circuit Playground Express
- Krok 5: Napájení CPX
- Krok 6: Nastavení Circuit Playground Express
- Krok 7: Kódování Circuit Playground Express
- Krok 8: Zapínání kravaty
Video: Holi-Tie: 8 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Od gwfongMonkey PatchingSledovat více od autora:
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
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ů
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:
- 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.
- Zemní spojení. Proveďte stejný test, ale s podložkami.
- 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
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
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
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:
Postup: Instalace Raspberry PI 4 bezhlavého (VNC) s Rpi imagerem a obrázky: 7 kroků (s obrázky)
Jak na to: Instalace Raspberry PI 4 Headless (VNC) s Rpi-imager a obrázky: Mám v plánu použít tento Rapsberry PI ve spoustě zábavných projektů zpět na mém blogu. Neváhejte se na to podívat. Chtěl jsem se vrátit k používání svého Raspberry PI, ale na novém místě jsem neměl klávesnici ani myš. Už je to dlouho, co jsem nastavoval Raspberry
Počitadlo kroků - mikro: bit: 12 kroků (s obrázky)
Počitadlo kroků - Micro: Bit: Tento projekt bude počítadlem kroků. K měření našich kroků použijeme snímač akcelerometru, který je zabudovaný v Micro: Bit. Pokaždé, když se Micro: Bit zatřese, přidáme 2 k počtu a zobrazíme ho na obrazovce
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): 6 kroků (s obrázky)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): Indukční nabíjení (známé také jako bezdrátové nabíjení nebo bezdrátové nabíjení) je druh bezdrátového přenosu energie. Využívá elektromagnetickou indukci k poskytování elektřiny přenosným zařízením. Nejběžnější aplikací je bezdrátové nabíjení Qi
Vykreslete 3D obrázky svých desek plošných spojů pomocí Eagle3D a POV-Ray: 5 kroků (s obrázky)
Vykreslování 3D obrázků vašich desek plošných spojů pomocí Eagle3D a POV-Ray: Pomocí Eagle3D a POV-Ray můžete vytvářet realistické 3D vykreslování vašich desek plošných spojů. Eagle3D je skript pro EAGLE Layout Editor. Tím se vygeneruje soubor pro sledování paprsku, který bude odeslán na POV-Ray, který nakonec vyskočí finální im
Vytvářejte stereofonní grafické obrázky v aplikaci Excel: 8 kroků (s obrázky)
Vytvářejte stereofonní grafické obrázky v aplikaci Excel: Stereo grafické obrázky mohou 3D hloubkám dodat hloubku