Skip to main content

Keverés és egy kis matek

Megjelent: 2018. július 18.

Microchip lidVezetékmentes kommunikációval vezérelt színkeverés

Egy komponenseivel leírt szín mikroszámítógéppel vezérelt „kikeverése” nem újdonság. A Microchip alkalmazástechnikai mérnöke az alábbi cikkben ennek az alkalmazásnak a Bluetooth Low Energy (BLE) vezetékmentes kommunikációjával kiegészítve ad sajátos felhasználási lehetőséget, különös hangsúllyal a vezetékmentesen kommunikáló távoli vezérlőegységben futó alkalmazás strukturális sajátosságaira.

 

 

Bevezetés

Egy színes ledekből álló fényforrás színe pontosan szabályozható egy nyolcbites mikrovezérlővel, és vezetékmentesen távvezérelhető egy Bluetooth® 4.1 Low Energy modul segítségével egy négyszínű, vörös, zöld, kék és alfa (RGBA) színtérben. Erre az alkalmazásra készült demonstrációs kártyát mutatunk be a cikkben.

 

A demonstrációs kártya

Az 1. ábrán látható felépítésű demonstrációs kártyán négy led van: egy vörös, egy zöld, egy kék és egy borostyánsárga. Ezeknek a ledeknek a fényáramát a rajtuk átfolyó áram impulzusszélesség-modulációjával (Pulse Width Modulation – PWM), az áramerősség kitöltési tényezőjét változtatva vezéreljük.

Ez – egyebek közt – a Microchip PIC16F1579 mikrovezérlőjével is elérhető, mivel ez a típus négy, tizenhat bit felbontású PWM-egységet is magában foglal, amelyekkel a ledek átlagárama is vezérelhető. A 16 bites PWM elegendően nagy pontossággal biztosítja a hozzájuk rendelt színes ledek fényintenzitásának vezérlését, és az RGBA fényintenzitásszintek keverésével az eredő színek gazdag választékát állíthatjuk elő.
Az mTouch® kapacitív érintésvezérlési technológia két kapacitív, érintésvezérelt csúszka egyidejű működtetését teszi lehetővé. A kártyára integrált RN4020 Bluetooth-modul feladata azoknak az üzeneteknek a vétele, amelyek a színkomponenseket meghatározó PWM-értékeket veszik át a Bluetooth Low Energy kommunikáción keresztül az Android™ mobilalkalmazásból vagy asztali PC-n futó programból. A kártya tápellátását egy 1,5 V-os, AAA-méretű szárazelem adja.

 

ME 2018 7 8 Microchip RGBA BLE 1

1.ábra Az RGBA színkeverésre alkalmas demonstrációs kártya felépítése

 

Világítástechnikai megfontolások

Annak a fénynek a tulajdonságait, amit egy led kibocsát, különféle tényezők határozzák meg. A lumenekben mért fényáram különböző ledtípusoknál (azonos áramköri környezet mellett is – A ford. megj.) különböző nagyságú lehet, de különbség mutatkozhat ugyanazon ledtípus különböző példányai között is. Színes ledeknél a kibocsátott fény színkomponensekben kifejezett színe is különbözhet különféle ledpéldányok esetén.
Egyetlen kiválasztott ledtípusból származó kis mintát vizsgáltunk végig, hogy egy fényáram- és színspektrumprofilt állítsunk fel. Ezeket az értékeket azután tipikus értékekként használtuk fel a hardvertervezésnél, valamint a szoftver színtani számításainál. Ezt a folyamatot színtani behangolásnak neveztük.
Fix ellenállásértékeket választottunk, így mindegyik különböző színű led azonos fényáramot állított elő. A ledekkel soros ellenállásokat a következőképpen választottuk meg: vörös led:820 Ω, kék led: 400 Ω, zöld led: 500 Ω és a borostyánsárga led: 500 Ω.

 

MCA723 eyecatcher

 

Működésmódok

Két működésmódot különböztetünk meg: az első a fehértartalommal kiegészített „szín–színtelítettség” (Hue–Saturation–White – HSVW) kézi színbeállítási üzemmódja, a másik a Bluetooth Low Energy kommunikáción keresztül megvalósított színspecifikáció-választás a szín–színtelítettség adatainak numerikus megadásával.

 

