安章順,遲明路,劉榮升,湯世哲
(1.中鐵十一局集團(tuán)第三工程有限公司,湖北 十堰 442000;2.河南工學(xué)院,河南 新鄉(xiāng) 453003)
科學(xué)技術(shù)的發(fā)展日新月異,人們的生活方式和居住方式隨之發(fā)生了巨大變化,從有線到無(wú)線,從微信聊天到微信小程序(以下簡(jiǎn)稱(chēng)“小程序”)的使用,使人們緊密聯(lián)系在一起,極大地改善了生活質(zhì)量[1]。在越來(lái)越注重個(gè)人體驗(yàn)的信息化社會(huì),傳統(tǒng)家居已經(jīng)無(wú)法滿(mǎn)足現(xiàn)代人尤其是年輕人對(duì)生活品質(zhì)的需求,智能家居已經(jīng)成為居家生活的必要內(nèi)容。小程序是基于微信平臺(tái)的一款無(wú)需下載、無(wú)需安裝、節(jié)約內(nèi)存的軟件程序,相比于手機(jī)原生態(tài)APP,小程序具有開(kāi)發(fā)簡(jiǎn)單、無(wú)需復(fù)雜的專(zhuān)業(yè)知識(shí)、開(kāi)發(fā)周期短的特點(diǎn)[2-3]。小程序內(nèi)部具有豐富的API,方便了小程序的開(kāi)發(fā),小程序的開(kāi)發(fā)也日臻成熟。尤其是小程序內(nèi)部的藍(lán)牙API接口,可有效實(shí)現(xiàn)手機(jī)與藍(lán)牙設(shè)備的連接,降低了開(kāi)發(fā)門(mén)檻[4-6],擴(kuò)展了無(wú)線藍(lán)牙設(shè)備的應(yīng)用范圍。
目前,現(xiàn)有的智能家居產(chǎn)品都推出了其自身專(zhuān)用APP,然而受限于手機(jī)內(nèi)APP 數(shù)量和質(zhì)量,同時(shí)由于手機(jī)硬件限制,手機(jī)不能安裝大量占用內(nèi)存的APP。因此,可以使用小程序來(lái)解決這種矛盾,由于小程序無(wú)需占用手機(jī)內(nèi)存的優(yōu)勢(shì),而且可以在移動(dòng)手機(jī)端進(jìn)行開(kāi)發(fā),簡(jiǎn)化了開(kāi)發(fā)流程步驟。目前,小程序軟件應(yīng)用研究較多,而關(guān)于小程序控制硬件系統(tǒng)的研究較少。本文設(shè)計(jì)了基于微信小程序的智能臺(tái)燈系統(tǒng),利用小程序與藍(lán)牙相連接發(fā)送數(shù)據(jù),進(jìn)而通過(guò)8引腳的小尺寸STC15F104W 單片機(jī)發(fā)送程序指令控制臺(tái)燈的啟停變色等,實(shí)現(xiàn)了手機(jī)軟件與家居硬件設(shè)備的互聯(lián)控制。因此,研究本文設(shè)計(jì)的基于小程序的智能臺(tái)燈系統(tǒng)具有重要的現(xiàn)實(shí)意義和應(yīng)用價(jià)值。
本系統(tǒng)選擇小尺寸8 引腳的STC15F104W 單片機(jī)作為智能臺(tái)燈的主控核心,整個(gè)系統(tǒng)由STC15F104W 單片機(jī)、RGB三色LED燈、BLE藍(lán)牙模塊、若干上拉電阻和系統(tǒng)供電電源組成。首先,將編譯無(wú)誤的RGB 三色LED 燈控制程序燒錄到STC15F104W單片機(jī)中,由于STC15F104W單片機(jī)無(wú)外部最小系統(tǒng),大大簡(jiǎn)化了電路復(fù)雜度,提高了使用性;然后,通過(guò)低功耗BLE藍(lán)牙模塊與單片機(jī)和小程序連接,由小程序?qū)⒊绦蛑噶畎l(fā)送給單片機(jī)控制RGB 燈的亮滅與混色,實(shí)現(xiàn)臺(tái)燈的智能無(wú)線控制。系統(tǒng)方案構(gòu)成框圖如圖1所示。
圖1 系統(tǒng)方案構(gòu)成框圖
STC15F104W 單片機(jī)為STC 生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的芯片,是高速、高可靠、低功耗的新一代8051(8 引腳)微型單片機(jī),該單片機(jī)最主要的特點(diǎn)是無(wú)需外接晶振,內(nèi)部集成了高精度的RC時(shí)鐘源[7-9],可通過(guò)配置獲得振蕩頻率。內(nèi)部具有A/D轉(zhuǎn)換、看門(mén)狗功能,以及較強(qiáng)的抗干擾能力,由于簡(jiǎn)化了內(nèi)部結(jié)構(gòu),單片機(jī)運(yùn)行速度快,功耗消耗低,可以與51系列單片機(jī)兼容并使用Keil編程軟件進(jìn)行開(kāi)發(fā)。
本文設(shè)計(jì)的臺(tái)燈系統(tǒng)采用RGB 三色LED 燈,由紅綠藍(lán)三原色交集成像,可由程序調(diào)節(jié)不同顏色的混比,實(shí)現(xiàn)臺(tái)燈的光照顯示。
LED燈模塊電路中串聯(lián)了200Ω電阻作為限流電阻,單片機(jī)P3.2、P3.3 和P3.4 端口分別連接RGB 三色LED 燈的紅綠藍(lán)LED,通過(guò)PWM(脈寬調(diào)制)的方式進(jìn)行混色控制及亮度調(diào)節(jié),電路圖如圖2所示。
圖2 LED 燈模塊電路
BLE 藍(lán)牙模塊使用BT05,具有體積小、使用方便、成本低廉、功耗低的特點(diǎn),主要功能是:使用BT05 藍(lán)牙接收來(lái)自手機(jī)小程序發(fā)來(lái)的數(shù)據(jù),然后把接收到的數(shù)據(jù)通過(guò)UART口傳給單片機(jī),進(jìn)而實(shí)現(xiàn)臺(tái)燈的無(wú)線控制。單片機(jī)將數(shù)據(jù)發(fā)送給BLE藍(lán)牙模塊時(shí),無(wú)需其他協(xié)議,BLE藍(lán)牙模塊可以直接將數(shù)據(jù)傳送至RGB 三色LED 燈,操作簡(jiǎn)便快捷。STC15F104W單片機(jī)的RXD腳與BLE藍(lán)牙模塊的TXD腳連接,BLE 藍(lán)牙模塊的RXD 腳與單片機(jī)TXD 腳連接,進(jìn)行數(shù)據(jù)傳輸,BLE藍(lán)牙模塊電路圖如圖3所示。
圖3 BLE 藍(lán)牙模塊電路圖
系統(tǒng)軟件主要由兩部分組成:?jiǎn)纹瑱C(jī)C 語(yǔ)言開(kāi)發(fā)環(huán)境Keil μVision5 和小程序。微信小程序是一種不需要下載安裝就能夠使用的程序,用戶(hù)通過(guò)二維碼掃一掃便可直接打開(kāi)應(yīng)用。經(jīng)過(guò)多年發(fā)展,小程序生態(tài)環(huán)境已經(jīng)初步構(gòu)建,形成了超百萬(wàn)的小程序開(kāi)發(fā)者規(guī)模。小程序開(kāi)發(fā)設(shè)計(jì)流程圖如圖4所示。當(dāng)手機(jī)藍(lán)牙打開(kāi)之后,與相關(guān)藍(lán)牙設(shè)備進(jìn)行連接,此時(shí)若接收到反饋數(shù)據(jù),則執(zhí)行反饋命令,進(jìn)行下一步操作,同時(shí),可以更新?tīng)顟B(tài),并發(fā)送指令。
圖4 小程序開(kāi)發(fā)設(shè)計(jì)流程圖
3.1.1 注冊(cè)賬號(hào)
首先需要注冊(cè)小程序賬號(hào),訪問(wèn)地址(https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN),選擇“小程序”,按要求填寫(xiě)相關(guān)信息即可完成小程序的注冊(cè),如圖5所示。
圖5 小程序賬號(hào)注冊(cè)
3.1.2 獲取小程序AppID
可在網(wǎng)站的“設(shè)置”-“開(kāi)發(fā)者設(shè)置”中,查看小程序的AppID,如圖6所示。
圖6 獲取AppID
3.1.3 下載小程序開(kāi)發(fā)者工具并創(chuàng)建demo項(xiàng)目
下載全新的開(kāi)發(fā)者工具,該工具集成了開(kāi)發(fā)調(diào)試、代碼編輯及程序發(fā)布等功能。項(xiàng)目創(chuàng)建成功后,點(diǎn)擊該項(xiàng)目進(jìn)入可以看到完整的開(kāi)發(fā)者工具界面,點(diǎn)擊左側(cè)導(dǎo)航,在“編輯”里可以查看和編輯代碼,在“調(diào)試”里可以測(cè)試代碼并模擬小程序在微信客戶(hù)端的效果,在“項(xiàng)目”里可以發(fā)送到手機(jī)里預(yù)覽實(shí)際效果,如圖7所示。
圖7 項(xiàng)目編輯與調(diào)試功能
3.1.4 手機(jī)預(yù)覽
如圖8所示,點(diǎn)擊開(kāi)發(fā)者工具左側(cè)菜單欄的“項(xiàng)目”,然后點(diǎn)“預(yù)覽”,微信掃描二維碼之后即可在微信客戶(hù)端中實(shí)際體驗(yàn)。
圖8 手機(jī)預(yù)覽
3.1.5 代碼上傳與發(fā)布
在開(kāi)發(fā)者工具左側(cè)菜單欄中選擇“項(xiàng)目”,點(diǎn)擊“上傳”即可將代碼上傳到小程序服務(wù)器。之后,登錄微信公眾平臺(tái)并訪問(wèn)小程序首頁(yè),按要求填寫(xiě)相關(guān)信息并發(fā)布,即可提交審核。
在小程序中,提供了18 個(gè)藍(lán)牙api 接口,本文主要使用以下接口:openBluetoothAdapter()//用于開(kāi)啟和初始化藍(lán)牙;getBluetoothAdapterState()//用于檢查藍(lán)牙是否開(kāi)啟;startBluetoothDevicesDiscovery()//用于開(kāi)始設(shè)備搜索并當(dāng)發(fā)現(xiàn)一個(gè)設(shè)備后會(huì)觸發(fā)onBlueDeviceFound()事件;creatBLEConnection()//用于搜索到設(shè)備后連接設(shè)備;getBLEDeviceService()//用于連接成功后根據(jù)目標(biāo)服務(wù)ID找到指定的服務(wù)ID;onBLECharacteristicValueChange()//用于監(jiān)聽(tīng)數(shù)據(jù)變化。接下來(lái)將詳細(xì)闡述BLE 藍(lán)牙模塊與小程序的連接步驟:
1)藍(lán)牙初始化。首先要初始化藍(lán)牙:openBluetoothAdapter(),如圖9所示。
圖9 初始化藍(lán)牙
2)檢查與搜索藍(lán)牙,如圖10所示。
圖10 檢查與搜索藍(lán)牙
3)獲取與連接藍(lán)牙設(shè)備。開(kāi)始連接設(shè)備后,匹配到的藍(lán)牙設(shè)備ID發(fā)送連接藍(lán)牙的請(qǐng)求,連接成功之后,應(yīng)該斷開(kāi)藍(lán)牙搜索的api,然后獲取所連接藍(lán)牙設(shè)備的service服務(wù)。
4)獲取藍(lán)牙設(shè)備服務(wù)。獲取的serviceId 有多個(gè),要試著連接最終確定哪個(gè)是穩(wěn)定版本的service,獲取服務(wù)后獲取設(shè)備特征值,便可啟動(dòng)notify藍(lán)牙監(jiān)聽(tīng)功能,然后使用wx.onBLECharacteristicValueChange 用來(lái)監(jiān)聽(tīng)藍(lán)牙設(shè)備傳遞數(shù)據(jù),接收數(shù)據(jù)和發(fā)送數(shù)據(jù)必須是二進(jìn)制數(shù)據(jù)。小程序最終開(kāi)發(fā)界面如圖11所示。
硬件與軟件調(diào)試完成后,進(jìn)行智能臺(tái)燈的RGB 三色LED 燈測(cè)試,如圖12 所示??梢栽谝欢ň嚯x內(nèi)通過(guò)手機(jī)小程序?qū)GB 燈各種顏色進(jìn)行無(wú)線調(diào)試,低功耗BLE 藍(lán)牙模塊接收及發(fā)送數(shù)據(jù)正常,實(shí)現(xiàn)了預(yù)期目標(biāo)。
隨著國(guó)家經(jīng)濟(jì)的迅速發(fā)展,現(xiàn)代化、信息化、智能化正逐步影響著人們的日常生活,智能家居作為與人們生活息息相關(guān)的一種便利技術(shù),方便了人們的衣食住行,提高了居家舒適度。本文設(shè)計(jì)了一款基于微信小程序的智能臺(tái)燈系統(tǒng),利用BLE 藍(lán)牙模塊將小程序和STC15F104W 單片機(jī)連接,小程序可經(jīng)由藍(lán)牙模塊控制臺(tái)燈,實(shí)現(xiàn)了手機(jī)與家具硬件設(shè)備的互聯(lián)控制。該系統(tǒng)為小程序的軟硬件結(jié)合控制提供了良好的借鑒,未來(lái)將對(duì)智能臺(tái)燈與人體坐姿感應(yīng)報(bào)警以及明暗光線自適應(yīng)調(diào)節(jié)進(jìn)行研究,以期進(jìn)一步豐富小程序控制硬件系統(tǒng)案例。