楊永明,徐海霞
( 1.西安建筑科技大學(xué) 理學(xué)院,陜西 西安 710055;2.寧夏醫(yī)科大學(xué)圖書館,寧夏 銀川 750004)
通過網(wǎng)絡(luò)對家中設(shè)備實行遠程控制或者語音控制,相比普通家居具有更多優(yōu)勢。具備遠程控制、語音控制、自動報警、在線監(jiān)控、自動通風等功能的智能家居發(fā)展迅速,并且依舊處于探索階段。通過物聯(lián)網(wǎng)技術(shù)開發(fā)智能家居不僅是緊跟社會發(fā)展的明智之舉,也是搶占市場發(fā)展先機的必由之路。
通過學(xué)習物聯(lián)網(wǎng)技術(shù)、程序編程語言編寫簡易的硬件程序,實現(xiàn)硬件與軟件連接,設(shè)計制作具有遠程控制功能的智能插板。
通過硬件將物體接入互聯(lián)網(wǎng),再由硬件芯片通過各種通信協(xié)議與微控制器和微處理器通信,由相應(yīng)的控制器控制設(shè)備運轉(zhuǎn)、連接移動端設(shè)備或者PC端,移動端通過云端控制器實現(xiàn)物體的遠程控制。本次設(shè)計包括云平臺的搭建、硬件程序設(shè)計和移動端設(shè)計三部分。下面主要介紹介紹硬件程序設(shè)計。
選擇使用由安信公司基于ESP8266模塊設(shè)計的ESP8266-nodeMCU開發(fā)板,雖然ESP8266-nodeMCU每個引腳都有明確的標號,且有排插,便于線路連接,但ESP8266-nodeMCU開發(fā)板上的引腳標號與ESP8266模塊的引腳功能并不匹配,所以需要了解ESP8266-nodeMCU開發(fā)板引腳匹配的ESP8266模塊的引腳功能。以GPIO開頭的引腳標號代表實際ESP8266模塊的引腳標號,D開頭的引腳代表ESP8266-nodeMCU開發(fā)板上的引腳標號。在編寫代碼時,假如使用“digitalWrite(2,HIGH)”語句,表示改變引腳GPIO2電平為高,對應(yīng)的開發(fā)板引腳為D4;假如使用“digitalWrite(D2,HIGH)”語句,表示改變D2引腳的電平為高。
使用Arduino IDE軟件對ESP8266-nodeMCU開發(fā)板進行程序編譯,當完成Arduino IDE軟件的下載之后需要更改開發(fā)板的型號以及連接的串口。首先打開計算機管理界面,進入設(shè)備管理器界面,查看電腦連接ESP8266-nodeMCU開發(fā)板使用的端口。之后進入Arduino軟件,在其工具欄中找到“端口”一欄,選擇ESP8266-nodeMCU開發(fā)板使用的端口,然后在此工具欄中的開發(fā)板中選擇ESP8266-nodeMCU。
根據(jù)代碼實現(xiàn)的功能,可以將程序代碼大概分為6個部分,分別是:定義頭文件、WiFi初始化、接口定義、循環(huán)檢測、控制程序以及上傳數(shù)據(jù)。
2.2.1 頭文件定義程序
此部分程序用于定義需要用到的頭文件以及信息。WiFi_SSID和WiFi_PASSWD是定義ESP8266開發(fā)板連接的WiFi名稱和密碼,只能連接PRODUCT_KEY、DEVICE_NAME以及DEVICE_SECRET定義之前云端搭建時創(chuàng)建的ESP8266設(shè)備的阿里云三元組信息。ALINK_TOPIC_PROP_SET定義程序接收信息時用到的Topic,ALINK_TOPIC_PROP_POST定義ESP8266開發(fā)板上傳數(shù)據(jù)使用的Topic信息。其中,/sys/a1GccfpSkGH/esp8266/thing/service/property/set和/a1GccfpSkGH/esp8266/user/1均來自阿里云物聯(lián)網(wǎng)平臺中的云產(chǎn)品流轉(zhuǎn)規(guī)則Topic,其中一個Topic具有發(fā)布權(quán)限,另一個Topic具有訂閱權(quán)限。
2.2.2 WiFi初始化程序
WiFi初始化需調(diào)用ESP8266 WiFi庫的函數(shù)。這部分程序定義WiFi如何通過調(diào)用函數(shù)實現(xiàn)連接。
2.2.3 接口定義程序
該部分程序主要用來定義需要用到的ESP8266-nodeMCU開發(fā)板上的引腳功能,此程序?qū)?號引腳定義為輸出引腳,并把引腳的初始電平定義為高電平。由于本次設(shè)計使用的繼電器為低電平,所以引腳電平為高,使繼電器處于關(guān)閉狀態(tài),只有ESP8266接收到開關(guān)信號時電平變?yōu)榈碗娖讲拍苡|發(fā)繼電器工作。此處還需要注意的是,定義的引腳為ESP8266模塊上的GPIO2號引腳,在連接硬件電路時,ESP8266-nodeMCU開發(fā)板上的引腳不能選擇D2引腳,需要選擇開發(fā)板上標號為D4的引腳?!癷nit_WiFi(WiFi_SSID,WiFi_PASSWD)”用于調(diào)用WiFi初始化函數(shù),mqttClient.setCallback(mqtt_callback)語句是調(diào)用之前PubSubClient.h文件中的mqttClient函數(shù),可實現(xiàn)與阿里云端的連接。
2.2.4 循環(huán)檢測函數(shù)
程序主要調(diào)用了mqtt函數(shù)中的loop循環(huán)函數(shù),該函數(shù)主要用于對當前mqtt的連接狀態(tài)進行檢查,如果檢測到連接斷開,程序會自動運行連接函數(shù),重新連接mqtt。該函數(shù)能夠保證設(shè)備網(wǎng)絡(luò)處于連接狀態(tài)。
2.2.5 控制程序
這部分代碼可實現(xiàn)ESP8266開發(fā)板的具體功能。前半段代碼解析需由移動端發(fā)送Json數(shù)據(jù)。阿里云使用Topic進行設(shè)備之間的數(shù)據(jù)傳輸,而Topic中的數(shù)據(jù)為JSON格式,解析之后將數(shù)據(jù)存進WeChat_data,如果是數(shù)據(jù)是1,則GPIO2引腳置為低電平,使繼電器打開,插板電路接通;如果數(shù)據(jù)是0,則GPIO2引腳置為高電平,繼電器關(guān)閉,插板電路斷開。
2.2.6 數(shù)據(jù)上傳程序
此部分程序代碼用于將ESP8266中的數(shù)據(jù)寄存于Topic中,通過Topic向移動端發(fā)送,由移動端接收溫度與濕度數(shù)據(jù)。由于缺少溫度與濕度的檢測裝置以及相關(guān)傳感器,所以在程序中使用隨機數(shù)替代。
運用物聯(lián)網(wǎng)技術(shù)設(shè)計了智能插板,通過使用由上海樂鑫公司開發(fā)的WiFi8266模塊,使得硬件電路能夠連接WiFi,這無疑是物聯(lián)網(wǎng)運行的基礎(chǔ),而代碼功能的實現(xiàn)是硬件物聯(lián)網(wǎng)功能實現(xiàn)的核心。