Manuális üzemmód

A kártya bekapcsoláskor az elsőként leírt manuális beállítási üzemmód áll rendelkezésre. A kártyán két kapacitív, érintésvezérelt csúszkaszabályozó foglal helyet; az egyikkel a színbemenetet, a másikkal a fényintenzitás szintjét lehet beállítani.
Ha a manuális beállítási üzemmódban megérintjük az első csúszkát, a ledek által kibocsátott fény keverékeként a csúszkák által kiválasztott szín jelenik meg. A kiválasztott szín mindaddig megmarad, míg újabb bemenet nem érkezik az eszközre. A kiválasztott szín fényintenzitását hasonlóképpen lehet beállítani a másik csúszkával.

 

ME 2018 7 8 Microchip RGBA BLE 3

2. ábra A CIE 1931 színtér az RGBA-kártya ledjei által előállítható színtartománnyal

 

Vezetékmentesen távvezérelt üzemmód

A másik üzemmódban a színkomponensértékeknek megfelelő PWM-adatokat egy Android-alapú mobilalkalmazás vagy egy Windows-alapú PC-alkalmazás segítségével választjuk ki.
A PWM-értékek ezután Bluetooth-kapcsolaton keresztül jutnak el a demonstrációs kártyához. Az alkalmazás a 2. ábrán látható, CIE 1931 szabvány szerinti, XY-színdiagramot használja.
A színsík kívánt pontjának kiválasztása után az alkalmazás számítja ki a szín- és világosságparamétereket, amelyeket a Bluetooth-kommunikáció továbbít az RGBA-kártyához. A kártya Bluetooth-modulja veszi ezeket a PWM-értékeket, amelyeket az RGBA-kártya firmware-je használ fel a kiválasztott szín megjelenítéséhez.
A színkiválasztó alkalmazás grafikus felhasználói interfésze (Graphical User Interface – GUI) tartalmazza a CIE 1931 XY-színdiagramot. Ez a színpaletta a színesség (X) és a világosság (Y) paramétereinek megadásával tesz kiválaszthatóvá egyet a színek széles választékából. A színdiagramon a vörös, zöld és kék ledek színének és fényességének megfelelő pontok egy háromszöget határoznak meg, amely az összes színt magába foglalja, amit a három led segítségével egyáltalán elő lehet állítani. E háromszöget – illetve a benne foglalt színek összességét – nevezzük az RGB-fényforrás színválasztékának (color gamut).
Ahhoz, hogy ennél a háromszögnél nagyobb színtartományt tehessünk megjeleníthetővé, egy negyedik, borostyánsárga (amber) színű ledet is beépítettünk, és a színének megfelelő pontot a CIE 1931 XY-színdiagramra is felvittük. A vörös, a borostyánsárga és a zöld ledek fényének keverésével a megjeleníthető színpaletta tovább bővül, ugyanis egy másik háromszöget is definiálhatunk, amelynek csúcsait a színpalettán a vörös, a borostyánsárga és a zöld ledek fényének megfelelő pontok alkotják (lásd a 2. ábrán).
Ebben az üzemmódban a PC-n futó GUI vagy a telefon Android alkalmazása valósítja meg a színkeverő algoritmus futtatását, amely kiszámítja, hogy a kívánt szín előállításához az egyes ledekhez tartozó kimeneten milyen PWM-értékre van szükség.
A színkiválasztó alkalmazás Bluetooth-kommunikációval küldi tovább a kiszámított PWM-értékeket. Ez a kapcsolattartó modul bármely telefonnal vagy PC-vel kommunikálhat, amely Bluetooth 4.0 (vagy magasabb verziószámú) adó-vevőegységgel rendelkezik. A modul elsősorban arra szolgál, hogy vegye a PWM-modulokon beállítandó kitöltési tényezőértékeket abból a vezérlőeszközből, amely a színkiválasztó alkalmazást futtatja.
A mikrovezérlő és a Bluetooth Low Energy modul között szükséges vezetékösszeköttetéseket a 3. ábra mutatja.

 

MCA723 Fig3

3. ábra Interfész a Bluetooth Low Energy modul (balra) és a mikrovezérlő között

 

A Bluetooth-kommunikáció két formája

A Bluetooth-eszközöknek két típusa létezik: a klasszikus Bluetooth és a Bluetooth Low Energy (BLE). Egy Bluetooth Low Energy eszköz csak egy másik BLE- vagy egy mindkét (klasszikus és Low Energy) üzemmódra alkalmas eszközzel képes együttműködni. Így tehát a hoszt master eszköznek BLE- vagy kettős üzemmódú képességgel kell rendelkeznie ahhoz, hogy kommunikálni tudjon az RGBA-kártyára épített RN4020 modullal. Ez a modul megfelel a Bluetooth v4.1 specifikációnak, és a felhasználó a mikrovezérlő be- és kimeneti vezetékein, illetve egy aszinkron soros (UART) interfészen keresztül képes kommunikálni vele. Az UART kezeli azokat a karakteres (ASCII) parancsokat, amelyek a modult vezérlik vagy konfigurálják az alkalmazásból érkező bármely igény esetén.

 

A szoftveralkalmazás

Amikor a kártya a második – vezetékmentesen távirányított – üzemmódban működik, a ledek fényéből kikevert kívánt színt akár asztali PC-s (Windows), akár Android-környezetben futó RGBA színkeverő alkalmazásba épített, kétdimenziós színpalettából választhatjuk ki. A vörös, a kék, a zöld és a borostyánsárga ledek vezérléséhez szükséges PWM kitöltési tényező értékeit az alkalmazás számítja ki, amelyeket a Bluetooth Low Energy kommunikció továbbít a kártya processzorának. Az asztali alkalmazást a Visual Studio C#.NET környezetben fejlesztettük. Az alkalmazásfejlesztés során az MVC-elvet követtük, különféle objektumosztályok felhasználásával. Az alábbiakban röviden jellemezzük ezeket az objektumosztályokat.
Az RGBA „látványvezérlő” objektumosztály grafikus felhasználói interfészként vagy „látványvezérlő” modulként szolgálja ki az alkalmazásvezérlő modult. Ez az osztály áll annak a hierarchiának a csúcsán, amely új osztályok létrehozásáért felelős, és laza függőségi viszonyokat létesít az objektumosztályok között (dependency injection). Ezenkívül kezeli a grafikus felhasználói interfész (GUI) eseményeit és a megfelelő metódusok hívását.
Az RGBA számítási osztály felelős a kiválasztott pont meghatározásáért, legyen az akár az RGB, akár az RGA háromszög belsejében, és színenként kiszámítja a PWM kitöltési tényezők értékét az összes ledmeghajtó kimenet számára.
A 3 × 3-as mátrixosztály megvalósítja a 3 × 3-as mátrixokon értelmezett összes szükséges mátrixműveletet, mint a mátrix inverzének, determinánsának, előjeles aldeterminánsainak, valamint a mátrixok szorzatának kiszámítása. A Vector3 osztály egy háromelemű oszlopvektort állít elő a 3 × 3-as mátrix osztály számára. Az RGBA adatosztály egy egyedi adattípus, amely letárolja az összes színhez tartozó kitöltési tényezőt.
A vezetékmentes kommunikációhoz szükséges objektumokat „beburkoló” osztályban az interfész tartalmazza az összes metódust, amelyre az RGBA-alkalmazásban használt vezetékmentes kommunikáció lebonyolításához szükség van. Ez az interfész bármilyen vezetékmentes kommunikációhoz használható, beleértve a Bluetoooth Low Energy és a Bluetooth classic protokollokat is.
Az RGBA kártya és a vezérlőszámítógép (PC vagy mobileszköz) közötti Bluetooth Low Energy kommunikáció lebonyolítására az RN4020 PICtail™ kártyát használjuk az RS343 kommunikációs protokoll szerint.
A programozó megteheti, hogy új objektumosztályt hoz létre a vezetékmentes kommunikációnak a Visual Studio-ba vagy más, harmadik féltől származó könyvtárba beépített könyvtárak bővítésére. Ez az interfész leválasztja a kommunikáció megvalósítását a valódi vezérlőfunkcióktól, így tehát, ha a Bluetooth Low Energy helyett más kommunikációs módszer használata válik szükségessé, az a „látványvezérlő” és más osztályok megváltoztatása nélkül lehetséges.
Az RN4020 eszközvezérlő objektumosztály által megvalósított RGBA Bluetooth Low Energy kommunikáció valósítja meg a vezetékmentes kommunikáció „burkoló” interfészét a Bluetooth Low Energy kommunikáció révén az RGBA kártyával. Erre – a PC-hez való illesztéshez – a PICtail kártyát használjuk, amelyhez az UART vagy RS232 porton keresztül kapcsolódik. A soros kommunikáció létrehozása és az azon át történő parancstovábbítás azután „fizikai szinten” a Bluetooth Low Enegy kommunikációs protokollon megy végbe.
A Bluetooth Low Energy eszközinformációs osztály tárolja az alapinformációkat a kapcsolat távoli végén működő eszközről – nevét, címét és a támogatott szerverszolgáltatásokat. Ez az információ a távoli eszköz azonosítását és a csatlakozás létesítését szolgálja.
A keresési eredményeket kezelő „meghatalmazott” osztályban a meghatalmazott szolgálja ki a Bluetooth Low Energy osztályból érkező eseményeket, amikor befejezte az eszközök keresését, és azok egy lista formájában a felhasználó rendelkezésére állnak. A keresési művelethez szükséges idő 10 másodperc.
A csatlakozási állapot megváltoztatásához szükséges meghatalmazott osztállyal a meghatalmazott szolgálja ki a Bluetooth Low Energy osztályból érkező eseményeket, amelyekből meghatározhatja, hogy a master PICtail kártya kapcsolatba lépett-e a távoli készülékkel vagy nem, és megjeleníti annak aktuális állapotát a felhasználó számára.
A konstansok osztálya tárolja mindazokat az állandó értékeket, amelyekre az alkalmazásnak szüksége van, mint például az RN4020 modul parancsait és válaszait, szolgáltatásait, jellemző azonosító adatait (UUID3) stb.
Az Android operációs rendszer Java™ alkalmazásosztálya olyan szorosan követi az MVC-elvet, amennyire csak lehetséges, ezért az Android aktivitási osztályok szerkezetileg igen hasonlóak az asztali alkalmazási környezethez. Az Android alkalmazás viszont az Android-alapú mobileszközbe beépített Bluetooth Low Energy hardvert használja. Az Android operációs rendszer szolgáltatja ehhez az összes szükséges könyvtárat, amelyek a Bluetooth Low Energy kommunikációhoz szükségesek, az összes szükséges eseménnyel és válasszal együtt.
Az RGBA megjelenítés tevékenységosztálya hasonló az asztali alkalmazáshoz tartozó megjelenítési osztályhoz azzal a különbséggel, hogy a GUI vezérlések az objektumosztályok helyett XML fájlokban vannak definiálva.

 

Összefoglalás

A cikk bemutatta, hogyan lehet ledek fényintenzitását pontosan vezérelni 16 bites PWM-csatornák felhasználásával. Az RGBA ledek színkeverésére képes kártya alkalmas arra, hogy a felhasználó a szín és az intenzitás vezérlését kapacitív érintésvezérelt csúszkákkal befolyásolja. Ugyanez egy Bluetooth 4.1 Low Energy modullal megvalósított kommunikáción keresztül is lehetséges, amelyeken át a felhasználó PWM kitöltési tényező értékeket továbbíthat a modulba a kívánt szín megjelenítéséhez. A kívánt szín kiválasztására Windows-alapú asztali környezetben vagy Android-alapú okostelefonon futó alkalmazás használható.

 

További információ

Az eredeti alkalmazástechnikai jegyzet itt található: http://ww1.microchip.com/downloads/en/AppNotes/00002026A.pdf

 

Szerző: Namrata Dalvi – Microchip Technology

 

www.microchip.com

 

még több Microchip