智能燈越來(lái)越受歡迎,并且正在穩步成為智能家居的關(guān)鍵部分。智能燈使用戶(hù)能夠通過(guò)智能手機上的應用程序控制燈光,可以在A(yíng)PP界面打開(kāi)和關(guān)閉燈,也可以調節顏色。在本文中,我們將介紹一個(gè)如何實(shí)現智能燈控制器的項目,可以手動(dòng)按鈕或用移動(dòng)APP通過(guò)藍牙進(jìn)行控制。為了給這個(gè)項目增加一些特色,我們添加了一些功能,允許用戶(hù)從APP界面中包含的顏色列表中選擇照明顏色。還可以激活“自動(dòng)混合”以產(chǎn)生彩色效果,也可以每半秒改變一次燈光。用戶(hù)可以使用PWM功能創(chuàng )建自己的顏色混合,該功能也可以用作三種基本顏色(紅色、綠色、藍色)的調光器。我們還在電路中添加了外部按鈕,以便用戶(hù)可以切換到手動(dòng)模式并通過(guò)外部按鈕調換燈光顏色。
本文由兩部分組成:GreenPAK™設計和安卓應用程序設計。GreenPAK設計基于使用UART接口進(jìn)行通信。選擇UART是因為大多數藍牙模塊以及大多數其他外設(例如Wi-Fi模塊)都支持它。因此,GreenPAK設計可用于多種連接類(lèi)型。
為了創(chuàng )建這個(gè)項目,我們將使用SLG46620 GreenPAK IC、一個(gè)藍牙模塊和一個(gè)RGB LED。
GreenPAK IC將是該項目的控制核心:它從藍牙模塊和/或外部按鈕接收數據,然后開(kāi)始所需的程序來(lái)顯示正確的照明。它還生成PWM信號并將其輸出到LED。下面的圖1展示了功能框圖。

圖1:框圖
該項目中使用的GreenPAK器件在單顆IC中包含了一個(gè)SPI連接接口、PWM功能塊、FSM和許多其他有用的附加功能塊。它還具有體積小、能耗低的特點(diǎn)。這使得制造商能用單個(gè)IC構建小型實(shí)用電路,從而降低生產(chǎn)成本。
在這個(gè)項目中,我們將控制一個(gè)RGB LED。為了使該項目具有商用可行性,系統可能需要通過(guò)并聯(lián)多個(gè)LED并使用適當的晶體管來(lái)提高亮度等級;電源電路也需要考慮。我們對該項目完成了實(shí)現和檢驗。
GreenPAK設計
在GreenPAK Designer軟件中實(shí)現的設計由UART接收器、PWM單元和控制單元組成(完整的設計文件可從以下鏈接下載)。
a) UART接收器
首先,我們需要設置藍牙模塊。大多數藍牙IC支持UART協(xié)議進(jìn)行通信。UART是通用異步收發(fā)傳輸器,可以將數據在并行和串行格式之間相互轉換。它包括一個(gè)串行到并行接收器,和一個(gè)并行到串行轉換器,它們都單獨計時(shí)。
藍牙模塊中接收到的數據將傳輸到GreenPAK器件。Pin10的空閑狀態(tài)為高(HIGH)。發(fā)送的每個(gè)字符都以邏輯“低起始位(Low Start bit)”開(kāi)頭,然后是可配置數量的數據位(bit)和一個(gè)或多個(gè)邏輯“高停止位(High Stop bit)”。
UART發(fā)送器發(fā)送1個(gè)低起始位(Low Start bit)、8個(gè)數據位(bit)和1個(gè)高停止位(High Stop bit)。通常,藍牙模塊的UART默認波特率為9600。我們將從藍牙IC發(fā)送數據字節到GreenPAK。
由于GreenPAK SPI功能塊沒(méi)有低起始位(Low Start bit)或高停止位(High Stop bit)控制,我們將使用這些位(bit)來(lái)啟用和禁用SPI時(shí)鐘信號(SCLK)。當Pin10變低(LOW)時(shí),我們知道我們收到了一個(gè)低起始位(Low Start bit),因此我們使用GreenPAK內部的PDLY配置為下降沿檢測器來(lái)識別通信的開(kāi)始。該下降沿檢測器為GreenPAK內部的DFF0提供觸發(fā)時(shí)鐘,從而啟用SCLK信號為GreenPAK SPI功能塊提供時(shí)鐘。
我們將波特率設定為每秒9600 bit/s,對應SCLK周期為1/9600 = 104 µs。因此我們將OSC頻率設置為2MHz,并使用GreenPAK內部的CNT0配置為分頻器。為了使接收到的時(shí)鐘周期是104 µs,需要將CNT0計數值設定為2818。
參照圖2中GreenPAK內部的可配置單元圖示,為了確保不丟失任何數據,我們需要將SPI時(shí)鐘延遲半個(gè)時(shí)鐘周期,以便SPI功能塊在正確的時(shí)間被計時(shí)。我們通過(guò)使用CNT6、2-bit LUT1和OSC功能塊的外部時(shí)鐘來(lái)實(shí)現這一點(diǎn)。CNT6的輸出直到DFF0被計時(shí)后52 µs才會(huì )變高,是該SPI的SCLK周期104 µs的一半。當CNT6為高(HIGH)時(shí),配置為與門(mén)的2-bit LUT1允許時(shí)鐘信號(CLK Begin)進(jìn)入OSC 的EXT. CLK0輸入,其輸出時(shí)鐘信號連接到CNT0的CLK端子。

