智能燈泡最近已經(jīng)越來越流行,并且正穩(wěn)步成為智能家居工具包的關(guān)鍵部分。智能燈泡使用戶可以通過用戶智能手機上的特殊應(yīng)用程序來控制其燈光??梢源蜷_和關(guān)閉燈泡,并且可以從應(yīng)用程序界面更改顏色。在本文中,我們將描述一個實現(xiàn)智能燈泡控制器的項目,該控制器可以通過手動按鈕或移動應(yīng)用程序通過藍牙進行控制。為了給該項目增加一些個性,我們添加了一些功能,這些功能使用戶可以從應(yīng)用程序界面中包含的顏色列表中選擇一種照明顏色。它還可以激活“自動混合”以生成色彩效果并每半秒鐘更改一次照明。用戶可以使用PWM功能創(chuàng)建其色彩混合,該功能也可以用作三種基本顏色(紅色,綠色,藍色)的調(diào)光器。我們還在電路中添加了外部按鈕,以便用戶可以切換到手動模式并通過外部按鈕更改燈的顏色。
本文由兩部分組成;GreenPAK?設(shè)計(請參閱其他應(yīng)用程序示例)和Android應(yīng)用程序設(shè)計。GreenPAK設(shè)計基于使用UART接口進行通信。選擇UART是因為大多數(shù)藍牙模塊以及大多數(shù)其他外圍設(shè)備(例如WIFI模塊)都支持UART。因此,GreenPAK設(shè)計可用于多種連接類型。
為了構(gòu)建該項目,我們將使用SLG46620CMIC,藍牙模塊和RGB LED。
GreenPAK IC將成為該項目的控制核心。它從藍牙模塊和/或外部按鈕接收數(shù)據(jù),然后開始所需的步驟以顯示正確的照明。
它還產(chǎn)生PWM信號并將其輸出到LED。下面的圖1顯示了框圖。
圖1:框圖
該項目中使用的GreenPAK器件在一個IC中包含一個SPI連接接口,PWM模塊,F(xiàn)SM和許多其他有用的附加模塊。它還具有體積小,能耗低的特點。這將使制造商能夠使用單個IC來構(gòu)建小型實用電路,從而與類似系統(tǒng)相比可將生產(chǎn)成本降至最低。
在此項目中,我們將控制一個RGB LED。為了使該項目在商業(yè)上可行,系統(tǒng)可能需要通過并聯(lián)連接多個LED并使用適當?shù)?a target="_blank">晶體管來提高發(fā)光度。電源電路也必須考慮在內(nèi)。該項目已實施并進行了審查。
GreenPAK設(shè)計
在GreenPAK Designer軟件中實現(xiàn)的設(shè)計包括UART接收器,PWM單元和控制單元(可以在此處找到整個設(shè)計文件)
a)UART接收器
首先,我們需要設(shè)置藍牙模塊。大多數(shù)藍牙IC支持UART協(xié)議進行通信。UART代表通用異步接收器/發(fā)送器。UART可以在并行和串行格式之間來回轉(zhuǎn)換數(shù)據(jù)。它包括一個串行到并行的接收器和一個并行到串行的轉(zhuǎn)換器,它們都分別時鐘控制。
藍牙模塊中接收到的數(shù)據(jù)將被傳輸?shù)轿覀兊腉reenPAK設(shè)備。Pin10的空閑狀態(tài)為高電平。發(fā)送的每個字符均以邏輯低起始位開始,隨后是可配置數(shù)量的數(shù)據(jù)位和一個或多個邏輯高終止位。
UART發(fā)送器發(fā)送1個START位,8個數(shù)據(jù)位和1個STOP位。通常,UART藍牙模塊的默認波特率是9600。我們會將數(shù)據(jù)字節(jié)從藍牙IC發(fā)送到GreenPAK。SLG46620的SPI模塊。
由于GreenPAK SPI模塊沒有START或STOP位控制,因此我們將使用這些位來啟用和禁用SPI時鐘信號(SCLK)。當Pin10變?yōu)長OW時,我們知道我們已經(jīng)收到一個START位,因此我們使用PDLY下降沿檢測器來識別通信的開始。該下降沿檢測器為DFF0提供時鐘,從而使SCLK信號為SPI模塊提供時鐘。
我們的波特率為每秒9600位,因此我們的SCLK周期需要為1/9600 = 104 μs。因此,我們將OSC頻率設(shè)置為2MHz,并使用CNT0作為分頻器。
2 MHz – 1 = 0.5 μs
(104 μs / 0.5 μs)– 1 = 207
因此,我們希望CNT0計數(shù)器的值為207。為確保不會丟失任何數(shù)據(jù),我們需要將SPI時鐘延遲半個時鐘周期,以便在適當?shù)臅r間為SPI模塊計時。我們通過使用CNT6、2位LUT1和OSC模塊的外部時鐘來完成此操作。CNT6的輸出直到DFF0被計時后的52 μs才變?yōu)楦唠娖?,這是我們104 μs SCLK周期的一半。當CNT6為高電平時,2位LUT1 AND門允許2MHz OSC信號進入EXT。CLK0輸入,其輸出連接到CNT0。
圖2:系統(tǒng)圖
b)PWM單元
使用PWM0和相關(guān)的時鐘脈沖發(fā)生器(CNT8 / DLY8)產(chǎn)生PWM信號。由于脈沖寬度是用戶可控制的,因此我們使用FSM0(可以連接到PWM0)對用戶數(shù)據(jù)進行計數(shù)。
在SLG46620中,8位FSM1可與PWM1和PWM2一起使用。必須連接藍牙模塊,這意味著必須使用SPI并行輸出。SPI并行輸出位0到7與DCMP1,DMCP2和LF OSC CLK的OUT1和OUT0復(fù)用。PWM0從16位FSM0獲得其輸出。保持不變,這將導致脈沖寬度過載。為了將計數(shù)器值限制為8位,添加了另一個FSM。FSM1用作指針,以了解計數(shù)器何時達到0或255。FSM0用于生成PWM脈沖。FSM0和FSM1必須同步。由于兩個FSM都有預(yù)設(shè)的時鐘選項,因此CNT1和CNT3用作將CLK傳遞給兩個FSM的中介。這兩個計數(shù)器被設(shè)置為相同的值,對于本文來說是25。我們可以通過更改這些計數(shù)器值來更改PWM值的變化率。
FSM的值通過來自SPI并行輸出的信號“ +”和“-”來增加和減少。
圖3:PWM單元設(shè)計
在控制單元內(nèi),接收到的字節(jié)從藍牙模塊獲取到SPI并行輸出,然后傳遞給相關(guān)的功能。首先,將檢查PWM CS1和PWM CS2輸出,以查看PWM模式是否被激活。如果它被激活,它將確定哪個通道將通過LUT4,LUT6和LUT7輸出PWM。
LUT9,LUT11和LUT14負責檢查其他兩個LED的狀態(tài)。LUT10,LUT12和LUT13檢查“手動”按鈕是否已激活。如果啟用了“手動”模式,則RGB輸出將根據(jù)D0,D1,D2輸出狀態(tài)進行操作,每次按“顏色”按鈕都會更改這些狀態(tài)??。它隨著來自CNT9的上升沿而變化,CNT9用作上升沿去抖動器。
引腳20被配置為輸入,用于在手動和藍牙控制之間切換。
如果禁用了手動模式并激活了自動混頻器模式,則顏色每500毫秒更改一次,且上升沿來自CNT7。4位LUT1用于防止D0 D1 D2處于'000'狀態(tài),因為這種狀態(tài)會導致在自動混頻器模式下燈熄滅。
如果未激活手動模式,PWM模式和自動混頻器模式,則紅色,綠色和藍色SPI命令將流向配置為輸出并連接到外部RGB LED的引腳12、13和14。
圖4:系統(tǒng)圖
DFF1,DFF2和DFF3用于構(gòu)建3位二進制計數(shù)器。在自動混頻器模式下,計數(shù)器值隨著通過P14的CNT7脈沖或在手動模式下從“顏色”按鈕(PIN3)發(fā)出的信號而增加。
Android應(yīng)用程式
在本節(jié)中,我們將構(gòu)建一個Android應(yīng)用程序,該應(yīng)用程序?qū)⒈O(jiān)視和顯示用戶的控件選擇。該界面包括兩個部分:第一部分包含一組具有預(yù)定義顏色的按鈕,以便在按下這些按鈕中的任何一個時,相同顏色的LED會點亮。第二部分(MIX正方形)為用戶創(chuàng)建混合色。
在第一部分中,用戶選擇希望PWM信號通過的LED引腳。PWM信號一次只能傳遞到一個引腳。下部列表在PWM模式下邏輯上控制其他兩種顏色的開/關(guān)。
自動混音器按鈕負責運行自動變光模式,在該模式下,燈光每半秒改變一次。MIX部分包含兩個復(fù)選框列表,因此用戶可以決定將兩種顏色混合在一起。
我們使用MIT應(yīng)用程序發(fā)明者網(wǎng)站構(gòu)建了該應(yīng)用程序。該站點允許您在沒有使用圖形軟件模塊的軟件經(jīng)驗的情況下構(gòu)建Android應(yīng)用程序。
首先,我們通過添加一組按鈕來顯示預(yù)定義的顏色來設(shè)計圖形界面,還添加了兩個復(fù)選框列表,每個列表包含3個元素。每個元素都在其單獨的框中概述,如圖5所示。
圖5:應(yīng)用程序界面
用戶界面中的按鈕鏈接到軟件命令:應(yīng)用程序?qū)⑼ㄟ^藍牙發(fā)送的所有命令均采用字節(jié)格式,每個位負責特定功能。
表1顯示了發(fā)送到GreenPAK的命令幀的形式。
表1:位幀表示
前三位B0,B1和B2將通過預(yù)定義顏色的按鈕在直接控制模式下保持RGB LED的狀態(tài)。因此,單擊它們中的任何一個時,將發(fā)送按鈕的相應(yīng)值,如表2所示。
表2:命令位代表
位B3和B4包含“ +”和“-”命令,負責增加和減少脈沖寬度。按下按鈕時,位值為1;釋放按鈕時,位值為0。
B5和B6位負責選擇PWM信號將通過的引腳(顏色):這些位的顏色標識如表3所示。最后一位B7負責激活自動混頻器。
表3:PWM通道選擇位
圖6和圖7演示了將按鈕與編程塊鏈接的過程,這些編程塊負責發(fā)送先前的值。
圖6:按鈕編程塊
圖7:發(fā)送“ +”和“-”命令幀
下面的圖8顯示了頂層電路圖
圖8:電路圖
該控制器已經(jīng)過成功測試,并且顏色混合以及其他功能都可以正常工作。
結(jié)論
在本文中,構(gòu)建了一個智能燈泡電路以由Android應(yīng)用程序進行無線控制。該項目中使用的GreenPAK CMIC還有助于縮短照明控制的必要組件并將其嵌入到一個小型IC中。
編輯:hfy
-
混頻器
+關(guān)注
關(guān)注
10文章
841瀏覽量
46442 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2283瀏覽量
95828 -
智能家居
+關(guān)注
關(guān)注
1932文章
9713瀏覽量
188668 -
uart
+關(guān)注
關(guān)注
22文章
1251瀏覽量
102868 -
智能燈泡
+關(guān)注
關(guān)注
5文章
76瀏覽量
35794
發(fā)布評論請先 登錄
相關(guān)推薦
靈感智能燈具家庭控制
zigbee控制方案!
Android應(yīng)用程序的耗電量如何控制
求基于Cortex-M3與Android的智能家居控制系統(tǒng)解決方案
無法在Nanoleaf Android應(yīng)用程序上找到OTBR怎么解決?
利用FTP實現(xiàn)應(yīng)用程序的遠程更新
Android應(yīng)用程序GUI遍歷自動化方法

如何通過Android應(yīng)用程序來控制LED燈
為什么智能燈泡也會容易受到網(wǎng)絡(luò)黑客的攻擊
STM32智能小車的試用Android應(yīng)用程序包免費下載

Linux上運行Android應(yīng)用程序的方案

Android應(yīng)用程序控制的機器人車

評論