新聞中心

EEPW首頁 > 專題 > 混合與數(shù)學(xué):一種使用Bluetooth?低功耗通信實(shí)現(xiàn)RGBA混色的方法

混合與數(shù)學(xué):一種使用Bluetooth?低功耗通信實(shí)現(xiàn)RGBA混色的方法

—— 混合與數(shù)學(xué) 一種使用Bluetooth?低功耗通信實(shí)現(xiàn)RGBA混色的方法
作者:Swathi Sridhar Namrata Dalvi 時間:2018-10-25 來源:電子產(chǎn)品世界 收藏
編者按:本文說明了如何使用16位PWM精確控制每個LED亮度。它還使用Bluetooth 4.1低功耗模塊來進(jìn)行通信,因此用戶可向RGBA板發(fā)送PWM值以輸出所需顏色。

作者 / Swathi Sridhar Namrata Dalvi Technology Inc.資深應(yīng)用工程師

本文引用地址:http://m.butianyuan.cn/article/201810/393363.htm

摘要:本文說明了如何使用每個LED亮度。它還使用Bluetooth 4.1低功耗模塊來進(jìn)行通信,因此用戶可向RGBA板發(fā)送PWM值以輸出所需顏色。

  使用8位單片機(jī)和Bluetooth? 4.1低功耗模塊來控制紅色、綠色、藍(lán)色和alpha(RGBA)顏色空間,從而以無線方式精確控制發(fā)光二極管(LED)的顏色平衡。

  圖1給出的演示板有四個LED——分別為紅色、綠色、藍(lán)色和琥珀色。通過脈沖寬度調(diào)制(PWM)占空比控制各個LED的亮度。

  這可以通過的PIC16F1579單片機(jī)實(shí)現(xiàn),該單片機(jī)具有四個用于驅(qū)動LED的16位PWM。這些16位PWM可精確控制各色LED的強(qiáng)度,還能通過混合不同亮度的RGBA呈現(xiàn)不同的顏色。

  使用mTouch?電容式觸摸傳感技術(shù)可操作兩個電容式觸摸滑動條。板上RN4020藍(lán)牙模塊用于通過Bluetooth低功耗通信從Android?移動應(yīng)用程序或桌面程序接收PWM值。演示板通過1.5V AAA電池供電。

1 照明

  LED產(chǎn)生的光會因多種因素發(fā)生變化。不同類型的LED以及相同類型的各個LED的亮度(以流明為單位測得)都有所不同。對于彩色LED,根據(jù)色度值測得的特定顏色因LED而異。

  我們對少量特定品牌LED的樣本進(jìn)行了測量以開發(fā)亮度和色度配置文件。隨后會在硬件設(shè)計(jì)和軟件色度計(jì)算中將這些值用作典型值。此過程稱為顏色調(diào)節(jié)。

  每種顏色的電阻值是固定的,以便產(chǎn)生相同的流明數(shù)。各個LED串聯(lián)電阻的阻值如下:紅色820Ω、藍(lán)色400Ω、綠色500Ω以及琥珀色500Ω。

