中南覆鸥人力资源有限公司

你的位置:首頁 > 光電顯示 > 正文

通過藍(lán)牙控制RGB LED顏色

發(fā)布時(shí)間:2022-01-29 來源:Dialog 責(zé)任編輯:wenwei

【導(dǎo)讀】智能燈越來越受歡迎,并且正在穩(wěn)步成為智能家居的關(guān)鍵部分。智能燈使用戶能夠通過智能手機(jī)上的應(yīng)用程序控制燈光,可以在APP界面打開和關(guān)閉燈,也可以調(diào)節(jié)顏色。在本文中,我們將介紹一個如何實(shí)現(xiàn)智能燈控制器的項(xiàng)目,可以手動按鈕或用移動APP通過藍(lán)牙進(jìn)行控制。為了給這個項(xiàng)目增加一些特色,我們添加了一些功能,允許用戶從APP界面中包含的顏色列表中選擇照明顏色。還可以激活“自動混合”以產(chǎn)生彩色效果,也可以每半秒改變一次燈光。用戶可以使用PWM功能創(chuàng)建自己的顏色混合,該功能也可以用作三種基本顏色(紅色、綠色、藍(lán)色)的調(diào)光器。我們還在電路中添加了外部按鈕,以便用戶可以切換到手動模式并通過外部按鈕調(diào)換燈光顏色。


本文由兩部分組成:GreenPAK?設(shè)計(jì)和安卓應(yīng)用程序設(shè)計(jì)。GreenPAK設(shè)計(jì)基于使用UART接口進(jìn)行通信。選擇UART是因?yàn)榇蠖鄶?shù)藍(lán)牙模塊以及大多數(shù)其他外設(shè)(例如Wi-Fi模塊)都支持它。 因此,GreenPAK設(shè)計(jì)可用于多種連接類型。


為了創(chuàng)建這個項(xiàng)目,我們將使用SLG46620 GreenPAK IC、一個藍(lán)牙模塊和一個RGB LED。


GreenPAK IC將是該項(xiàng)目的控制核心:它從藍(lán)牙模塊和/或外部按鈕接收數(shù)據(jù),然后開始所需的程序來顯示正確的照明。它還生成PWM信號并將其輸出到LED。下面的圖1展示了功能框圖。


1.png

圖1:框圖


該項(xiàng)目中使用的GreenPAK器件在單顆IC中包含了一個SPI連接接口、PWM功能塊、FSM和許多其他有用的附加功能塊。它還具有體積小、能耗低的特點(diǎn)。這使得制造商能用單個IC構(gòu)建小型實(shí)用電路,從而降低生產(chǎn)成本。


在這個項(xiàng)目中,我們將控制一個RGB LED。為了使該項(xiàng)目具有商用可行性,系統(tǒng)可能需要通過并聯(lián)多個LED并使用適當(dāng)?shù)木w管來提高亮度等級;電源電路也需要考慮。我們對該項(xiàng)目完成了實(shí)現(xiàn)和檢驗(yàn)。


GreenPAK設(shè)計(jì)


在GreenPAK Designer軟件中實(shí)現(xiàn)的設(shè)計(jì)由UART接收器、PWM單元和控制單元組成(完整的設(shè)計(jì)文件可從以下鏈接下載)。


https://www.dialog-semiconductor.com/sites/default/files/an-cm-273_gp.zip


a) UART接收器


首先,我們需要設(shè)置藍(lán)牙模塊。大多數(shù)藍(lán)牙IC支持UART協(xié)議進(jìn)行通信。UART是通用異步收發(fā)傳輸器,可以將數(shù)據(jù)在并行和串行格式之間相互轉(zhuǎn)換。它包括一個串行到并行接收器,和一個并行到串行轉(zhuǎn)換器,它們都單獨(dú)計(jì)時(shí)。


藍(lán)牙模塊中接收到的數(shù)據(jù)將傳輸?shù)紾reenPAK器件。Pin10的空閑狀態(tài)為高(HIGH)。發(fā)送的每個字符都以邏輯“低起始位(Low Start bit)”開頭,然后是可配置數(shù)量的數(shù)據(jù)位(bit)和一個或多個邏輯“高停止位(High Stop bit)”。


UART發(fā)送器發(fā)送1個低起始位(Low Start bit)、8個數(shù)據(jù)位(bit)和1個高停止位(High Stop bit)。通常,藍(lán)牙模塊的UART默認(rèn)波特率為9600。我們將從藍(lán)牙IC發(fā)送數(shù)據(jù)字節(jié)到GreenPAK。


由于GreenPAK SPI功能塊沒有低起始位(Low Start bit)或高停止位(High Stop bit)控制,我們將使用這些位(bit)來啟用和禁用SPI時(shí)鐘信號(SCLK)。當(dāng)Pin10變低(LOW)時(shí),我們知道我們收到了一個低起始位(Low Start bit),因此我們使用GreenPAK 內(nèi)部的PDLY配置為下降沿檢測器來識別通信的開始。該下降沿檢測器為GreenPAK 內(nèi)部的DFF0提供觸發(fā)時(shí)鐘,從而啟用SCLK信號為GreenPAK SPI功能塊提供時(shí)鐘。


