Tartalomjegyzék:

A Holi-Tie: 8 lépés (képekkel)
A Holi-Tie: 8 lépés (képekkel)

Videó: A Holi-Tie: 8 lépés (képekkel)

Videó: A Holi-Tie: 8 lépés (képekkel)
Videó: Basic Splicing of 8 Strands Mooring Line 💪💪💪 2024, Július
Anonim
Image
Image

Monkey Patching Kövesse a szerző további információit:

Világító kutya rámpa
Világító kutya rámpa
Acél szív és olvasztott üveg szobor
Acél szív és olvasztott üveg szobor
Acél szív és olvasztott üveg szobor
Acél szív és olvasztott üveg szobor
Rézhuzal és olvasztott üveg pillangó
Rézhuzal és olvasztott üveg pillangó
Rézhuzal és olvasztott üveg pillangó
Rézhuzal és olvasztott üveg pillangó

Névjegy: Csak egy srác, aki klassz dolgokat szeretne készíteni További információ a gwfongról »

Ez a Holi-Tie, egy ünnepi nyakkendő, amelyet az ünnepek alatt kell viselni. Becky Stern Ampli-Tie-jén, amely Flora táblát használ, lazán alapul, a Holi-Tie Circuit Python Express (CPX) mikrokontrollert használ a NeoPixel animációk és a zene vezérléséhez. Egy gomb két különböző NeoPixel animáció között vált. A kapacitív érintőpadok megváltoztatják a NeoPixel színeit és az animációs sebességet. A másik gomb LED animációk és zene között vált. A fedélzeti mikrofon a környezeti zaj mérésére szolgál a JE mérő animációhoz. És a CPX hangszóró ünnepi chip dallamokat ad ki.

Mindent a CircuitPython rendszer tetején futó Python programozási nyelv használatával kódolnak. Egy 3,7 V -os, 500 mAh LiPo akkumulátorral működik, amelyet be-/kikapcsolóval módosítottak.

Két videoklip mutatja a Holi-Tie-t:

  • Befejezett Holi-Tie
  • A Holi-Tie-n belül

1. lépés: Alkatrészek és eszközök

Alkatrészek

  • Circuit Playground Express
  • 15x Flora neopixel
  • Mágnes huzal
  • Ragasztó horog és hurok szalag
  • 500mAH lipo akkumulátor JST csatlakozóval
  • Candy Cane nyakkendő
  • Mini csúszó kapcsoló, SPDT
  • Hőre zsugorodó cső

Az alkatrészek beszerzésekor bölcs dolog lenne extrákat vásárolni. Összesen 20 NeoPixel volt nálam, az egyik az elejétől kezdve elromlott, a másik pedig tönkrement. A Candy Cane nyakkendő annyira olcsó volt, hogy vettem egy másodikat, hátha elrontom az elsőt.

Eszközök

  • Ragasztópisztoly
  • Forrasztóállomás
  • Drótvágók
  • Kis kés
  • Multiméter
  • Számítógép
  • Öngyújtó vagy hőpisztoly
  • Cérna és tű

2. lépés: A nyakkendő előkészítése

Nyakkendő készítése
Nyakkendő készítése
Nyakkendő készítése
Nyakkendő készítése
Nyakkendő készítése
Nyakkendő készítése

A fő cél az, hogy hozzáférjen a belső nyakkendő maghoz és határolja el a LED -eket.

Lépés: Kösse a nyakkendőt a helyére

Nehéz lesz megkötni a nyakkendőt, ha az elektronika a helyén van. Tehát kösse be a nyakkendőt, hogy jól nézzen ki, és a csomó meglehetősen szilárd legyen, és ne bontsa ki. Ezután óvatosan húzza a nyakkendő kis végét, hogy kinyissa a lyukat, hogy a nyakkendő a feje fölé kerüljön. Ezen a pozíción dolgoznak majd a nyakkendőn.

Mindenféle nyakkendő csomó létezik. Csak azt ismerem, akit gyerekkoromban tanultam, a Windsort. Nem számít, hogy melyik csomót használják.

2. lépés: Nyissa fel a nyakkendő hátulját

Tépje szét a varrásokat a nyakkendő hurok és a logó egyik oldalán, majd le a nyakkendő közepén. Legyen óvatos, mert a végén vissza kell varrni.

3. lépés: Rajzoljon vonalakat a LED -ek elhelyezéséhez

Ahhoz, hogy a LED -ek megjelenjenek a nyakkendő fehér csíkos szakaszain, könnyebb megtalálni a középső vonalat minden fehér csíkos szakaszhoz a nyakkendő magjának hátoldalán, majd leképezni a nyakkendő magjának elejére. Ellenőrizze és kétszer ellenőrizze, hogy a középvonal 1) középen és 2) párhuzamos -e a csíkkal. A LED pozíciók finomhangolása lehetséges, ha kissé ki vannak kapcsolva. De a legjobb, ha a lehető leghamarabb most kapjuk meg, mint később.

