soodan sivut

arkisto

237 kirjotelmaa.

avainsanat

Jossain tilanteessa jokin aikaa sitten syntyi taas yksi kuningasidea värikkäistä välkkyvistä ledeistä kiinni itsessä, kun sellaisia jäin taas hämärässä tuijottelemaan. Muistan sellaisia kivoja ledinauhoja nähneeni jossain, joissa on monivärisiä ledejä joita voi ohjata jokseenkin yksitellen jonkun hupaisan väylän kautta. Etsitäänpä ja ostetaanpa ja ommellaanpa hattuun.

Nuo ovat jotenkin ilmeisen suosiossa harrastelijoilla ja yleistyvät vissiinkin jatkuvasti. Joku on tehnyt arduinolle kirjaston, joku reversasi yhtä tiettyä piiriä, joku kertoo syvällistä tietoa eräästä piiristä, joku puuhasi picille softaa, ladyada kertoo monipuolisesti vähän kaikkea, ja joku muukin on tehnyt pienen vertailun eri ohjainpiireistä.

Ja sitten noita voi ostaa mm. sparkfunista, adafruitilta, ledlightningnutilta, pcboard.ca:lta ja tietenkin ebaystä ja aliexpressiltä sekä varmasti vaikka mistä muualtakin. Googlaamalla piirien nimiä ja/tai sanoja "individually addressable", "led strip", "dream color" yms. löytyy tuhottomasti myyjiä, blogipostauksia ja foorumiketjuja.

Piireillä ja nauhoilla on tietysti eroja. Joitain piirejä ohjataan kivalla tutulla standardiväylällä, toisia vähän vähemmän standardilla mutta kuitenkin jokseenkin tutulla, ja joissain sitten on jokin aivan epäortodoksinen ja perverssi protokolla joka on esim. erityisen tarkka ajoituksien suhteen. Jotkut nauhat ovat vedenkestävän silikoniputken sisässä, jotkut ihan paljaana ja joissain on teippipinta takana. Johtojen ja jännitteen määrä riippuu mm. ohjainpiiristä. Joissain on yksi piiri ohjaamassa montaa lediä, joissain ihan yhtä. Eri määrää ledejä voi siis ohjata yksitellen, parashan olisi kyetä säätämään yhtä kerrallaan mutta halvemmissa yksittäin osoitettava määrä on kolme. Viiden voltin jännite on tuttu ja turvallinen, kun taas 12 on monesti muuten aika yleinen mutta muuten inhottava kun mikroprossua voi ohjata suoraan viidellä niin noissa ledinarulle tarvitsisisi eri jännitesyötön.

Toiset ovat halvempia ja toiset kalliimpia. Hinta on sitä alhaisempi, mitä harvemmin ledejä voi ohjata, ja mitä kiinaisempi ohjainpiiri on käytössä. Eri piirejä on ainakin HL1606, LPD8806, LPD6803, WS2801, TM1803 ja TM1809. Jotkut eivät osaa PWM:ää eli ledin yksittäistä himmennystä itse, joten niitä pitäisi softahimmentää ohjaimella, mikä olisi vähän kömpelöä. Toiset käyttävät ohjausprotokollana tosi tarkkaan ajastettua ikävyyttä, jolloin kaikki prossuaika menisi siihen että katsotaan tarkkaan koska seuraava bitti nyt lähtee. Halvimmissa on datasheetissä sellaista engrishiä ettei tiedä pitäisikö itkeä vai nauraa, kun tuntuu siltä ettei valmistajakaan ihan tiedä miten piiri toimii. Kalleimmat puhuvat jokseenkin SPI:tä, mikä on aika optimaalista.

Pööpöilin monta päivää edestakaisin että kyllä mä koodata osaan mutta olen köyhä opiskelija, ostan halpaa ja nyplään softaa sitten. Päädyin sitten kuitenkin ostamaan kallista ja kätevää aliexpressistä joltain kiinamyyjältä, koska totesin että ei tuo hintaero merkittävä ole ja kaikista halvin kiinaromu vain lopulta ottaa pannuun, sekä kun piirit osaavat itse kaikkea kivaa, niin ohjaimelta säästyy prossuaikaa muuhun kivaan olennaiseen. Tehdään kerrankin kerralla kunnolla. Maksoi tuolla posteineen reilut sata dollaria ja tililtä lähti euroina noin 85, ja koko nauhan pituus on viisi metriä, siinä on 32 lediä per metri, joka ledille on oma ohjain, se on nätisti kelalla ja tuli DHL:n toimittamana ovelle asti. Onneksi olin kotona keskellä päivää. (Anteeksi vaan Sparkfunille ja muille oikeille kivoille kaupoille, mutta halpa "kiinapiraatti" vaan on edullista suhteessa oikeisiin kauppoihin...)

Tottakai ledinarua piti päästä heti nypläämään vaikken ollut ehtinyt koodailla sille mitään ohjaussoftaa odotellessa kun se nyt tuli vähän yllättäen, odotin että kiinasta saisi odottaa jotain enemmän kuin muutaman päivän. Bus pirate jeesaa tässä; se puhuu sopivaa SPI:tä tuolle nauhani WS2801-piirille. En ole paljoa mitään ihmeellistä tuolla piraatilla tehnyt, joten sai hetken raapia päätä että mites tämä menikään. Options-valikko esille ja puljaamaan. Jostain syystä BP pitää pitkän (~1 ms) tauon jokaisen lähetetyn tavun välissä, vissiin sen ajan kun lähettää juttua takaisin koneelle (oskilloskoopilla tutkin, kun ei ledinaru totellut kunnolla), mikä on vähän huono homma kun WS2801 latchaa (eli kytkee sisään tulleen bufferin lediohjainosansa pwm-rekisterille) sitten, kun väylällä ei ole ollut kellosignaalia 500 mikrosekuntiin. Kätevä ominaisuus kun säästää erillisen latch-signaalijohdon, mutta tässä ei ihan toimi yhteen. BP:n toisto-ominaisuudella viive on lyhyempi, mutta sitä on kömpelö käyttää. Eli kun terminaaliin sanoo "0 1 2", niin nuo kolme tavua lähtevät väylälle mikrosekunnin välein, mutta "1:6" syötteellä kuusi nollaa lähtee niin, että väli on vähän vähemmän ja ledinaru sytyttää kaksi peräkkäistä lediä (yksi ledi syö kolme arvoa: punaisen, vihreän ja sinisen määrä välillä 0--255).

BP:tä voi onneksi myös skriptata hassulla basicilla. Sillä sain koko viiden metrin narun täyteen eri värejä, joten ainakin homma toimii siten kuin olettaisin. Pythonille on kirjasto raakatilassa ohjaamiselle ja dokkaria tuosta binäärimoodista löytyy myös vähän, mutta itse pythonkoodin dokumentaatio on olematonta ja tuolla pythoninterfacella ohjaaminen on aivan liian hidasta. Tavuja voi lähettää 16 kpl peräkkäin yhdellä funktiokutsulla eli siis BP:n binääritilan protokollan paketilla, mutta kahden tällaisen välissä on taas yli se 500 mikrosekuntia joten voin ohjata vain muutamaa ensimmäistä lediä. Kaikki pitäs itte tehä, joten puljataanpas joku aito kunnollinen usb-spi-adapteri kunhan ehtii.

Tarkoituksena oli kuitenkin kytkeä tuo jonnekin koneen ulkopuolelle, joten jonkun mikrokontrollerin laitan sitä ohjaamaan itsenäisesti ja sitten BP:n voi heittää mäkeen tästä projektista. Noh, BP:n nettisivut sanovatkin että "The Bus Pirate is a slow serial port device intended for human-speed interaction." Itse tarttisin jotain "hacker-speed interactionia". Tähän varmaan tarttis jonkun arduinon jolle juttelisi protoillessa, mutta mä saan päänsärkyä koko a-sanan mainitsemisesta. Mieluummin koodaan kunnollisen adapterin suoraan, kun on tuo nyt kerran protoiltu.

Huhhuh, tuli aika tutkijaolo kun tuli luettua niin hitosti lähteitä ja viitattua niihin tässäkin. Nytpä tiedän vaikka mitä näistä.

0 kommenttia

Oma kommenttisi

Mielipide tämän sivun asiasta? Kirjoita toki. Älä raapusta kuitenkaan ihan asiattomia juttuja.

Jos on yksityisempää asiaa, tarkkaa kysyttävää tai aihetta pidemmälle keskustelulle, käytä yhteydenottolomaketta kommentoinnin sijaan.

Hölmöt kommentit saatetaan moderoida pois jälkikäteen.

Nimimerkki:

Spammibottiesto: Mikä on nollan ja yhdeksän erotus? (vastaus numeroina)