楊永明,徐海霞
( 1.西安建筑科技大學 理學院,陜西 西安 710055;2.寧夏醫科大學圖書館,寧夏 銀川 750004)
通過網絡對家中設備實行遠程控制或者語音控制,相比普通家居具有更多優勢。具備遠程控制、語音控制、自動報警、在線監控、自動通風等功能的智能家居發展迅速,并且依舊處于探索階段。通過物聯網技術開發智能家居不僅是緊跟社會發展的明智之舉,也是搶占市場發展先機的必由之路。
通過學習物聯網技術、程序編程語言編寫簡易的硬件程序,實現硬件與軟件連接,設計制作具有遠程控制功能的智能插板。
通過硬件將物體接入互聯網,再由硬件芯片通過各種通信協議與微控制器和微處理器通信,由相應的控制器控制設備運轉、連接移動端設備或者PC端,移動端通過云端控制器實現物體的遠程控制。本次設計包括云平臺的搭建、硬件程序設計和移動端設計三部分。下面主要介紹介紹硬件程序設計。
選擇使用由安信公司基于ESP8266模塊設計的ESP8266-nodeMCU開發板,雖然ESP8266-nodeMCU每個引腳都有明確的標號,且有排插,便于線路連接,但ESP8266-nodeMCU開發板上的引腳標號與ESP8266模塊的引腳功能并不匹配,所以需要了解ESP8266-nodeMCU開發板引腳匹配的ESP8266模塊的引腳功能。以GPIO開頭的引腳標號代表實際ESP8266模塊的引腳標號,D開頭的引腳代表ESP8266-nodeMCU開發板上的引腳標號。在編寫代碼時,假如使用“digitalWrite(2,HIGH)”語句,表示改變引腳GPIO2電平為高,對應的開發板引腳為D4;假如使用“digitalWrite(D2,HIGH)”語句,表示改變D2引腳的電平為高。
使用Arduino IDE軟件對ESP8266-nodeMCU開發板進行程序編譯,當完成Arduino IDE軟件的下載之后需要更改開發板的型號以及連接的串口。首先打開計算機管理界面,進入設備管理器界面,查看電腦連接ESP8266-nodeMCU開發板使用的端口。之后進入Arduino軟件,在其工具欄中找到“端口”一欄,選擇ESP8266-nodeMCU開發板使用的端口,然后在此工具欄中的開發板中選擇ESP8266-nodeMCU。
根據代碼實現的功能,可以將程序代碼大概分為6個部分,分別是:定義頭文件、WiFi初始化、接口定義、循環檢測、控制程序以及上傳數據。
2.2.1 頭文件定義程序


此部分程序用于定義需要用到的頭文件以及信息。WiFi_SSID和WiFi_PASSWD是定義ESP8266開發板連接的WiFi名稱和密碼,只能連接PRODUCT_KEY、DEVICE_NAME以及DEVICE_SECRET定義之前云端搭建時創建的ESP8266設備的阿里云三元組信息。ALINK_TOPIC_PROP_SET定義程序接收信息時用到的Topic,ALINK_TOPIC_PROP_POST定義ESP8266開發板上傳數據使用的Topic信息。其中,/sys/a1GccfpSkGH/esp8266/thing/service/property/set和/a1GccfpSkGH/esp8266/user/1均來自阿里云物聯網平臺中的云產品流轉規則Topic,其中一個Topic具有發布權限,另一個Topic具有訂閱權限。
2.2.2 WiFi初始化程序

WiFi初始化需調用ESP8266 WiFi庫的函數。這部分程序定義WiFi如何通過調用函數實現連接。
2.2.3 接口定義程序

該部分程序主要用來定義需要用到的ESP8266-nodeMCU開發板上的引腳功能,此程序將2號引腳定義為輸出引腳,并把引腳的初始電平定義為高電平。由于本次設計使用的繼電器為低電平,所以引腳電平為高,使繼電器處于關閉狀態,只有ESP8266接收到開關信號時電平變為低電平才能觸發繼電器工作。此處還需要注意的是,定義的引腳為ESP8266模塊上的GPIO2號引腳,在連接硬件電路時,ESP8266-nodeMCU開發板上的引腳不能選擇D2引腳,需要選擇開發板上標號為D4的引腳?!癷nit_WiFi(WiFi_SSID,WiFi_PASSWD)”用于調用WiFi初始化函數,mqttClient.setCallback(mqtt_callback)語句是調用之前PubSubClient.h文件中的mqttClient函數,可實現與阿里云端的連接。
2.2.4 循環檢測函數

程序主要調用了mqtt函數中的loop循環函數,該函數主要用于對當前mqtt的連接狀態進行檢查,如果檢測到連接斷開,程序會自動運行連接函數,重新連接mqtt。該函數能夠保證設備網絡處于連接狀態。
2.2.5 控制程序

這部分代碼可實現ESP8266開發板的具體功能。前半段代碼解析需由移動端發送Json數據。阿里云使用Topic進行設備之間的數據傳輸,而Topic中的數據為JSON格式,解析之后將數據存進WeChat_data,如果是數據是1,則GPIO2引腳置為低電平,使繼電器打開,插板電路接通;如果數據是0,則GPIO2引腳置為高電平,繼電器關閉,插板電路斷開。
2.2.6 數據上傳程序

此部分程序代碼用于將ESP8266中的數據寄存于Topic中,通過Topic向移動端發送,由移動端接收溫度與濕度數據。由于缺少溫度與濕度的檢測裝置以及相關傳感器,所以在程序中使用隨機數替代。
運用物聯網技術設計了智能插板,通過使用由上海樂鑫公司開發的WiFi8266模塊,使得硬件電路能夠連接WiFi,這無疑是物聯網運行的基礎,而代碼功能的實現是硬件物聯網功能實現的核心。