2 工作模式

  有兩種工作模式:第一種是色相飽和度值加白色(HSVW)和亮度滑動條模式;第二種是使用藍(lán)牙低功耗的色度選擇器模式。

  電路板在模式1下初次上電。電路板上有兩個電容式觸摸滑動條:一個用于輸入顏色,另一個用于控制亮度。

  如果在滑動條模式下觸摸第一個滑動條,則滑動條上選擇的顏色將在LED上輸出。在接收到另一個輸入之前,將一直顯示所選顏色??梢允褂昧硪粋€滑動條控制特定顏色的亮度。

  對于第二種模式,使用基于Android的移動應(yīng)用程序或基于Windows的桌面應(yīng)用程序選擇顏色值(PWM)。然后通過藍(lán)牙連接將相應(yīng)的PWM值發(fā)送到電路板。應(yīng)用程序使用CIE 1931 XY色度圖,請參見圖2。將計(jì)算所選顏色和亮度的精確PWM值,并通過藍(lán)牙連接發(fā)送到RGBA板。電路板上的藍(lán)牙模塊隨后會接收PWM值,RGBA板固件將使用這些值來顯示所選顏色。

  色度選擇器應(yīng)用程序GUI包含CIE 1931 xy色度圖。CIE 1931顏色空間按色度(x)和亮度(y)顯示各種顏色。映射到CIE顏色空間的紅色、綠色和藍(lán)色LED的顏色和亮度定義了一個三角形,此三角形內(nèi)包含了三個器件的輸出可產(chǎn)生的所有可能的顏色明暗;此三角形稱為色域。

  為獲得更寬的顏色范圍,添加了一個琥珀色LED。琥珀色LED的xy數(shù)據(jù)被映射到CIE 1931 xy顏色空間。這在紅色、琥珀色和綠色坐標(biāo)之間定義了另一個三角形。如果按照不同的比例混合紅色、琥珀色和綠色,我們將獲得圖2中的色域內(nèi)的顏色。

  在該模式下使用的PC GUI和Android應(yīng)用程序通過實(shí)現(xiàn)此混色算法來計(jì)算產(chǎn)生選定顏色所需的PWM占空比值。

  色度選擇器應(yīng)用程序通過藍(lán)牙連接發(fā)送PWM值。此連接模塊將能夠與包含Bluetooth v4.0(及更高版本)收發(fā)器的手機(jī)和PC進(jìn)行通信。此模塊主要用于從運(yùn)行色度選擇器應(yīng)用程序的主設(shè)備接收占空比值。單片機(jī)和BLE模塊之間的引腳連接配置如圖3所示。

3 藍(lán)牙通信

  有兩種類型的藍(lán)牙設(shè)備——藍(lán)牙經(jīng)典和藍(lán)牙低功耗。藍(lán)牙低功耗設(shè)備只能與另一個BLE設(shè)備或同時具備藍(lán)牙經(jīng)典和藍(lán)牙低功耗功能的藍(lán)牙雙模設(shè)備進(jìn)行通信。因此,為了能夠與RGBA板上使用的RN4020模塊進(jìn)行通信,主機(jī)設(shè)備必須是BLE或藍(lán)牙雙模設(shè)備。

  該模塊符合藍(lán)牙核心規(guī)范v4.1并由用戶通過輸入/輸出線和UART接口控制。UART支持ASCII命令,可針對基于應(yīng)用的任何要求控制或配置模塊。

4 應(yīng)用軟件

  電路板工作在模式2下時,所需LED顏色從來自RGBA混色桌面應(yīng)用程序或RGBA混色Android應(yīng)用程序的色度選擇器應(yīng)用程序內(nèi)的色度圖中選擇。紅色、藍(lán)色、綠色和琥珀色PWM占空比通過應(yīng)用程序計(jì)算。占空比值通過藍(lán)牙低功耗連接傳送給電路板。使用的桌面應(yīng)用程序是使用Visual Studio C#.NET開發(fā)的。應(yīng)用程序遵循MVC原則,具有以下幾類:

  RGBA視圖控制器類用作GUI或視圖管理器,也可用作應(yīng)用程序的控制器。該類位于層級頂部,負(fù)責(zé)編譯各類新對象和執(zhí)行依賴注入。此外,它還處理所有GUI事件并調(diào)用相應(yīng)的方法。

  RGBA計(jì)算類負(fù)責(zé)確定選定點(diǎn)處于RGB或RGA三角形的內(nèi)部還是外部,并為所有LED計(jì)算每種顏色的占空比。

  矩陣3x3類實(shí)現(xiàn)了所有3x3矩陣的數(shù)學(xué)運(yùn)算,例如逆矩陣、行列式、轉(zhuǎn)置、余因子和乘法。向量3類實(shí)現(xiàn)了大小為3的列向量,該列向量用于矩陣3x3類的矩陣數(shù)學(xué)運(yùn)算。RGBA數(shù)據(jù)類為自定義數(shù)據(jù)類型,用于存儲所有顏色的占空比值。

  在無線通信包裝類中,該接口包含無線通信要實(shí)現(xiàn)RGBA應(yīng)用所需的全部方法。任何無線通信方法(例如藍(lán)牙低功耗和藍(lán)牙經(jīng)典等)都可以使用該接口。為RGBA板實(shí)現(xiàn)該接口后,使用RN4020 PICtail?卡通過RS232通信即可完成藍(lán)牙低功耗通信。

  編程人員可通過Visual Studio中的內(nèi)置藍(lán)牙低功耗庫或第三方庫編譯新類以實(shí)現(xiàn)無線通信。該接口會將通信的實(shí)現(xiàn)與實(shí)際控制器分離,這樣一來,當(dāng)實(shí)現(xiàn)新的通信時,視圖控制器和其他類不會發(fā)生變化。

  采用RN4020器件類的RGBA藍(lán)牙低功耗通信實(shí)現(xiàn)了無線通信包裝接口,可與RGBA板進(jìn)行藍(lán)牙低功耗通信。使用PICtailTM卡,并通過UART或RS232端口將其連接至PC。建立串行通信并發(fā)送命令以實(shí)現(xiàn)藍(lán)牙低功耗通信。

  藍(lán)牙低功耗設(shè)備信息類存儲有關(guān)遠(yuǎn)程連接設(shè)備的基本信息(即,名稱、地址和支持的服務(wù)器服務(wù))。這些信息用于識別和連接遠(yuǎn)程設(shè)備。

  在搜索結(jié)果委托類中,該委托在結(jié)束設(shè)備搜索且設(shè)備可以列表形式供用戶選用時處理來自藍(lán)牙低功耗類的事件。搜索操作需要十秒鐘時間。

  在連接狀態(tài)變化委托類中,該委托處理來自藍(lán)牙低功耗類的事件,用于確定主PICtailTM卡是否已連接至遠(yuǎn)程設(shè)備,并為用戶顯示當(dāng)前連接狀態(tài)。

  常量類存儲應(yīng)用程序所需的所有常量,例如RN4020模塊命令和響應(yīng)、服務(wù)以及特性UUID等。Android操作系統(tǒng)的Java?應(yīng)用程序類同樣嚴(yán)格遵循MVC原則,采用與桌面應(yīng)用程序結(jié)構(gòu)類似的Android活動類。但是,Android應(yīng)用程序使用Android手機(jī)的內(nèi)置藍(lán)牙低功耗硬件。Android操作系統(tǒng)通過所有必需事件和回調(diào)為藍(lán)牙低功耗通信提供所有必要的庫。RGBA視圖活動類與桌面上的視圖控制器類相似,只是GUI控件在XML文件(而非類)中定義。

5 結(jié)論

  本文章說明了如何使用每個LED的亮度。文中介紹的RGBA LED混色板具有電容式觸摸滑動條按鈕,可實(shí)現(xiàn)顏色輸入和亮度控制功能。它還使用Bluetooth 4.1低功耗模塊來進(jìn)行通信,因此用戶可向RGBA板發(fā)送PWM值以輸出所需顏色。顏色在Windows桌面或Android手機(jī)上的色度選擇器應(yīng)用程序中選擇。

  參考文獻(xiàn):

[1]Sridhar S,Tiwari A,Dalvi N. RGBA Color Mixing with Bluetooth? Low Energy Communication[R/OL].http://ww1.microchip.com/downloads/en/AppNotes/00002026A.pdf

  本文來源于《電子產(chǎn)品世界》2018年第11期第21頁,歡迎您寫論文時引用,并注明出處。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