Neljästä ledistä koostuvan ryhmän väriä voidaan säätää langattomasti 16-bittisen PWM-piirin avulla. Sovellusta varten rakennettu RGBA-väriensekoituskortti sisältää kapasitiiviset liukusäätimet värille ja kirkkaudelle. Demokorttia voidaan ohjata myös PC- tai Android-sovelluksella BLE-yhteyden kautta.
Artikkelin kirjoittaja Namrata Dalvi toimii Microchip Technology -yhtiössä vanhempana sovellusinsinöörinä. |
Ledien väritasapainon langaton säätö voidaan toteuttaa tarkasti käyttämällä 8-bittistä mikro-ohjainta ja energiapihiä Bluetooth 4.1 -moduulia RGBA-väriavaruuden eli punaisen, vihreän ja sinisen värin sekä läpinäkyvyyden (alpha) ohjaamiseen.
Kuvassa 1 näkyvällä demokortilla on neljä lediä: punainen, vihreä sininen ja keltainen. Kunkin ledin kirkkautta säädetään pulssinleveysmoduloidun (PWM) signaalin pulssisuhteen ohjaamana.
Tähän päästään käyttäen Microchipin mikro-ohjainpiiriä PIC16F1579, joka sisältää neljä 16-bittistä PWM-modulaattoria, joita käytetään ledien ohjaamiseen. Ne mahdollistavat kunkin ledin kirkkauden tarkan säädön sekä eri RGBA-kirkkaustasojen sekoittamisen kaikkien haluttujen värien tuottamiseksi.
Kuva 1. Demokortti muodostaa RGBA-värit sekoittamalla.
Kapasitiivisen mTouch-kosketusteknologian ansiosta säätötoimintaa voidaan ohjata kahden kapasitiivisen liukusäätimen avulla. Kortille sijoitettua Bluetooth-moduulia RN4020 käytetään PWM-arvojen vastaanottamiseen Android-mobiilisovellukselta tai PC-ohjelmalta energiapihiä Blutetooth LE -datansiirtoa hyödyntäen. Kortin käyttöteho saadaan AAA-kokoisesta 1,5 voltin paristosta.
Valo vaihtelee
Ledien tuottama valo vaihtelee useiden eri tekijöiden vuoksi. Lumeneissa ilmoitettava kirkkaus vaihtelee erityyppisten ledien ja myös samantyyppisten ledien eri yksilöiden kesken. Lisäksi värillisille ledeille mitatut väriarvot vaihtelevat nekin yksilöstä toiseen.
Kirkkaus- ja väriprofiilien luomiseksi mitattiin tietyn ledityypin muutamia yksilöitä. Mitattuja arvoja käytettiin sitten tyypillisinä arvoina piiriratkaisuissa ja värien ohjelmallisissa laskutoimituksissa. Tätä prosessia kutsutaan värien virittämiseksi.
Ledien sarjavastuksille haettiin kiinteät arvot niin, että kukin väri tuotti saman kirkkauden lumeneina. Sarjavastuksen arvoksi saatiin punaiselle ledille 820 Ω, siniselle 400 Ω, vihreälle 500 Ω ja keltaiselle 500 Ω.
Kaksi toimintamuotoa
Demokortilla on kaksi eri toimintamuotoa. Ensimmäinen on värinkylläisyyden ynnä valkoisen säätö eli HSVW (Hue Saturation Value plus White) yhdistettynä kirkkaudensäätöön. Toinen toimintamuoto on värinvalinta käyttäen Bluetooth LE -datansiirtoa.
Kortti käynnistyy aina ensimmäisessä toimintamuodossa. Mukana on kaksi kapasitiivisella kosketustekniikalla toimivaa liukusäädintä, toinen värisignaalien tulotasoja varten ja toinen kirkkaustasojen säätämiseen.
Jos ensin mainittua liukusäädintä liikutetaan kortin ollessa säätömoodissa, säätimellä valittu väri näkyy ledeissä. Valittu väri näkyy, kunnes jokin toinen tulosignaali vastaanotetaan. Yksittäisen värin kirkkautta voidaan sitten säätää toisella liukusäätimellä.
Toisessa toimintamuodossa eri värejä vastaavat pulssisuhteen arvot (PWM) valitaan Android-pohjaisella mobiillisovelluksella tai Windows-pohjaisella työpöytäsovelluksella. Värejä vastaavat PWM-arvot lähetetään sitten kortille Bluetooth-liitännän kautta.
Sovelluksessa käytetään XY-muotoista värimallia CIE 1931, joka nähdään kuvassa 2. Valittujen väri- ja kirkkaustasojen tarkat PWM-arvot lasketaan ja lähetetään RGBA-kortille Bluetooth-yhteyden kautta. Kortilla oleva Bluetooth-moduuli vastaanottaa PWM-arvot, joita RGBA-kortin ohjelmisto käyttää valitun värin näyttämiseen.
Kuva 2. CIE 1931 -mallin mukaisen väriavaruuden koko väriskaala RGBA-ledeille.
Värinvalintasovelluksen graafinen käyttöliittymä perustuu CIE 1931 -standardin mukaiseen värikarttaan. CIE 1931 -väriavaruus ilmaisee laajan värivalikoiman kromaattisuuden (X) ja kirkkauden (Y) perusteella. Värikartalle piirretyt punaisen, vihreän ja sinisen ledin väri- ja kirkkaustasot määrittävät kolmion, joka kattaa kaikki mahdolliset värisävyt, jotka voidaan tuottaa kolmen värivalolähteen avulla. Tätä kutsutaan täydeksi väriskaalaksi.
Vieläkin kattavamman värivalikoiman saavuttamiseksi mukaan on liitetty myös meripihkankeltainen ledi. Keltaisen ledin XY-data on myös siirretty CIE 1931 -värikartalle. Tämä data määrittelee toisen kolmion punaisen, keltaisen ja vihreän värin koordinaattien välille. Punaisen, keltaisen ja vihreän sekoittaminen tuottaa kaikki kuvassa 2 esitetyt täyden väriskaalan värit.
Tähän tarkoitukseen käytettävä PC:n graafinen käyttöliittymä tai Android-sovellus toteuttaa värinsekoitusalgoritmin. Sen avulla lasketaan PWM-signaalin pulssisuhteen arvot, jotka tarvitaan halutun värisävyn muodostamiseksi.
Värinvalintasovellus lähettää PWM-arvot Bluetooth-yhteyden kautta. Liitäntämoduuli kykenee kommunikoimaan sellaisten matkapuhelimien ja tietokoneiden kanssa, jotka sisältävät Bluetooth-version 4.0 (tai uudemman) mukaisen lähetin-vastaanottimen.
Moduulia käytetään ensisijaisesti pulssisuhdetietojen vastaanottamiseen isäntälaitteilta, jotka ajavat värinvalintasovellusta. Mikro-ohjaimen ja BLE-moduulin liitäntänastojen väliset kytkennät on esitetty kuvassa 3.
Kuva 3. Tehopihin Bluetooth-moduulin (vas.) ja mikro-ohjaimen väliset liitännät.
Bluetooth-yhteydet
Bluetooth-laitteita on kahdenlaisia: perinteinen Bluetooth ja BLE (Bluetooth Low Energy). BLE-laite voi kommunikoida vain toisen BLE-laitteen tai kaksoismoodilaitteen kanssa, joka yltää sekä perinteiseen että energiapihiin datansiirtoon. Tällöin isäntälaitteen on oltava BLE- tai tuplamoodilaite, jotta se voi kommunikoida RGBA-kortille sijoitetun RN4020-moduulin kanssa.
Moduuli noudattaa Bluetooth-ydinversion 4.1 määrityksiä, ja käyttäjä ohjaa sen toimintaa tulo- ja lähtölinjojen sekä UART-liitännän kautta. UART tukee ASCII-komentoja, joilla ohjataan tai konfiguroidaan moduuli toimimaan käyttösovelluksen kaikkien vaatimusten mukaisesti.
Sovellusohjelmisto
Kun kortti toimii kakkosmoodissa, ledivalon haluttu väri valitaan värinvalintasovelluksen värikartalta joko RGBA-värinsekoituksesta vastaavalla tietokoneella tai Android-sovelluksella. Sovellus laskee punaista, sinistä, vihreää ja keltaista väriä vastaavat PWM-pulssisuhteen arvot. Lukemat siirretään kortille BLE-liitännän kautta.
Tietokoneen sovellus kehitettiin käyttäen Visual Studio C#.NET -kehitysympäristöä. Sovellus noudattaa ohjelmistoarkkitehtuuriltaan malli-näkymä-ohjain- eli MVC-rakennetta (Model-View-Controller) perustuen useisiin eri malliluokkiin.
RGBA-näkymä-ohjain toimii graafisena käyttöliittymänä (GUI) tai näkymän ja sovelluksen ohjaimena. Tämä malliluokka on ylimpänä hierarkiassa ja vastaa eri luokkiin kuuluvien uusien kohteiden muodostamisesta sekä niiden keskinäisten riippuvuuksien lisäämisestä. Se käsittelee myös kaikki graafisen käyttöliittymän tapahtumat ja kutsuu aina kuhunkin tilanteeseen sopivia menetelmiä.
RGBA-laskelmien mallin tehtävänä puolestaan on selvittää, onko valittu piste RGB- tai RGA-kolmion sisä- vai ulkopuolella sekä laskea kunkin ledin tuottamaa värivaloa vastaavat pulssisuhdelukemat.
3x3-matriisin mallin tehtävänä on toteuttaa kaikki tarvittavat matriisilaskennan operaatiot kuten matriisin kääntö, determinantti, transponointi, kofaktori ja kertolasku. Vektori 3 -malli puolestaan muodostaa 3-kokoisen sarakevektorin, jota käytetään 3x3-matriisin mallin suorittamissa matriisilaskennan operaatioissa. RGBA-datamallin tehtävänä taas on varastoida tiedot kaikkien värisävyjen pulssisuhdelukemista.
Langattoman viestinnän kääreluokan (wrapper) rajapinta sisältää kaikki tarvittavat menetelmät langattoman viestinnän toteuttamiseksi RGBA-sovelluksessa. Tätä rajapintaa voidaan soveltaa mihin tahansa langattomaan viestintämenetelmään kuten perinteiseen Bluetoothiin tai sen energiapihiin LE-versioon. BLE-viestintä suoritetaan käyttäen RN4020 PICtail -korttia RS232-muotoiseen datansiirtoon ottamalla tämä rajapinta käyttöön RGBA-korttia varten.
Ohjelmoija voi muodostaa uuden malliluokan langattoman viestinnän toteuttamiseksi Visual Studioon tai kolmansien osapuolten kirjastoihin sisäänrakennettujen BLE-kirjastojen kautta. Tämä rajapinta erottaa tiedonsiirron toteutuksen varsinaisesta ohjaimesta, joten jos uusi tietoliikennemuoto otetaan käyttöön, näkymä-ohjain ja muut malliluokat eivät muutu.
RN4020-lohkon kautta kulkevan RGBA BLE -tietoliikenteen malli toteuttaa langattoman viestinnän kääreluokan rajapinnan BLE-dataliikenteelle RGBA-kortin kanssa. PICtail-korttia käytetään tietokoneella UART- tai RS232-liitännän kautta. Sarjamuotoinen liikenne muodostetaan ja käskyt lähetetään BLE-protokollan mukaisena datansiirtona.
BLE-laiteinformaation malli tallentaa etäyhteydellä kytketyn laitteen perustiedot: nimen, osoitteen ja tuetun palvelintyypin. Näitä tietoja käytetään etäyhteyden tunnistamiseen ja muodostamiseen.
Hakutulosten valtuutuksen malli palvelee BLE-luokan tapahtumaa, kun se lopettaa laitteiden etsimisen ja kaikki laitteet ovat käyttäjän nähtävissä listan muodossa. Hakutoiminnon tarvitsema aika on kymmenen sekuntia.
Yhteystilan vaihdon valtuutuksen malli puolestaan palvelee BLE-luokan tapahtumaa, joka määrittää, onko isäntänä toimiva PICtail-kortti kytketty etälaitteeseen vai ei. Lisäksi se näyttää nykyisen yhteystilan käyttäjälle.
Vakioiden malli taas tallentaa kaikki sovellukseen tarvittavat vakiot kuten RN4020-moduulin komennot ja vastaukset, palvelut, erityiset UUID-tunnisteet jne.
Android-käyttöjärjestelmän Java-sovellusten malli seuraa sekin tarkasti MVC-ohjelmistoarkkitehtuurin periaatteita käyttämällä Android-toimintojen malliluokkia, jotka ovat rakenteeltaan samanlaisia kuin työpöytäsovelluksessa.
Android-sovellus hyödyntää kuitenkin älypuhelimen sisäisiä BLE-piirejä. Android-käyttöjärjestelmä tarjoaa kaikki tarvittavat kirjastot BLE-viestintää varten kaikkine tapahtumineen ja takaisinkutsuineen.
RGBA-näkymän toiminnan malli on samankaltainen kuin tietokoneen näkymä-ohjain, paitsi graafisen käyttöliittymän ohjainten osalta, jotka on määritetty XML-tiedostossa malliluokan sijasta.
Lisätietoja saatavissa alkuperäisestä sovellusohjeesta:
http://ww1.microchip.com/downloads/en/AppNotes/00002026A.pdf