Avainsana-arkisto: WS2812B

Sisustusongelma & valoa katossa vol 2

Eihän se sitten kestänytkään kuin melkein puolitoista vuotta, mutta nyt on katossa lamppu! Ei vielä kaikkia niitä ominaisuuksia, mitä aioin ja aion tuohon laittaa, mutta se perus lampun virka on nyt täytetty. Edellisen kerran kirjoittelin tästä asiasta syyskuussa 2015.

Kattoon siis päätyi kolme metriä valkoista ledinauhaa, metrin verran WS2812B ledinauhaa, tyhjä taulu, pari virtalähdettä ja muuta pikku sälää mm. arduino. Lamppu vielä vaatii ”siivousta” esimerkiksi osa johdoista näkyy rumasti sivusta.

Pitkän aikaa olin sitä mieltä, että mitään roikkuvaa lamppua en halua ja kuinkas sitten taas kävikään. Ketjujen varassa roikkuvaan lamppuun päädyin. Lamppu on kuitenkin niin korkealla, että se ei minua haittaa. Eikä oletettavasti myöskään ketään muitakaan.

Valaisimesta tuleva valo on varsin pehmeää, koska se heijastuu katon kautta. Valoteho on valkoisella valolla varsin riittävä, mutta värillinen valo on hiukan heikko. Olisin voinut helpostikin laittaa WS2812B nauhaa pitemmästikin lamppuun, mutta iski vähän piheys ja laitoin vain metrin.  Onneksi tuo on aika helppo lisättävä, jos jossain vaiheessa oikeasti haluaa lisää värivaloon tehoa.

Miten valaisin on sitten tehty? Lyhyesti sanottuna clas ohlsonilta tyhjä 50cmx50cm taulu ketjuilla kattoon kiinni. Ebaysta tilattua ledinauhaa sopivan pituiseksi pätkityn kynnyslistan päälle, joka sekin on ostettu clasulta. Virtalähteenä on samoin ebaysta ostettuna 12v ja 5v virtalähteet. (Ja juu en ole jättämässä tuota valoa päälle yksinään tai anna kenenkään muun mennä koskemaan tuota jännitteellisenä.)

Ohjaus on tällä hetkellä osittain valokatkaisijalla, osittain arduinolla. Valkea valo on katkaisijalla ja värillinen valo arduinolla, mutta katkaisijan takana.  Ihan suoraan katkaisijasta siis voi valita kumman valotyypin haluaa päälle.

Jatkossa on tarkoitus tehdä tuosta lampusta himmennettävä. Vielä en kylläkään tiedä ihan tarkkaan miten sen teen.

Koodi arduinossa on tällä hetkellä aivan suoraan Adafruitin neopixel esimerkki koodia.

Hintaa hökötykselle kertyi about 100e ja (aktiivisia) työtunteja ehkä 2-3. Kaiken kaikkiaan aikaa meni huomattavasti enemmän, kun piti kameran kanssa leikkiä ja saattoipa siinä sivussa muutama youtube pätkäkin ja useampi kupillinen teetäkin mennä. Kolmena iltana rakentelin lamppua.

Sisustusongelma

Ihan vähässä kummassa en olisi uskonut, että minulle tulee sisustus ongelma, mutta niin vain tuli. Kuvassa on villakoiran ydin. IMG_20150827_002326Kattolamppu tai paremminkin tyhjä paikka kattolampulle! En tiedä minkälaisen haluan. Luultavasti päädyn tekemään itse jonkinlaisen ledi virityksen, mutten vielä ole päättänyt minkälaisen.

Draconian sivuilla oli hillittömän hieno lohikäärme lamppu, mutta se oli suhteellisen kallis ja sitten ehkä pitäisi hommata muutakin vastaavaa. Enkä oikeastaan halua olohuoneeseen lamppua, joka roikkuu.

Yksinkertainen keino ja yllättävän siistin näköinen olisi tehdä samalla tavalla kuin kaveri. Hänellä on neliön mallista alumiiniputkea roikkumassa katosta ja sen yläpinnalla ledinauhaa. Valo tulee siis epäsuorasti katon kautta, samoin kuin minun sarastevalossa. Yksinkertaista, mutta edelleen roikkuva, ei nappaa.

Valoputki tyylinenkin ratkaisu on ollut mielessä. Huurrettua putkea kattoon ja putken sisälle ledinauha. Putkella saisi hauskoja efektejä kyllä aikaiseksi. Voisi vaikka laittaa putket, että ne näyttävät tulevan seinästä tai katosta. Vihreä hehku putkiin ja säteilyvaara kyltti viereen 😉