我們將波特率設(shè)定為每秒9600 bit/s,對應(yīng)SCLK周期為1/9600 = 104 μs。因此我們將OSC頻率設(shè)置為2MHz,并使用GreenPAK內(nèi)部的CNT0配置為分頻器。為了使接收到的時(shí)鐘周期是104 μs,需要將CNT0計(jì)數(shù)值設(shè)定為2818。


參照圖2中GreenPAK內(nèi)部的可配置單元圖示,為了確保不丟失任何數(shù)據(jù),我們需要將SPI時(shí)鐘延遲半個時(shí)鐘周期,以便SPI功能塊在正確的時(shí)間被計(jì)時(shí)。我們通過使用CNT6、2-bit LUT1和OSC功能塊的外部時(shí)鐘來實(shí)現(xiàn)這一點(diǎn)。CNT6的輸出直到DFF0被計(jì)時(shí)后52 μs才會變高,是該SPI的SCLK周期104 μs的一半。當(dāng)CNT6為高(HIGH)的時(shí)侯,配置為與門的2-bit LUT1允許時(shí)鐘信號(CLK Begin)進(jìn)入OSC 的EXT. CLK0輸入,其輸出時(shí)鐘信號連接到CNT0的CLK端子。


1640177638723881.png

圖2:系統(tǒng)電路框圖


b) PWM功能單元


參照圖3中GreenPAK內(nèi)部的可配置單元圖示,PWM信號是使用PWM0和相應(yīng)時(shí)鐘脈沖發(fā)生器(CNT8/DLY8)生成的。由于脈沖寬度是用戶可控的,我們使用FSM0(可以連接到PWM0)來統(tǒng)計(jì)用戶數(shù)據(jù)。


在SLG46620中,8-bit FSM1可以與PWM1和PWM2結(jié)合使用。需要連接藍(lán)牙模塊,即必須使用SPI并行輸出模塊。SPI并行輸出模塊的bit 0~7與DCMP1、DMCP2和LF OSC CLK的OUT1和OUT0組合。PWM0從16-bit FSM0獲得其輸出。如果不改變,這會導(dǎo)致脈沖寬度過載。為了將計(jì)數(shù)器值限制在8位(bits),我們添加了另一個FSM:FSM1用作提示計(jì)數(shù)器達(dá)到0或255的提示器。FSM0用于生成 PWM脈沖,因此FSM0和FSM1必須同步。由于兩個FSM都有預(yù)設(shè)的時(shí)鐘選項(xiàng),因此CNT1和CNT3用作將CLK傳遞給兩個FSM的中間分頻媒介。這兩個計(jì)數(shù)器設(shè)置為相同的值,在本文中為25。我們可以通過改變這些計(jì)數(shù)器值來改變PWM值的變化率。


FSM的值由來自SPI并行輸出模塊的信號“+”和“-”來增加和減少。


1640177622974875.png

圖3:PWM單元設(shè)計(jì)


c) 控制單元


參照圖4中GreenPAK內(nèi)部的可配置單元圖示,在控制單元內(nèi),接收到的字節(jié)是從藍(lán)牙模塊獲取到SPI并行輸出,然后傳遞給相關(guān)的功能模塊。首先,將檢查PWM CS1和PWM CS2輸出,查看PWM模式是否被激活。如果它被激活,它將決定通過LUT4、LUT6和LUT7中的哪個通道輸出PWM。


LUT9、LUT11和LUT14負(fù)責(zé)檢查其他兩個LED的狀態(tài)。LUT10、LUT12和LUT13檢查手動按鈕是否被激活。如果手動模式處于開啟狀態(tài),則RGB將根據(jù)D0、D1、D2輸出狀態(tài)運(yùn)行,每次按下顏色按鈕時(shí),這些輸出狀態(tài)會改變。它隨著來自CNT7的上升沿而變化,CNT7用作上升沿信號的去抖動功能。


Pin 20配置為輸入,用于在手動控制模式和藍(lán)牙控制模式之間切換。


如果禁用手動模式并開啟自動混合模式,則顏色每500毫秒改變一次,上升沿來自CNT7。4-bit LUT1 用于防止D0 D1 D2處于“000”狀態(tài),因?yàn)樵摖顟B(tài)會導(dǎo)致燈在自動混合模式時(shí)關(guān)閉。


如果手動模式、PWM模式和自動混合模式未啟用,則紅色、綠色和藍(lán)色SPI命令流向引腳12、13和14,這些引腳配置為輸出,并連接到外部RGB LED。


1640177607726712.png

圖4:系統(tǒng)電路框圖