圖2:系統電路框圖
b) PWM功能單元
參照圖3中GreenPAK內部的可配置單元圖示,PWM信號是使用PWM0和相應時(shí)鐘脈沖發(fā)生器(CNT8/DLY8)生成的。由于脈沖寬度是用戶(hù)可控的,我們使用FSM0(可以連接到PWM0)來(lái)統計用戶(hù)數據。
在SLG46620中,8-bit FSM1可以與PWM1和PWM2結合使用。需要連接藍牙模塊,即必須使用SPI并行輸出模塊。SPI并行輸出模塊的bit 0~7與DCMP1、DMCP2和LF OSC CLK的OUT1和OUT0組合。PWM0從16-bit FSM0獲得其輸出。如果不改變,這會(huì )導致脈沖寬度過(guò)載。為了將計數器值限制在8位(bits),我們添加了另一個(gè)FSM:FSM1用作提示計數器達到0或255的提示器。FSM0用于生成 PWM脈沖,因此FSM0和FSM1必須同步。由于兩個(gè)FSM都有預設的時(shí)鐘選項,因此CNT1和CNT3用作將CLK傳遞給兩個(gè)FSM的中間分頻媒介。這兩個(gè)計數器設置為相同的值,在本文中為25。我們可以通過(guò)改變這些計數器值來(lái)改變PWM值的變化率。
FSM的值由來(lái)自SPI并行輸出模塊的信號“+”和“-”來(lái)增加和減少。

圖3:PWM單元設計
c) 控制單元
參照圖4中GreenPAK內部的可配置單元圖示,在控制單元內,接收到的字節是從藍牙模塊獲取到SPI并行輸出,然后傳遞給相關(guān)的功能模塊。首先,將檢查PWM CS1和PWM CS2輸出,查看PWM模式是否被激活。如果它被激活,它將決定通過(guò)LUT4、LUT6和LUT7中的哪個(gè)通道輸出PWM。
LUT9、LUT11和LUT14負責檢查其他兩個(gè)LED的狀態(tài)。LUT10、LUT12和LUT13檢查手動(dòng)按鈕是否被激活。如果手動(dòng)模式處于開(kāi)啟狀態(tài),則RGB將根據D0、D1、D2輸出狀態(tài)運行,每次按下顏色按鈕時(shí),這些輸出狀態(tài)會(huì )改變。它隨著(zhù)來(lái)自CNT7的上升沿而變化,CNT7用作上升沿信號的去抖動(dòng)功能。
Pin 20配置為輸入,用于在手動(dòng)控制模式和藍牙控制模式之間切換。
如果禁用手動(dòng)模式并開(kāi)啟自動(dòng)混合模式,則顏色每500毫秒改變一次,上升沿來(lái)自CNT7。4-bit LUT1 用于防止D0 D1 D2處于“000”狀態(tài),因為該狀態(tài)會(huì )導致燈在自動(dòng)混合模式時(shí)關(guān)閉。
如果手動(dòng)模式、PWM模式和自動(dòng)混合模式未啟用,則紅色、綠色和藍色SPI命令流向引腳12、13和14,這些引腳配置為輸出,并連接到外部RGB LED。