Jos päädyn tuohon putki ideaan, ledit ovat ehdottomasti yksittäin ohjattavia, esim. WS2812B tai vastaava. Sopivalla ohjauksella saa aikaseksi liike efektin ikään kuin putkessa liikkuisi jotain. Muissa ratkaisuissa perusvalkea nauha tai ehkä jopa yksittäinen 10/20…/100w ledi.

Seuraava pohdinta on sitten ohjaus. Jos päädyn valkeaan nauhaan, laitan korkeintaan himmentimen, mutta WS2812B vaatii jo enemmän ja mieluiten langattoman säätimen. Toteutuksessa voisi esimerkiksi käyttää ESP8266 tai nRF24L01 moduuleja, jotka molemmat minulta löytyy, mutta kumpaakaan en ole kokeilua enempää käyttänyt.

Toisaalta haluan valojen myös olevan yksinkertaiset ja toiminta varmat, en todellakaan viimeiseksi illalla halua alkaa tappelemaan kaukosäätimen tai nettisivun kanssa, että saan valot pois päältä! Ja toisaalta sama aamulla, haluan painaa katkaisimesta naks ja valot on päällä.

Harkinnan arvoinen idea olisi ehkä myös ostaa joku törky halpa pädi ja kiinnittää se seinään sopivalle kohti ja käyttää sitä valo-ohjaimena. Pelkän akun varassa sitä ei kyllä voisi pitää eikä koko aikaa näytön valoakaan päällä. No laturi kiinni koko ajan ja anturilla valot päälle näyttöön, kun käsi lähenee. Ihan tarkkaa tietoa ei ole, mutta taitaapa aika monessa (ainakin puhelimessa) olla toi läheisyys anturi valmiina.

Näin vuokralla asuessa en lähde uusimaan valokatkaisijoita, vaikka sillä olisikin helppo ratkaista ongelma. Onneksi olohuoneen lamppuun menee kaksi johdinta jolloin voin toista käyttää signaalina ja toista käyttöjännitteenä. Hetken pohtimisen jälkeen tuli toinenkin idea. Yksinkertaisesti laittaa ”power on” oletukseksi jonkun sopivan valo asetuksen (tai edellisen asetuksen) ja vasta erikseen säätämällä ohjausta valo muuttuu tms. Silloin kyllä menettää mahdollisuuden sytyttää valot kaukosäädöllä aamulla.

Riippumatta miten ohjauksen teen, siitä tulee sellainen, että sitä voi käyttää myös ”stand alone” versiona eli luultavasti ”power on” oletuksena on joku järkevä valaistus, jottei vahingossa käy vaikka niin, että pari päivää olen punaisessa valossa.

 

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.

WS2812B ledejä

Kokeilin ensimmäistä kertaa eläissäni ebaysta ostamista. Tilasin 100kpl WS2812B ledejä, ihan kohtalaisen hyvään hintaan. Ainoa huono puoli on, että toimitusaika on luokkaa kuukausi. Noh ompahan aikaa suunnitella mitä noista tekee.

WS2812B on siis RGB-ledi, jossa on sisään rakennettuna ohjainchippi. Ledistä on usemapia versioita ja tämä minun tilaama versio on asennettuna pienelle jäähdytyslevynä toimivalle alumiinilevyn kappaleelle. Ledi itsessään on neljä pinninen (data-in, data-out, +5v ja gnd). Alumiinisessa taustalevyssä on kuitenkin kuusi pinniä, koska käyttöjännitteellekin on omat IN ja OUT-pinnit.

Jokainen ledi vaatii 24-bittisen komennon (yksi 8-bittinen pätkä R,G ja B värille) ja ohjauskoodi on data transfer timedatasheetin mukaan todella nopeaa! Jopa niin nopeaa, että (teoriassa) 16MHz arduino ja arduinon oma koodi on liian hidasta ohjaamaan noita. Onneksi kuitenkin ilmeisesti sequence charthiukan hitaampikin nopeus riittää ja löytyy valmiita kirjastoja, jotka käyttävät nopeampaa koodia.  Ledeissa on myös piiri, joka muodostaa signaalin uudestaan, jolloin virheet eivät keräänny signaaliin pitkässäkään lediketjussa. composition of 24bit data Katsellaan ohjausta tarkemmin sitten koodissa ja kun pääsen testaamaan itse ledejä.

 

Mielessä olisi siis rakentaa noista ledeistä kello seinälle, vähän niin kuin taulu tai ehkä infinity-mirror tyyppinen ratkaisu, en ole viellä päättänyt. Periaatteessa kuitenkin ohjaukseen arduino (tai mahdollisesti jotain nopeampaa) ja RTC-kello, ehkä myöskin ESP8266, jolloin kelloa voi ohajata netin kautta ja sen saa pysymään NTP:n avulla oikeassa ajassa.