Tartalomjegyzék:
- 1. lépés: Alkatrészek és eszközök
- 2. lépés: A nyakkendő előkészítése
- 3. lépés: A NeoPixelek rögzítése
- 4. lépés: A Circuit Playground Express csatlakoztatása
- 5. lépés: A CPX bekapcsolása
- 6. lépés: A Circuit Playground Express beállítása
- 7. lépés: A Circuit Playground Express kódolása
- 8. lépés: A nyakkendő gombolása
Videó: A Holi-Tie: 8 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Monkey Patching Kövesse a szerző további információit:
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
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
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:
- 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.
- Földi csatlakozók. Végezze el ugyanazt a tesztet, de a földelő párnákkal.
- 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 (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 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
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:
DIY 37 LED Arduino rulett játék: 3 lépés (képekkel)
DIY 37 Leds Arduino Roulette Játék: A rulett egy kaszinójáték, amelyet a francia szóról neveztek el, jelentése kis kerék
Covid védősisak 1. rész: Bevezetés a Tinkercad áramkörökbe!: 20 lépés (képekkel)
Covid védősisak 1. rész: Bevezetés a Tinkercad áramkörökbe!: Helló, barátom! Ebben a kétrészes sorozatban megtanuljuk használni a Tinkercad áramköreit - ez egy szórakoztató, hatékony és oktató eszköz az áramkörök működésének megismerésére! A tanulás egyik legjobb módja, ha megteszed. Tehát először megtervezzük saját projektünket:
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel)
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: Ezt a Rapsberry PI-t tervezem használni egy csomó szórakoztató projektben a blogomban. Nyugodtan nézd meg. Vissza akartam kezdeni a Raspberry PI használatát, de nem volt billentyűzetem vagy egér az új helyen. Rég volt, hogy beállítottam egy málnát
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
A számítógép szétszerelése egyszerű lépésekkel és képekkel: 13 lépés (képekkel)
A számítógép szétszerelése egyszerű lépésekkel és képekkel: Ez az utasítás a számítógép szétszereléséről szól. A legtöbb alapvető alkatrész moduláris és könnyen eltávolítható. Fontos azonban, hogy szervezett legyen ezzel kapcsolatban. Ez segít elkerülni az alkatrészek elvesztését, és az újra összerakást is