圖4:系統電路框圖
DFF6、DFF7和DFF8用于構建3-bit二進(jìn)制計數器。計數器值隨著(zhù)CNT7脈沖增加,并在MUXs ’ (GreenPAK邏輯單元LUT10、LUT12、LUT13)的輸入端產(chǎn)生不同的D0,D1,D2邏輯組合。
安卓應用程序
在本節中,我們將創(chuàng )建一個(gè)安卓應用程序,它將監測和顯示用戶(hù)的控件選擇。界面由兩部分組成:第一部分包含一組具有預定義顏色的按鈕,因此當按下這些按鈕中的任意一個(gè)時(shí),相應顏色的LED會(huì )亮起。第二部分(MIX方塊)為用戶(hù)創(chuàng )建混合顏色。
在第一部分,用戶(hù)選擇他們希望PWM信號通過(guò)的LED引腳;PWM信號一次只能傳遞到一個(gè)引腳。下面的列表在PWM模式期間邏輯地控制其他兩種顏色的開(kāi)/關(guān)。
自動(dòng)混合按鈕負責運行自動(dòng)換燈光模式,每半秒換一次燈光。MIX部分包含兩個(gè)復選框列表,用戶(hù)可以決定將哪兩種顏色混合在一起。
我們使用MIT App Inventor網(wǎng)站創(chuàng )建了該應用程序。該網(wǎng)站允許用戶(hù)在沒(méi)有任何軟件經(jīng)驗的情況下,使用圖形軟件塊創(chuàng )建安卓應用程序。
我們最初設計的圖形界面添加了一組負責顯示預定義顏色的按鈕,我們還添加了兩個(gè)復選框列表,每個(gè)列表有3個(gè)元素;每個(gè)元素都在其單獨的框中顯示,如圖5所示。

圖5:App界面
用戶(hù)界面中的按鈕與軟件命令相關(guān)聯(lián):應用程序通過(guò)藍牙發(fā)送的所有命令都是以字節格式,每一個(gè)bit負責特定的功能。
表1顯示了發(fā)送到GreenPAK的命令幀的形式。

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

表2:命令bit表示
B3和B4 bit控制“+”和“-”命令,它們負責增加和減少脈沖寬度。按下按鈕時(shí)bit值為1,松開(kāi)按鈕時(shí)bit值為0。
B5和B6 bit負責選擇PWM信號將通過(guò)的引腳(顏色):這些bit的顏色指定如表3所示。最后一個(gè)bit B7負責激活自動(dòng)混合功能。

表3:PWM通道選擇bit
圖6和圖7展示了將按鈕與負責發(fā)送以上值的編程塊鏈接的過(guò)程。

圖6:按鈕的編程塊

圖7:發(fā)送“+”和“-”命令幀
下方圖8為頂層電路圖。

圖8:電路圖
控制器已測試成功,顏色混合以及其他功能均顯示正常工作。
結論
在本文中,我們創(chuàng )建了一個(gè)由安卓應用程序進(jìn)行無(wú)線(xiàn)控制的智能燈電路。該項目中使用的GreenPAK IC有助于將幾個(gè)用于控制燈光的基本組件集成到一個(gè)小型IC中。 |