DFF6、DFF7和DFF8用于構(gòu)建3-bit二進(jìn)制計(jì)數(shù)器。計(jì)數(shù)器值隨著CNT7脈沖增加,并在MUXs' (GreenPAK邏輯單元LUT10、LUT12、LUT13)的輸入端產(chǎn)生不同的D0,D1,D2邏輯組合。


安卓應(yīng)用程序


在本節(jié)中,我們將創(chuàng)建一個安卓應(yīng)用程序,它將監(jiān)測和顯示用戶的控件選擇。界面由兩部分組成:第一部分包含一組具有預(yù)定義顏色的按鈕,因此當(dāng)按下這些按鈕中的任意一個時(shí),相應(yīng)顏色的LED會亮起。第二部分(MIX方塊)為用戶創(chuàng)建混合顏色。


在第一部分,用戶選擇他們希望PWM信號通過的LED引腳;PWM信號一次只能傳遞到一個引腳。下面的列表在PWM模式期間邏輯地控制其他兩種顏色的開/關(guān)。


自動混合按鈕負(fù)責(zé)運(yùn)行自動換燈光模式,每半秒換一次燈光。MIX部分包含兩個復(fù)選框列表,用戶可以決定將哪兩種顏色混合在一起。


我們使用MIT App Inventor網(wǎng)站創(chuàng)建了該應(yīng)用程序。該網(wǎng)站允許用戶在沒有任何軟件經(jīng)驗(yàn)的情況下,使用圖形軟件塊創(chuàng)建安卓應(yīng)用程序。


我們最初設(shè)計(jì)的圖形界面添加了一組負(fù)責(zé)顯示預(yù)定義顏色的按鈕,我們還添加了兩個復(fù)選框列表,每個列表有3個元素;每個元素都在其單獨(dú)的框中顯示,如圖5所示。


5.png

圖5:App界面


用戶界面中的按鈕與軟件命令相關(guān)聯(lián):應(yīng)用程序通過藍(lán)牙發(fā)送的所有命令都是以字節(jié)格式,每一個bit負(fù)責(zé)特定的功能。


表1顯示了發(fā)送到GreenPAK的命令幀的形式。


1640177579762836.png

表1:bit幀表示


前三個bit:B0、B1和B2將通過預(yù)定義顏色的按鈕在直接控制模式下保持RGB LED的狀態(tài)。因此,當(dāng)單擊其中任意一個按鈕時(shí),將發(fā)送該按鈕的相應(yīng)值,如表2所示。


1640177563560608.png

表2:命令bit表示


B3和B4 bit控制“+”和“-”命令,它們負(fù)責(zé)增加和減少脈沖寬度。按下按鈕時(shí)bit值為1,松開按鈕時(shí)bit值為0。


B5和B6 bit負(fù)責(zé)選擇PWM信號將通過的引腳(顏色):這些bit的顏色指定如表3所示。最后一個bit B7負(fù)責(zé)激活自動混合功能。


1640177549464222.png

表3:PWM通道選擇bit


圖6和圖7展示了將按鈕與負(fù)責(zé)發(fā)送以上值的編程塊鏈接的過程。


1640177533224038.png

圖6:按鈕的編程塊


1640177522581233.png

圖7:發(fā)送“+”和“-”命令幀


下方圖8為頂層電路圖。


1640177344270940.png

圖8:電路圖


控制器已測試成功,顏色混合以及其他功能均顯示正常工作。


結(jié)論


在本文中,我們創(chuàng)建了一個由安卓應(yīng)用程序進(jìn)行無線控制的智能燈電路。該項(xiàng)目中使用的GreenPAK IC有助于將幾個用于控制燈光的基本組件集成到一個小型IC中。



推薦閱讀:


發(fā)揮系統(tǒng)支撐作用開拓碳中和新藍(lán)圖,關(guān)鍵技術(shù)助推鋰電儲能多場景加速落地

有刷直流電機(jī)的轉(zhuǎn)矩負(fù)載、轉(zhuǎn)速、電機(jī)電流之間的關(guān)系

搞清楚這一點(diǎn),輕松抓到你想看的波形

太陽能捕獲效率低?看來你沒選對匹配的前端管理系統(tǒng)

開發(fā)基于碳化硅的25 kW快速直流充電樁:方案概述

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉

安丘市| 孙吴县| 舟山市| 紫云| 东辽县| 泌阳县| 绥滨县| 车致| 印江| 呼伦贝尔市| 铁力市| 新竹县| 海南省| 大城县| 韶山市| 任丘市| 蒲江县| 奉化市| 化州市| 平陆县| 中牟县| 县级市| 克拉玛依市| 资兴市| 东平县| 华宁县| 元朗区| 马龙县| 儋州市| 富裕县| 天长市| 华宁县| 寿宁县| 尚义县| 莆田市| 陇南市| 兴仁县| 孙吴县| 赣州市| 乐清市| 福州市|