Sadržaj:

Holi-Tie: 8 koraka (sa slikama)
Holi-Tie: 8 koraka (sa slikama)

Video: Holi-Tie: 8 koraka (sa slikama)

Video: Holi-Tie: 8 koraka (sa slikama)
Video: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Novembar
Anonim
Image
Image

Autor gwfongMonkey PatchingFollow Više od autora:

Osvjetljavajuća rampa za pse
Osvjetljavajuća rampa za pse
Skulptura od čeličnog srca i stopljenog stakla
Skulptura od čeličnog srca i stopljenog stakla
Skulptura od čeličnog srca i stopljenog stakla
Skulptura od čeličnog srca i stopljenog stakla
Bakarna žica i leptir od stakla
Bakarna žica i leptir od stakla
Bakrena žica i leptir od stakla
Bakrena žica i leptir od stakla

O: Samo momak koji želi napraviti cool stvari Više o gwfong »

Ovo je Holi-Tie, svečana kravata dizajnirana za nošenje tokom praznika. Labavo zasnovan na Ampli-Tie Becky Stern koja koristi Flora ploču, Holi-Tie koristi mikrokontroler Circuit Python Express (CPX) za pokretanje NeoPixel animacija i muzike. Gumb se mijenja između 2 različite NeoPixel animacije. Kapacitivni dodirni jastučići mijenjaju NeoPixel boje i brzinu animacije. Drugo dugme mijenja LED animacije i muziku. Ugrađeni mikrofon koristi se za mjerenje ambijentalne buke za animaciju VU mjerača. CPX zvučnik emituje melodije prazničnih čipova.

Sve je kodirano pomoću programskog jezika Python koji radi na sistemu CircuitPython. Napaja se 3,7V, 500mAH LiPo baterijom koja je modificirana tako da ima prekidač za uključivanje/isključivanje.

Postoje dva video isječka koji prikazuju Holi-Tie:

  • Završena Holi-Tie
  • Unutar Holi-Tie

Korak 1: Dijelovi i alati

Delovi

  • Circuit Playground Express
  • 15x Flora Neopiksela
  • Magnetna žica
  • Ljepljiva traka sa kukom i omčom
  • Lipo baterija od 500mAH sa JST konektorom
  • Candy Cane kravata
  • Mini klizni prekidač, SPDT
  • Termoskupljajuće cijevi

Prilikom nabave dijelova bilo bi pametno kupiti dodatke. Imao sam ukupno 20 NeoPixela, od kojih je jedan bio pokvaren od početka, a jedan sam uništio. Kravata Candy Cane bila je toliko jeftina da sam kupio drugu za slučaj da sam prvu uništio.

Alati

  • Pištolj za vruće ljepilo
  • Lemna stanica
  • Rezači žice
  • Mali nož
  • Multimetar
  • Computer
  • Upaljač ili toplotni pištolj
  • Konac i igla

Korak 2: Priprema kravate

Priprema kravate
Priprema kravate
Priprema kravate
Priprema kravate
Priprema kravate
Priprema kravate

Glavni cilj je pristupiti unutrašnjoj jezgri vezice i razgraničiti linije koje pokazuju gdje LED diode trebaju biti pozicionirane.

Korak 1: Vežite kravatu na mjesto

Biće teško vezati kravatu kada je elektronika na svom mjestu. Zato zavežite kravatu tako da izgleda dobro i da je čvor prilično čvrst i da se neće rasplesti. Zatim pažljivo povucite mali kraj kravate kako biste otvorili rupu kako biste kravatu prebacili preko glave. Ovo je pozicija na kojoj će se izjednačiti.

Postoje sve vrste različitih čvorova za kravate. Znam samo onaj koji sam naučio kao dijete, Windsor. Ne bi trebalo biti važno koji čvor se koristi.

Korak 2: Otvorite stražnju stranu kravate

Otvorite šavove s jedne strane petlje za kravatu i logotipa, a zatim niz sredinu kravate. Budite oprezni jer se na kraju mora ponovno sašiti.

Korak 3: Nacrtajte linije na koje LED diode trebaju biti postavljene

Da bi se LED diode pojavile u dijelovima kravate s bijelim prugama, lakše je pronaći središnju liniju za svaki dio bijele pruge na stražnjoj strani jezgre kravate, a zatim to preslikati na prednju stranu jezgre kravate. Provjerite i dvaput provjerite je li središnja linija 1) u sredini i 2) paralelna s prugom. Fino podešavanje LED položaja bit će moguće ako su malo isključeni. Ali najbolje je to približiti sada, a ne kasnije.

