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