Tesztelje a vonalak központosítását úgy, hogy LED -eket helyez el a vonalakon, és a csíkos szövetet ráhelyezi. Állítsa be, ahol szükséges.

3. lépés: A NeoPixelek rögzítése

A NeoPixelek csatlakoztatása
A NeoPixelek csatlakoztatása
A NeoPixelek csatlakoztatása
A NeoPixelek csatlakoztatása
A NeoPixelek csatlakoztatása
A NeoPixelek csatlakoztatása
A NeoPixelek csatlakoztatása
A NeoPixelek csatlakoztatása

Alapvetően saját LED szalagot készítünk. Egyszerűen rögzítjük a LED -eket a kötőmagra, majd összekapcsoljuk őket.

1. lépés: Ragassza a NeoPixeleket a nyakkendő magjához

Helyezzen egy csipet forró ragasztót a NeoPixel hátoldalára, majd helyezze a középvonalakra. A 3 NeoPixellel rendelkező szakaszoknál függőlegesen igazítsa a középső NeoPixelt, és először ragasztja le őket. Ez megkönnyíti a bal és jobb NeoPixel pozicionálását a középponthoz képest, különösen, mivel a nyakkendő szélessége felülről lefelé növekszik.

Ügyeljen arra, hogy az összes NeoPixelt ugyanabba az irányba tegye, bal alsó saroktól jobbra haladva. Ha ez nem helyes, a szalag nem működik.

Megjegyzés a forró ragasztóval kapcsolatban. Elég lesz a projekt befejezéséhez. Arról, hogy ez évekig tart -e, csak látni kell.

3. lépés: Forrasztja egymáshoz a NeoPixeleket

Mivel úgy döntöttem, hogy a NeoPixeleket összeforrasztom, ahelyett, hogy vezetőképes szálat használnék, a NeoPixel párnákon lévő lyuk kicsit ellenünk hat. Csak találjon egy jó helyet a párnán a huzal forrasztásához. Ne próbálja meg betölteni a lyukat forrasztással, de ha ez megtörténik, akkor minden rendben lesz.

A mágneshuzal vékony szigetelésréteggel rendelkezik a rézmag körül. Egy késsel kaparja le a szigetelést azokról a végeiről, ahol forrasztani fogják. A legjobb, ha a huzal teljes kerületét lekaparjuk.

4. lépés: A kapcsolat tesztelése

Használjon multimétert a következők csatlakoztathatóságának tesztelésére:

  1. Pozitív kapcsolatok. Csatlakozásnak kell lennie a hegytől a farokig. Győződjön meg arról, hogy a tesztcsatlakozást a párnákon végzi, nem pedig a vezetéken.
  2. Földi csatlakozók. Végezze el ugyanazt a tesztet, de a földelő párnákkal.
  3. Minden adatsor. Az egyik adatpadról a másikra ellenőrizze, hogy van -e kapcsolat.

4. lépés: A Circuit Playground Express csatlakoztatása

A Circuit Playground Express csatlakoztatása
A Circuit Playground Express csatlakoztatása

A Circuit Playground Express (CPX) a rendszer szíve. Az Adafruit számos oktatóanyaggal rendelkezik ehhez a vezérlőhöz. Később ebben az oktatható fejezetben kiemelek néhányat az MCU szolgáltatásai közül.

1. lépés: Forrasztja a CPX -et a NeoPixel alsó végéhez

Vágja el a mágneshuzal megfelelő hosszúságát a tápellátáshoz, a földeléshez és az adatokhoz. Nyomja át őket a nyakkendő magszövetén, hogy hozzáérjenek a NeoPixel tápellátásához, a földhöz és az adatlapokhoz. Forrasztja le őket, és győződjön meg arról, hogy a párnák meglévő vezetékei továbbra is jól csatlakoztathatók.

Ezután fordítsa meg a nyakkendőmagot, és helyezze a CPX -et a kívánt helyzetbe. Vezesse a tápkábelt a VOUT aljzatba, a földelővezetéket bármely földelő aljzatba, és az adatvezetéket az A0 kivételével bármelyik I/O aljzatba. Az általam írt kód az A3 -at használja.

Tesztelje a csatlakozást.

2. lépés: Kösse le a CPX -et

Fonal és tű segítségével válassza ki a négy egyenlő távolságra lévő párnát, és varrja le őket a nyakkendő magjára.

5. lépés: A CPX bekapcsolása

A CPX tápellátása
A CPX tápellátása
A CPX tápellátása
A CPX tápellátása
A CPX tápellátása
A CPX tápellátása