Testirajte centriranje linija postavljanjem LED dioda na linije i polaganjem prugaste tkanine na vrh. Podesite gde je potrebno.

Korak 3: Priključivanje NeoPixela

Priključivanje NeoPixela
Priključivanje NeoPixela
Priključivanje NeoPixela
Priključivanje NeoPixela
Priključivanje NeoPixela
Priključivanje NeoPixela
Priključivanje NeoPixela
Priključivanje NeoPixela

U osnovi, pravimo vlastitu LED traku. Jednostavno montiramo LED diode na jezgru kravate i zatim ih povezujemo jedna s drugom.

Korak 1: Zalijepite NeoPixels na jezgru kravate

Stavite mrvicu vrućeg ljepila na stražnju stranu NeoPixela i postavite ga na središnje linije. Za presjeke s 3 NeoPixela, okomito poravnajte središnji NeoPixel i prvo ih zalijepite. To će olakšati pozicioniranje lijevog i desnog NeoPixela u odnosu na središte, posebno s obzirom na to da se širina kravate povećava odozgo prema dolje.

Orijentirajte sve NeoPixele u istom smjeru, idući odozdo slijeva prema gore desno. Ako to nije točno, traka neće raditi.

Napomena o vrućem ljepilu. Bit će dovoljno da se projekt dovrši. Što se tiče toga da li će to trajati godinama koje dolaze, ostaje samo vidjeti.

Korak 3: Lemite NeoPixele jedan na drugi

Budući da sam odlučio lemiti NeoPixels zajedno umjesto provodnog konca, rupa na NeoPixel jastučićima djeluje pomalo protiv nas. Samo pronađite dobro mjesto na podlozi za lemljenje žice. Ne pokušavajte popuniti rupu lemom, ali ako se to dogodi, bit će u redu.

Magnetna žica ima tanki sloj izolacije oko bakrene jezgre. Nožem sastružite izolaciju samo na krajevima na kojima će biti lemljeni. Najbolje je strugati cijeli opseg žice.

Korak 4: Testirajte povezanost

Pomoću multimetra provjerite povezanost:

  1. Pozitivne veze. Mora postojati povezanost od vrha do repa. Pobrinite se da testirate povezanost jastučića, a ne žice.
  2. Uzemljenje. Izvršite isti test, ali s podlogama za uzemljenje.
  3. Svaka linija podataka. Od jedne do druge podatkovne ploče provjerite postoji li povezanost.

Korak 4: Priključivanje Circuit Playground Express -a

Priključivanje Circuit Playground Express
Priključivanje Circuit Playground Express

Circuit Playground Express (CPX) je srce sistema. Adafruit ima brojne vodiče za ovaj kontroler. Kasnije u ovom uputstvu istaknut ću nekoliko MCU funkcija.

Korak 1: Lemite CPX na donji vrh NeoPixel -a

Odrežite odgovarajuću duljinu magnetske žice za napajanje, masu i podatke. Gurnite ih kroz tkaninu jezgre kravate tako da dodiruju NeoPixel napajanje, tlo i podatkovne jastučiće. Spajati ih pazeći da postojeće žice na jastučićima i dalje ostvaruju dobru povezanost.

Zatim okrenite jezgru kravate i postavite CPX u željeni položaj. Uključite žicu za napajanje na VOUT jastučić, žicu za uzemljenje na bilo koju podlogu za uzemljenje, a žicu za podatke na bilo koju U/I podlogu osim A0. Kod koji sam napisao koristi A3.

Testirajte povezanost.

Korak 2: Vezajte CPX

Koristeći konac i iglu, odaberite bilo koja četiri jednako udaljena jastučića i prišite ih na jezgru kravate.

Korak 5: Napajanje CPX -a

Napajanje CPX -a
Napajanje CPX -a
Napajanje CPX -a
Napajanje CPX -a
Napajanje CPX -a
Napajanje CPX -a

CPX nema prekidač za uključivanje/isključivanje. To znači da će se kravata uključiti čim se baterija uključi. To također znači da je jedini način isključivanja isključenjem baterije, što je velika muka. Jednostavno rješenje je staviti prekidač za isključivanje/isključivanje na bateriju.

Korak 1: Odrežite 3. iglu na prekidaču

Jedan od necentričnih pinova nije potreban. Odsecite ga u ravni sa telom prekidača.

Korak 2: Lemite prekidač u liniji za baterijski vodič

Prerežite žicu za uzemljenje baterije negdje u sredini. Gurnite komad termoskupljajuće cijevi na svaku od žica za uzemljenje. Lemite jednu žicu za uzemljenje na jedan od pinova, a drugu žicu za uzemljenje na drugu iglu. Pazite da se ne dodiruju ili da lem dodiruje metalno tijelo.

Provjerite da nisu povezani pomoću multimetra. Gurnite cijev preko lemljenih spojeva i skupite je. Dodajte malo električne trake na bilo koji dio koji može otkazati zbog zamora od savijanja.

Korak 3: Provjerite radi li baterija

U ovom trenutku, baterija se može uključiti u CPX. Ako je sve prošlo dobro, prekidač bi trebao moći uključiti i isključiti CPX.

Korak 4: Postavite bateriju

Stavite malo ljepljive kuke i trake na stražnju stranu baterije i na jezgru kravate. Ovo će ostati na mjestu ako se kravata ne rukuje previše.

Korak 6: Postavljanje Circuit Playground Express -a

Neću ulaziti u detalje o tome kako postaviti CPX. Adafruit to radi, a zatim nešto. Dat ću nekoliko savjeta za probleme s kojima sam se često susretao.

CPX se zamrzava

Vjerovatno zbog problema s memorijom tokom rada, CPX bi se često zamrzavao. Brzo rješenje je brisanje i ponovno bljeskanje. Potražite "Old Way" u ovim uputama. U osnovi, to je nekoliko pritisaka tipki, povlačenje i ispuštanje za brisanje, a zatim povlačenje i ispuštanje za ponovno bljeskanje.

Upozorenje: Ovo briše sve. Sav kôd na CPX -u će biti izgubljen.

Spremanje promjena u CPX može uzrokovati probleme

Otkrio sam da bi ponekad nakon spremanja datoteke na CPX python vrijeme izvođenja bilo u lošem stanju. Popravka je ponovno pokrenula vrijeme izvođenja pythona pritiskom na gumb za resetiranje. Pritisnite samo jednom. Ako ga pritisnete dvaput, pokrenut će se postupak ponovnog bljeskanja.

Rizično je spremanje izravno na CPX

Zbog mogućnosti da CPX mora biti ponovno bljesak, postoji rizik da izgube sav njihov kôd. Nakon što sam dvaput izgubio kôd, smislio sam jednostavan tijek rada. Svoj kôd bih spremio na lokalni tvrdi disk. Kada je bio spreman za testiranje na CPX -u, jednostavno bih ga kopirao pokretanjem jednostavne implementacijske skripte.

Korak 7: Kodiranje Circuit Playground Express -a

U ovom trenutku, CPX i NeoPixels su prilično kompletni. S njima nije potrebno raditi nikakve druge mehaničke ili električne radove. Ostalo je sav softver.

Kôd se može pronaći na mom github računu. Osnovni Python kod trebao bi raditi bez ikakvih promjena za sve operativne sisteme. Nemojte instalirati vanjske Adafruit CircuitPython biblioteke. Ne koriste se.

Evo sažetka na visokom nivou onog što se dešava u kodu.

Šta unosi šta?

  • Dugme A: Kretanje kroz LED animacije
  • Dugme B: Kretanje kroz pesme
  • Kapacitivna dodirna ploča A1: Mijenja boje za LED animacije
  • Kapacitivna dodirna ploča A6: Mijenja brzinu LED animacija

3 animacije postoje, ali samo 2 su na snazi

code.py

import pixelsoff

#import vumeter uvoz stepenice uvoz twinkle… led_animations = [pixelsoff. PixelsOff (pikseli), # vumeter. VuMeter (pikseli, 100, 400) stepenice. Stepenice (pikseli), twinkle. Twinkle (pikseli)]

Portirao sam kôd stila Ampli-Tie VU mjerača. Koristi CPX mikrofon za hvatanje zvuka i osvjetljavanje NeoPixela na osnovu amplitude zvuka. Međutim, želio sam više animacija. Zbog ograničenja memorije u vrijeme izvođenja morao sam izabrati koje animacije želim. Tako će se prema zadanim postavkama ostale dvije, Stepenice i Twinkle, pokretati bez potrebe za promjenom koda. Da biste pokrenuli animaciju VU mjerača, jednu ili obje druge animacije morate komentirati, a VU mjerač ukloniti.

Upravitelj muzike i kodiranje van mreže

frosty_the_snowman.py

uvoz muzičkih_nota kao mn

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

convert_to_binary.py

pjesme = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] za pjesmu u pjesmama: data = song [0] file = song [1] sa otvorenim (file, "wb") kao bin_file: za unos u podatke: print ("pisanje:" + str (unos)) note = entry [0] dur = entry [1] bin_file.write (struct.pack ("<HH", note, dur))

Htela sam muziku za praznike. CPX podržava i WAV i tonove. Pokazalo se da su WAV datoteke prevelike u pogledu veličine datoteke i memorije za vrijeme izvođenja. Korištenje python struktura podataka za zadržavanje tonova i njihovo trajanje također je pokazalo da koristi previše memorije za vrijeme izvođenja. Tako sam izmijenio kod Holi-Tie tako da čita komprimiranu binarnu datoteku koja je sadržavala samo potrebne podatke o pjesmi u komprimiranom binarnom formatu. Napisao sam skriptu koja čita pjesmu koja se nalazi u python strukturi podataka i zapisuje je u binarni format. Ako je pjesma kodirana kao binarni podatak u datoteci, pjesma je i mala i dinamična. Nakon što se pjesma završi, memorija se oslobađa.

Trivijalno je dodati još pjesama. Za detalje pogledajte README.md u pjesmama.

Dugme A animira neopiksele, B reprodukuje muziku, ali ne istovremeno

code.py

def button_a_pressed ():

if music.is_playing (): # Zaustavi muziku ako pušta muziku.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Pokreni animaciju bez opiranja next_led_animation (0) if music.is_playing (): # Uključi / isključi muzika uključena ili isključena music.stop () else: music.play ()

Čak i sa memorijski efikasnijim sistemom za upravljanje muzikom, nisam mogao držati u memoriji tokom izvođenja 2 animacije, dok sam reproducirao 1 od njih i istovremeno svirati pjesmu. Budući da sam već odlučio da VU mjerač uopće ne bude u memoriji za vrijeme izvođenja, nisam želio smanjiti broj animacija na samo 1. Zato sam napisao kod tako da se animacija reproducira ili muzika svira, ali ne oboje. Druga je mogućnost bila smanjiti broj NeoPixela, ali bi to izgubilo malo svježine animacije.

Funkcionalnost Python koda

Iako sam veteran programer softvera, nikada nisam pisao Python. Nakon što sam se snašao i počeo primjenjivati dobre prakse kodiranja, poput enkapsulacije i modularizacije, brzo sam otkrio da koristim previše memorije za vrijeme izvođenja. Dakle, postoji dosta koda koji nije DRY. Takođe sam morao da koristim neke MicroPython tehnike kao što je const () da bih dodatno smanjio probleme sa memorijom tokom izvođenja.

Sastavljeni moduli

kompajlirati

#!/bin/bash

kompajler = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd pjesme python3./convert_to_binary.py cd.. za f u *.py; uradi ako

Rano u projektu slijedio sam Adafruit -ove savjete i pohranio sve Adafruit CircuitPython biblioteke na flash. Ovo je, međutim, ostavilo malo prostora za moj projekat. Da bih mogao prenijeti svoj kod na CPX, počeo sam sastavljati module i stavljati ih na MCU. Ispostavilo se da Holi-Tie ne treba nikakvu vanjsku biblioteku. Postojeće biblioteke u UF2 bile su dovoljne za ovaj projekt. Pokretanje *.mpy datoteka je malo efikasnije pa sam nastavio proces implementacije prevedenih modula.

Kao što je evidentno u gore navedenoj kompajliranoj skripti, radim na Windows mašini, ali koristim Unix pomoćne programe kao što su bash i python3. Koristim Cygwin da to postignem. Ova skripta se lako može prevesti u DOS paket i Windows izvornu Python3 implementaciju.

Korak 8: Zakopčavanje kravate

Zakopčavanje kravate
Zakopčavanje kravate
Zakopčavanje kravate
Zakopčavanje kravate

Posljednji korak je vratiti jezgru kravate na mjesto, sastaviti kravatu i sašiti je. Budite sigurni da možete učiniti CPX pristupačnim. Trebat će vam prilikom zamjene baterije ili promjene koda.

Preporučuje se: