安章順,遲明路,劉榮升,湯世哲
(1.中鐵十一局集團第三工程有限公司,湖北 十堰 442000;2.河南工學院,河南 新鄉 453003)
科學技術的發展日新月異,人們的生活方式和居住方式隨之發生了巨大變化,從有線到無線,從微信聊天到微信小程序(以下簡稱“小程序”)的使用,使人們緊密聯系在一起,極大地改善了生活質量[1]。在越來越注重個人體驗的信息化社會,傳統家居已經無法滿足現代人尤其是年輕人對生活品質的需求,智能家居已經成為居家生活的必要內容。小程序是基于微信平臺的一款無需下載、無需安裝、節約內存的軟件程序,相比于手機原生態APP,小程序具有開發簡單、無需復雜的專業知識、開發周期短的特點[2-3]。小程序內部具有豐富的API,方便了小程序的開發,小程序的開發也日臻成熟。尤其是小程序內部的藍牙API接口,可有效實現手機與藍牙設備的連接,降低了開發門檻[4-6],擴展了無線藍牙設備的應用范圍。
目前,現有的智能家居產品都推出了其自身專用APP,然而受限于手機內APP 數量和質量,同時由于手機硬件限制,手機不能安裝大量占用內存的APP。因此,可以使用小程序來解決這種矛盾,由于小程序無需占用手機內存的優勢,而且可以在移動手機端進行開發,簡化了開發流程步驟。目前,小程序軟件應用研究較多,而關于小程序控制硬件系統的研究較少。本文設計了基于微信小程序的智能臺燈系統,利用小程序與藍牙相連接發送數據,進而通過8引腳的小尺寸STC15F104W 單片機發送程序指令控制臺燈的啟停變色等,實現了手機軟件與家居硬件設備的互聯控制。因此,研究本文設計的基于小程序的智能臺燈系統具有重要的現實意義和應用價值。
本系統選擇小尺寸8 引腳的STC15F104W 單片機作為智能臺燈的主控核心,整個系統由STC15F104W 單片機、RGB三色LED燈、BLE藍牙模塊、若干上拉電阻和系統供電電源組成。首先,將編譯無誤的RGB 三色LED 燈控制程序燒錄到STC15F104W單片機中,由于STC15F104W單片機無外部最小系統,大大簡化了電路復雜度,提高了使用性;然后,通過低功耗BLE藍牙模塊與單片機和小程序連接,由小程序將程序指令發送給單片機控制RGB 燈的亮滅與混色,實現臺燈的智能無線控制。系統方案構成框圖如圖1所示。

圖1 系統方案構成框圖
STC15F104W 單片機為STC 生產的單時鐘/機器周期(1T)的芯片,是高速、高可靠、低功耗的新一代8051(8 引腳)微型單片機,該單片機最主要的特點是無需外接晶振,內部集成了高精度的RC時鐘源[7-9],可通過配置獲得振蕩頻率。內部具有A/D轉換、看門狗功能,以及較強的抗干擾能力,由于簡化了內部結構,單片機運行速度快,功耗消耗低,可以與51系列單片機兼容并使用Keil編程軟件進行開發。
本文設計的臺燈系統采用RGB 三色LED 燈,由紅綠藍三原色交集成像,可由程序調節不同顏色的混比,實現臺燈的光照顯示。
LED燈模塊電路中串聯了200Ω電阻作為限流電阻,單片機P3.2、P3.3 和P3.4 端口分別連接RGB 三色LED 燈的紅綠藍LED,通過PWM(脈寬調制)的方式進行混色控制及亮度調節,電路圖如圖2所示。

圖2 LED 燈模塊電路
BLE 藍牙模塊使用BT05,具有體積小、使用方便、成本低廉、功耗低的特點,主要功能是:使用BT05 藍牙接收來自手機小程序發來的數據,然后把接收到的數據通過UART口傳給單片機,進而實現臺燈的無線控制。單片機將數據發送給BLE藍牙模塊時,無需其他協議,BLE藍牙模塊可以直接將數據傳送至RGB 三色LED 燈,操作簡便快捷。STC15F104W單片機的RXD腳與BLE藍牙模塊的TXD腳連接,BLE 藍牙模塊的RXD 腳與單片機TXD 腳連接,進行數據傳輸,BLE藍牙模塊電路圖如圖3所示。

圖3 BLE 藍牙模塊電路圖
系統軟件主要由兩部分組成:單片機C 語言開發環境Keil μVision5 和小程序。微信小程序是一種不需要下載安裝就能夠使用的程序,用戶通過二維碼掃一掃便可直接打開應用。經過多年發展,小程序生態環境已經初步構建,形成了超百萬的小程序開發者規模。小程序開發設計流程圖如圖4所示。當手機藍牙打開之后,與相關藍牙設備進行連接,此時若接收到反饋數據,則執行反饋命令,進行下一步操作,同時,可以更新狀態,并發送指令。

圖4 小程序開發設計流程圖
3.1.1 注冊賬號
首先需要注冊小程序賬號,訪問地址(https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN),選擇“小程序”,按要求填寫相關信息即可完成小程序的注冊,如圖5所示。

圖5 小程序賬號注冊
3.1.2 獲取小程序AppID
可在網站的“設置”-“開發者設置”中,查看小程序的AppID,如圖6所示。

圖6 獲取AppID
3.1.3 下載小程序開發者工具并創建demo項目
下載全新的開發者工具,該工具集成了開發調試、代碼編輯及程序發布等功能。項目創建成功后,點擊該項目進入可以看到完整的開發者工具界面,點擊左側導航,在“編輯”里可以查看和編輯代碼,在“調試”里可以測試代碼并模擬小程序在微信客戶端的效果,在“項目”里可以發送到手機里預覽實際效果,如圖7所示。

圖7 項目編輯與調試功能
3.1.4 手機預覽
如圖8所示,點擊開發者工具左側菜單欄的“項目”,然后點“預覽”,微信掃描二維碼之后即可在微信客戶端中實際體驗。

圖8 手機預覽
3.1.5 代碼上傳與發布
在開發者工具左側菜單欄中選擇“項目”,點擊“上傳”即可將代碼上傳到小程序服務器。之后,登錄微信公眾平臺并訪問小程序首頁,按要求填寫相關信息并發布,即可提交審核。
在小程序中,提供了18 個藍牙api 接口,本文主要使用以下接口:openBluetoothAdapter()//用于開啟和初始化藍牙;getBluetoothAdapterState()//用于檢查藍牙是否開啟;startBluetoothDevicesDiscovery()//用于開始設備搜索并當發現一個設備后會觸發onBlueDeviceFound()事件;creatBLEConnection()//用于搜索到設備后連接設備;getBLEDeviceService()//用于連接成功后根據目標服務ID找到指定的服務ID;onBLECharacteristicValueChange()//用于監聽數據變化。接下來將詳細闡述BLE 藍牙模塊與小程序的連接步驟:
1)藍牙初始化。首先要初始化藍牙:openBluetoothAdapter(),如圖9所示。

圖9 初始化藍牙
2)檢查與搜索藍牙,如圖10所示。

圖10 檢查與搜索藍牙
3)獲取與連接藍牙設備。開始連接設備后,匹配到的藍牙設備ID發送連接藍牙的請求,連接成功之后,應該斷開藍牙搜索的api,然后獲取所連接藍牙設備的service服務。
4)獲取藍牙設備服務。獲取的serviceId 有多個,要試著連接最終確定哪個是穩定版本的service,獲取服務后獲取設備特征值,便可啟動notify藍牙監聽功能,然后使用wx.onBLECharacteristicValueChange 用來監聽藍牙設備傳遞數據,接收數據和發送數據必須是二進制數據。小程序最終開發界面如圖11所示。
硬件與軟件調試完成后,進行智能臺燈的RGB 三色LED 燈測試,如圖12 所示??梢栽谝欢ň嚯x內通過手機小程序對RGB 燈各種顏色進行無線調試,低功耗BLE 藍牙模塊接收及發送數據正常,實現了預期目標。
隨著國家經濟的迅速發展,現代化、信息化、智能化正逐步影響著人們的日常生活,智能家居作為與人們生活息息相關的一種便利技術,方便了人們的衣食住行,提高了居家舒適度。本文設計了一款基于微信小程序的智能臺燈系統,利用BLE 藍牙模塊將小程序和STC15F104W 單片機連接,小程序可經由藍牙模塊控制臺燈,實現了手機與家具硬件設備的互聯控制。該系統為小程序的軟硬件結合控制提供了良好的借鑒,未來將對智能臺燈與人體坐姿感應報警以及明暗光線自適應調節進行研究,以期進一步豐富小程序控制硬件系統案例。