A CPX nem rendelkezik ki/be kapcsolóval. Ez azt jelenti, hogy abban a pillanatban, amikor az akkumulátort bedugják, a nyakkendő bekapcsol. Ez azt is jelenti, hogy a kikapcsolás egyetlen módja az akkumulátor kihúzása, ami nagy gond. Egyszerű megoldás az akkumulátor ki- és bekapcsolása.

Lépés: Vágja le a kapcsoló harmadik csapját

Az egyik nem középen lévő csapra nincs szükség. Vágja le teljesen a kapcsoló testével.

2. lépés: Forrasztja a kapcsolót az akkumulátor vezetékébe

Vágja el az akkumulátor földelő vezetékét valahol a közepén. Csúsztasson egy darab zsugorcsövet minden földelő vezetékre. Az egyik földelővezetéket forrasztja az egyik csaphoz, a másikat pedig a másik csaphoz. Ügyeljen arra, hogy ne érjenek egymáshoz, vagy a forrasztóanyag érintse meg a fém testet.

Multiméterrel ellenőrizze, hogy nincsenek -e csatlakoztatva. Csúsztassa a csövet a forrasztott csatlakozókra, és zsugorítsa össze. Adjon hozzá egy kis elektromos szalagot minden olyan részhez, amely meghibásodhat a hajlítási fáradtság miatt.

3. lépés: Ellenőrizze az akkumulátor működését

Ekkor az akkumulátor csatlakoztatható a CPX -hez. Ha minden jól ment, a kapcsolónak képesnek kell lennie a CPX be- és kikapcsolására.

4. lépés: Szerelje fel az akkumulátort

Tegyen egy kis ragasztóhorgot és hurokszalagot az akkumulátor hátoldalára és a kötőmagra. Ez a helyén marad, ha a nyakkendőt nem kezelik túlságosan.

6. lépés: A Circuit Playground Express beállítása

Nem részletezem a CPX beállítását. Az Adafruit ezt teszi, majd néhányat. Adok néhány tippet azokra a problémákra, amelyekkel gyakran találkoztam.

A CPX lefagy

Valószínűleg a futási idő memória problémái miatt a CPX elég gyakran lefagy. A gyors megoldás az, hogy törölje és újra villanjon. Keresse meg a „Old Way” kifejezést ebben az utasításban. Alapvetően néhány gombnyomás, húzás és törlés, majd ismételt villanás.

Figyelmeztetés: Ez mindent töröl. A CPX összes kódja elveszik.

A CPX módosításainak mentése problémákat okozhat

Felfedeztem, hogy néha a fájl mentése után a CPX -be a python futási ideje rossz állapotban lesz. A javítás újraindította a python futási idejét a reset gomb megnyomásával. Csak egyszer nyomja meg. Ha kétszer megnyomja, elindul az újravillanás.

A közvetlen mentés CPX -re kockázatos

Annak a lehetősége miatt, hogy a CPX-et újra kell villogni, fennáll annak a kockázata, hogy elveszíti az összes kódját. Miután kétszer elvesztettem a kódomat, egy egyszerű munkafolyamatra bukkantam. A kódomat a helyi merevlemezre menteném. Amikor készen állt a CPX tesztelésére, egyszerűen lemásoltam egy egyszerű telepítési parancsfájl futtatásával.

7. lépés: A Circuit Playground Express kódolása

Ezen a ponton a CPX és a NeoPixels nagyjából kész. Más mechanikai vagy elektromos munkát nem kell velük végezni. A többi csak szoftver.

A kód megtalálható a github fiókomban. Az alapvető python kódnak minden operációs rendszerben változtatás nélkül kell működnie. Ne telepítse a külső Adafruit CircuitPython könyvtárakat. Nem használják.

Itt van egy magas szintű összefoglaló arról, hogy mi történik a kódban.

Milyen bemenet mit csinál?

  • A gomb: Váltás a LED -animációk között
  • B gomb: Váltás a dalok között
  • Kapacitív érintőpad A1: Módosítja a LED -animációk színeit
  • Kapacitív érintőpad A6: Módosítja a LED -animációk sebességét

3 animáció létezik, de csak 2 van érvényben

code.py

pixelsoff importálása

#import vumeter import lépcsők import csillogás … led_animations = [pixelsoff. PixelsOff (pixel), # vumeter. VuMeter (pixel, 100, 400) lépcsők. Lépcsők (pixel), twinkle. Twinkle (pixelek)]

Átvittem az Ampli-Tie VU mérő stíluskódját. A CPX mikrofont használja a hang felvételéhez és a NeoPixelek megvilágításához a hang amplitúdója alapján. Azonban több animációt szerettem volna. A futásidejű memória korlátai miatt ki kellett választanom, hogy mely animációkat szeretném. Tehát alapértelmezés szerint a másik kettő, a Lépcső és a Csillogás kódmódosítás nélkül fog futni. A JE -mérő animációjának futtatásához ki kell kommentálni az egyik animációt, vagy mindkettőt, és a VU -mérőt nem kell megjegyzést fűzni.

