新余學院 何運繁 羅 俊
針對生活中人們對節能環保意識缺失的問題,以及符合人們日常生活的便利習慣,本文設計了一款基于藍牙通信的多功能智能燈系統。該智能燈系統通過藍牙實現上位機與下位機的通信控制,同時在上位機上使用了μC/OS實時操作系統以增強系統的實時性與帶負載能力,再結合多種傳感器與WS2812B燈帶實現了燈光的智能感應調節、定時、溫濕度顯示報警提示等多功能。
當前,隨著物聯網技術的迅速發展,物聯網智能化設備的運用越來越普遍,智能家居就是其中之一,同時給人們的生活帶來極大的方便與體驗。而在生活中,日常燈的需求對人們而言是至關重要的,對于傳統的燈往往需要手動控制,而對于智能化燈,它能夠感應周圍是否有人的存在而選擇是否自動開燈,從而避免了多次復雜的手動操作。本文設計了一款基于藍牙通信的多功能智能燈系統,該系統整體上可分為控制上位機與燈光下位機,兩者之間通過藍牙實現系統的無線控制。本文所設計的智能燈系統不僅能夠根據外界環境而自動亮滅,還可以根據人們的需求設置定時熄滅,實時顯示當前環境溫濕度并具有報警提醒等功能,同時系統也可以調節燈光的顏色來渲染出不同的氣氛,從而來調節人們的心情。
系統在整體設計上,可分為控制上位機部分、燈光下位機部分和藍牙通訊部分。其中燈光下位機部分連接溫濕度傳感器、紅外傳感器、WS2812B燈帶等功能模塊。多功能智能燈的系統模塊框圖如圖1所示。
圖1 多功能智能燈的系統模塊框圖
由于本文所設計的智能燈系統具有的功能較多,因此在前期的初步試驗測試時發現,功能的復雜性給裸機系統帶來了一定的運行局限性,如系統卡頓、響應延遲較大等。為了有效地提高系統運行的效率,在控制上位機上采用μC/OS實時操作系統可以最大程度上的減小上述系統運行局限性問題。同時考慮本設計對屏幕顯示的利用較為頻繁且市面上對LCD顯示的解決方案也比較多,為了提高顯示畫面的美觀化與可視性,因此在LCD顯示部分采用了emWIN5頁面處理的解決方案,對于這類方案,市面上也有比較多資料可進行參考。
燈光下位機的控制芯片采用的是STM32F103系列,該系列單片機是ST公司開發的基于Cortex-M3內核的32位微處理器。相比51系列的單片機,它具有USART,I2C,SPI等多個通信接口,72M更高的主頻,足夠大的RAM、FLSAH,運行速度更快。在程序開發上,它可以使用易于閱讀、維護成本低的封裝庫開發,大大的提高了開發效率。
圖2所示的是燈光下位機的部分硬件模塊電路圖,其包括感應模塊、WS2812B燈帶模塊、溫濕度和報警模塊。下位機的感應模塊主要由紅外傳感器HC-SR501和光敏傳感器組成,其原理是通過熱釋電材料接收人體發出特定波長的紅外線而引起其表面電荷的變化,然后熱釋電傳感器將這種輻射變化轉換為電平的變化。光敏傳感器能夠感知周圍光線的強弱,將光信號轉換為電信號,從而判斷周圍環境光線的亮暗程度,在結合紅外傳感,從而實現在光線較暗時檢測到有人而亮燈。
圖2 燈光下位機硬件部分模塊電路圖
WS2812B燈帶模塊是一個具有內部控制電路和LED發光電路的智能光源。一個WS2812B燈帶具有8個5050 RGB LED燈組成,該模塊的輸入口連接下位機的PB10端口,其中一個燈需要G(綠)8位、R(紅)8位、B(藍)8位——24位數據,控制,需要模擬時序:1碼(約900ns高電平、300ns低電平)、0碼(約300ns高電平、900ns低電平),由于這個時間間隔比較短,需使用定時器定時。由于芯片內部的鎖存器和整形電路,數據每經過一級LED燈,就會相應的減少24位,這樣的逐級遞減從而達到每個燈都能夠有數據的傳遞過來。
溫濕度傳感器使用的是DHT11,其中采用3.3V供電,一個IO口輸出數據,它的響應速度快,抗干擾能力強,性價比高。利用溫濕度所讀取的溫度值,可做一個溫度報警器。當溫度達到設定的值后,就會執行報警模塊----由蜂鳴器和紅色LED指示燈等組成,蜂鳴器就會響起,同時LED也會亮起以提醒人們。
在系統啟動后,燈光下位機默認處于智能感應模式。此時,若光線較為陰暗的且識別到有人存在時,傳感器的端口輸出高電平并被STM32單片機識別后,單片機則通過控制WS2812B燈帶使燈亮起;當人遠離或者光線較為明亮時,端口又會輸出低電平,燈自動熄滅。在其他情況下,則可以使用控制上位機通過藍牙通信對燈光下位機進行控制并實時顯示當前環境溫濕度,與此同時,燈光下位機的感應模式暫時失效。本文所設計的多功能智能燈系統軟件整體流程圖如圖3所示。
圖3 系統軟件的整體流程圖
上位機程序設計部分采用了μC/OS-III實時多任務操作系統,其流程結構如圖4。在系統啟動后,調度器將優先響應實時列表中優先級最高的任務,其中3個主要用戶任務分別為:用戶初始主頁面任務、觸摸按鍵實時檢測任務,顯示更新任務,其他的初始化等均放在各任務中。當上位機進入用戶主頁面之后,會根據當前的觸摸按鍵來判定用戶所選擇的頁面標志,而后由調度器根據頁面標志執行顯示更新任務從而使上位機LED顯示進入對應的用戶界面。
圖4 上位機系統框架圖
用戶頁面的頁面標志如表1所示,初始情況下為主頁面,1表示標志被按下,同時系統會執行相應的回調函數進入對應的用戶頁面。
表1 用戶頁面與頁面標志
下位機系統流程如圖5所示。下位機系統在開機初始化之后,會自動與上位機進行藍牙配對,并在藍牙配對后根據是否有收到上位機指令來分別進入自動模式或遙控模式。當下位機處于自動模式時,會根據當前紅外傳感和光敏傳感的情況控制燈帶的亮滅;當下位機處于遙控模式時,會根據上位機發送的指令直接控制燈帶的亮滅或進行定時開關,同時下位機對環境溫濕度進行讀取并發送給上位機,并根據設定的溫濕度閾值進行報警提示。
圖5 下位機系統流程圖
下位機定時功能的實現,則是通過用戶操作上位機上的延時按鍵來增加定時器的寄存器值,通過藍牙將其值從上位機傳送給下位機,且定時時長可多次累加。下位機對燈帶進行控制需要模擬一個時序,下位機控制芯片通過向IO口寫入24bit數據即可點亮燈帶上的一個小燈,若改變IO口寫入的數據則可實現不同的燈光顏色。由于帶燈內部為級聯整形電路,因此一個小燈的數據可自動傳輸到下一級電路。下位機向燈帶寫入一個8bie數據的代碼實現過程如下:
在系統硬件和軟件設計完成后,對下位機燈帶模塊進行了原型焊接調試以檢測各模塊是否正常。表2所示的是溫度報警的功能測試結果。由于春季室內溫度大致為25℃左右,故事先將報警溫度的閥值調整為25℃。然后將上位機開啟為控制模式后,下位機的溫濕度傳感器將獲取的環境溫濕度數據通過藍牙將數據實時傳輸給上位機。當實時溫度超過設定的閥值時,上位機的溫度提示區域會顯示“Alarm”字樣,如圖6所示的是用戶處于計算器界面時發生報警時的溫度顯示與提示字樣;而下位機部分的燈帶會亮起微弱的紅光顏色以給人直觀的報警提示,如圖7所示。
表2 溫度報警測試結果
圖6 溫度過高時上位機的報警提示
圖7 溫度過高時下位機的燈光報警提示
本文設計了一款基于藍牙通信的多功能化智能燈系統。整個系統在設計上采用模塊化的設計思想對各部分逐一設計,同時在上位機上使用μC/OS-III操作系統,整個系統的實時性更好,在系統同時運行多個任務時,也絲毫不卡頓,這一巨大優勢在許多領域上有著極其重要的應用。同時隨著人們對生活水平的不斷提高,智能家居居理念的逐漸普及,智能燈的使用也有著廣闊的應用前景。