WS2812B kello

Jeee!! ne saapuivat! IMG_20150324_230440ja noista on jo kellokin rustattu 🙂

Ledit on tehtaalla asennettu  piirilevyn kappaleelle, jossa on kuusi tinattavaa täplää, DATA in ja out, 5v in ja out sekä sama GND:lle.  IMG_20150408_173017Rakentelin noista 3×5 ledin “paneeleita” neljä kappaletta. Ensimmäisessä testissä huomasin Kiinan poikien tekemän “källin”, GND täplät eivät olekaan kytketty yhteen! Toki voi olla, että normaalisti ne on kytketty yhteen, mutta kun etsin ebaysta halvimmat mahdolliset ledit ja tilasin ne niin laatu ei ihan sitä ole mitä pitäisi. Tinasin siis kiltisti johdon joka täplään.  Ledit sinällään muuten toimivat yhtä lukuunottamatta.

Kuvassa näkyy suunnilleen ulkoinen rakenne, ihan prismasta haettu taulukehys ja motonetistä ikkunan tummennuskalvoa ja ledipaneelit kuumaliimalla kiinni lasiin tai no tarkemmin sanottuna ne on liimattu tummennuskalvoon, koska kalvo on asennettu kummallekin puolelle lasia pienen sekaannuksen vuoksi. Tarkoitus oli ostaa tumminta mahdollista kalvoa ja vaitoehdot kulkivat 50%-5% välillä. Nappasin hyllystä rullan johon oli merkitty 50% ajatuksella, että 50% merkintä tarkoittaa 50% prosenttista valon blokkausta ja vastaavasti 5% tarkoittaa, että 5% blokataan. No sinällään se 50/50 oli ihan oikein, mutta kyseessä ei olekaan tummin kalvo vaan vaalein! Prosentti luku ei  kerrokaan valon blokkaus määrää vaan läpäisymäärän. No oppia ikä kaikki.

Ohjaimena on arduino micro ja RTC on joku random DX.comista tilattu DS1307 chippiin perustuva halpis moduli.  Proto versiossa neopixel clockvirtalähteenä on vanha samsungin laturi, joka muuten toimii, mutta siitä hajosi liitin. Virtalähde on totaalisen alimitoitettu, mutta toimii kyllä kunhan vain ei innostu liikaa. Kaikkiaan näyttö voi imaista pahimillaan lähes 4 amppeeria virtaa! (60mA*60kpl=3,6A*5V=18W) Kuvassa näkyy kytkentä osittain, ledejä on 60kpl ja RTC modulia en jaksanut alkaa eaglella piirtelemään, joten käytin pelkkää chippiä. Tarpeelliset kuvasta kyllä näkee.  Ledi ketjussa on lisäksi muutama 100uF kondensaattori tasaamassa virtapiikkejä. Ledit on kytketty niinkin järkevästi, että data lähtee vasemmalta alhaalta ja siirtyy siitä pykälän oikealle ja putoaa alas johdolla ja lähtee taas nousemaan ledejä pitkin. Yllä olevasta videosta näkee asian aika selvästi.

Ihan putkeen ei mennyt koekytkentälevyllä homma. RTC siis on I2C IMG_20150408_142031kytkentäinen, mutta hups! yritin ensiksi käyttää sitä niin, että kello tuli SPI-linjasta, jännä juttu ettei toiminut! Kuvassa siis virheellinen kytkentä, oikeat pinnit ovat 2 ja 3.

Koodi löytyy gihubista.  Se on hyvinkin kokeilu asteella vielä, käytännössä siinä on vain pari esimerkki koodia yhdistetty ja lisätty pari funktiota. Datan syötön ledeille hoitaa Adafruitin kirjasto, WS2812B vaatii sen verran tarkkaa ajoitusta, että arduinon omalla koodilla ei siihen pääse, niinpä kirjastossa on käytetty assemblyä. RTC-koodi on käytännössä suoraan esimerkin koodi.

Videolla on pieni testi kellosta.

 

Ihan täydellinen koodi ei ole, kuten kuvasta näkyy (kello on siis tuossa 19.07).IMG_20150408_190806 Toi bugi on jo korjattu koodista, mutta muita siellä vielä on. Heti ensimmäisenä yönä huomasin myöskin, että vaikka kello ei läheskään täydellä  kirkkaudella toimikaan, on se yöllä totaalisen liian kirkas, varsinkin kun se vaihtaa väriään (ja samalla kirkkauttaan) minuutin välein.  Yksittäinen ledi siis voi saada jokaiselle kolmelle värille arvon välillä 0-255. VIrtalähteen rajoituksista johtuen nykyisessä koodissa jokainen väri voi saada arvon välillä 0-30, mutta missään koodissa ei varmisteta, että kirkkaus pysyy samana. Teoriassa siis väreille voi tulla arvo 0-0-0, jolloin ledit ovat kokonaan sammuksissa!

Tarkoitus olisi viellä väkertää tuolle piirilevy ja ehkä jopa rakentaa toinen niillä korjauksilla mitä tuota ensimmäistä tehdessä on tullut tarpeelliseksi huomattua. Yksi lisäys mikä tohon ehdottomasti tarvitaan on anturi joka mittaa ympäristön valaistuksen ja säätää sen mukaan ledien kirkkauden. Toki senkin voisi tehdä ihan kellolla, mutta onhan se paljon coolimpaa, että oikeasti mitataan se valoisuus.