Zenekezelő és Off-Line kódolás

fagyos_hóember.py

music_notes importálása mn -ként

# Fagyos a hóember # Walter E. Rollins dal = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF),…

convert_to_binary.py

dalok = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] dalokhoz dalokban: data = song [0] file = song [1] with open (file, "wb") bin_file: adatbevitelhez: print ("írás:" + str (bejegyzés)) jegyzet = bejegyzés [0] dur = bejegyzés [1] bin_file.write (struktura.pack ("<HH", jegyzet, dur))

Ünnepi zenét akartam. A CPX támogatja a WAV -t és a hangokat is. A WAV fájlok túl nagynak bizonyultak fájlméret és futásidejű memória tekintetében. A python adatstruktúrák használatával a hangok és azok időtartama túl sok futásidejű memóriát használt. Így módosítottam a Holi-Tie kódot, hogy egy tömörített bináris fájlt olvasson, amely csak a szükséges dal adatokat tartalmazza tömörített bináris formátumban. Írtam egy forgatókönyvet, amely elolvassa a python adatszerkezetben tárolt dalt, és írja ki bináris formátumba. Ha a dal bináris adatként van kódolva egy fájlban, akkor a dal kicsi és dinamikus. A dal lejátszása után a memória felszabadul.

Apró dolog további dalokat hozzáadni. Részletekért lásd a README.md -t dalokban.

Az A gomb animálja a NeoPixeleket, a B zenét játszik le, de nem egyszerre

code.py

def button_a_pressed ():

if music.is_playing (): # Állítsa le a zenét, ha zenét játszik.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Futtasson no-op animációt next_led_animation (0) if music.is_playing (): # Toggle zene be- vagy kikapcsolás music.stop () else: music.play ()

Még a memóriatakarékosabb zenekezelő rendszerrel sem tudtam futásidejű memóriában 2 animációt tartani, miközben 1 -et lejátszottam, és egy dalt is lejátszottam egyszerre. Mivel már úgy döntöttem, hogy egyáltalán nem lesz VU -mérőmotor a futásidejű memóriában, nem akartam 1 -re csökkenteni az animációk számát. Tehát úgy írtam le a kódot, hogy vagy az animáció játszik, vagy a zene, de nem mindkét. Egy másik lehetőség a NeoPixelek számának csökkentése volt, de ez elvesztette az animáció hűvösségének egy részét.

Python Code Funkiness

Bár veterán szoftverfejlesztő vagyok, soha nem írtam Python -t. Miután ráéreztem, és bámultam a helyes kódolási gyakorlatokat, például a beágyazást és a modulációt, gyorsan rájöttem, hogy túl sok futásidejű memóriát használok. Tehát van egy jó kis nem DRY kód. Emellett néhány MicroPython technikát is kellett használnom, például a const () -t, hogy tovább csökkentsem a futási idő memóriával kapcsolatos problémákat.

Összeállított modulok

összeállítani

#!/bin/bash

fordító = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd dalok python3./convert_to_binary.py cd.. for f in *.py; tegye, ha

A projekt elején követtem az Adafruit tanácsait, és az Adafruit CircuitPython összes könyvtárát flash -en tároltam. Ez azonban kevés teret hagyott a projektem számára. Annak érdekében, hogy a kódomat felvihessem a CPX -re, elkezdtem összeállítani a modulokat és elhelyezni őket az MCU -n. Kiderült, hogy a Holi-Tie-nek nincs szüksége semmilyen külső könyvtárra. Az UF2 meglévő könyvtárai elegendőek voltak ehhez a projekthez. A *.mpy fájlok futtatása egy kicsit hatékonyabb, ezért megtartottam a lefordított modulok telepítésének folyamatát.

Amint a fenti fordítószkriptből kitűnik, Windows gépen dolgozom, de olyan Unix segédprogramokat használok, mint a bash és a python3. Ennek eléréséhez a Cygwint használom. Ez a szkript könnyen lefordítható DOS kötegre és Windows natív Python3 implementációra.

8. lépés: A nyakkendő gombolása

A nyakkendő gombolása
A nyakkendő gombolása
A nyakkendő gombolása
A nyakkendő gombolása

Az utolsó lépés a nyakkendő magjának visszahelyezése, a nyakkendő összeszerelése és visszavarrása. Ügyeljen arra, hogy hozzáférhetővé tegye a CPX -et. Szüksége lesz rá az elem cseréjekor vagy a kód módosításakor.

Ajánlott: