蘇神保 劉丹 湖南商務(wù)職業(yè)技術(shù)學院 湖南省長沙市 410205
NodeMCU是基于樂鑫ESP8266芯片二次開發(fā)的物聯(lián)網(wǎng)開源平臺[1],由USB轉(zhuǎn)串口芯片CP2102或者CH340與ESP-12E物聯(lián)網(wǎng)模塊構(gòu)成。燒錄不同固件可以滿足不同的集成開發(fā)環(huán)境。目前NodeMCU的開發(fā)方式主要有三種:一是AT指令方式 ,通過燒錄AT的固件包,使用AT指令與ESP8266交互,執(zhí)行相應(yīng)指令,本教學平臺串口WIFI模塊的透傳就是通過這種方式開發(fā)的;二是Lua開發(fā),通過燒錄NodeMCU的固件包,使用Lua語言開發(fā),且使用ESP內(nèi)部資源;三是Arduino IDE下的開發(fā),相當于直接編寫固件,編譯之后,燒錄進ESP,本教學平臺NodeMCU下位機程序設(shè)計就是在Arduino集成開發(fā)環(huán)境下安裝ESP8266資源包來實現(xiàn)的。
為了滿足物聯(lián)網(wǎng)課程日常教學及實驗項目需要,本平臺使用51單片機及傳感器課程教學所用器件,如使用光敏傳感器(模擬值)來獲取當前環(huán)境光線強度,使用DS18B20溫度傳感器來獲取當前環(huán)境溫度,使用DHT11溫濕度傳感器來獲取當前溫度和濕度,使用SR04超聲波傳感器來獲取障礙物距離,借助NodeMCU自身GPIO口和繼電器來控制房間燈的開關(guān),使用S90舵機來模擬房間開門關(guān)門動作。因NodeMCU可用于外接傳感器的GPIO口有限,如需外接其它傳感器,替換上述部分傳感器即可。
教學平臺總體設(shè)計框圖如下圖圖1所示:
圖1 物聯(lián)網(wǎng)教學平臺總體框架圖
上述核心控制板也可以換成Arduino Uno作為入門級教學主控單元,需要中文顯示可以將LCD1602替換為OLED12864,但為了體現(xiàn)NodeMCU和ESP8266在物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用,建議核心控制單元使用NodeMCU。另外地,串口WIFI模塊ESP-12E也可以直接用NodeMCU來取代。Android手機與Windows電腦上位機端程序可以網(wǎng)絡(luò)下載,也可以自行開發(fā)。
Arduino集成開發(fā)環(huán)境作為物聯(lián)網(wǎng)硬件開發(fā)工具得到廣泛運用的一個主要因素就是具有開源性,用戶只要下載相應(yīng)的庫文件即可,而不需要清楚的知道各個模塊內(nèi)部是如何驅(qū)動的。庫文件是類庫和函數(shù)的集合,庫文件的使用可以提高代碼編寫效率及程序可讀性[2]。
光敏電阻傳感器(模擬)模塊的設(shè)計主要是為了讓學生了解NodeMCU的模擬analog輸入輸出部分知識[3]。在NodeMCU中,有且僅有一個模擬輸入管腳A0用于模擬輸入,取值范圍為0~1023,讀取該管腳的模擬PWM值并顯示在I2C1602液晶顯示器和串口上,用于顯示當前光照強度,同時將該PWM值映射(MAP)至模擬輸出管腳(外接LED)上,實現(xiàn)感光燈的效果,加強實驗的興趣性。
根據(jù)Arduino集成開發(fā)環(huán)境的開源性,可以在GitHub官網(wǎng)上下載該模塊的庫文件,并將該庫文件拷貝至libraries目錄,按照庫文件的示例程序和實際情況來編寫相應(yīng)程序即可。但在實際開發(fā)過程中,庫文件種類繁多,編譯容易出錯。為了提高教學效率,建議安裝DFRobot圖形化編程Mind+軟件,該軟件安裝目錄底下自身帶有日常常見傳感器庫文件,按同樣的方式拷貝至libraries目錄,程序包含該頭文件并創(chuàng)建對象即可。示例程序如下圖圖2所示:
圖2 DS18B20庫文件使用方法
教學實驗平臺中所使用的其余傳感器如DHT11溫濕度傳感器、S90舵機、SR40超聲波傳感器以及I[2]C1602液晶顯示器均可以采用同樣的方法進行。如此一來,大大簡化了程序設(shè)計的難度,提高其實用性。庫文件的獲取除了上述兩種方式外,還可以利用Arduino IDE自帶庫管理器通過搜索關(guān)鍵字在線下載獲得,對于學有余力的同學而言,可以按格式要求自己編寫庫文件。
NodeMCU硬件電路自帶有串行通信接口,外接串口藍牙模塊或者串口WIFI模塊即可實現(xiàn)與上位機的交互通信,也是實現(xiàn)物聯(lián)網(wǎng)的關(guān)鍵。串口藍牙模塊的AT指令配置相對較為簡單,這里重點舉例介紹一下串口WIFI模塊。在使用AT指令與ESP-12E串口模塊交互時,首先需要對模塊燒錄AT固件[4]。
//設(shè)置WiFi應(yīng)用模式為AP熱點模式
AT+CWMODE =2
//設(shè)置模塊AP模式下的SSID號、密碼、信道號、加密方式。
AT+CWSAP="ESP-12EAP","12345678",11,0
//設(shè)置單連接模式。
AT+CIPMUX=0
//設(shè)置為透傳模式。
AT+CIPMODE=1
//進入透傳模式,并保存。(進入后模塊就一直為透傳模式,IP地址為上位機連接模塊所發(fā)出WIFI熱點信號時獲取的IP地址,一般為192.168.4.2。需要退出則取消發(fā)送新行,發(fā)送+++,返回CLOSED,然后執(zhí)行AT+RESTORE命令恢復(fù)出廠設(shè)置。)
AT+SAVETRANSLINK=1,"上位機的IP",8080,"TCP"
執(zhí)行完上述AT命令后,此時上位機IP做服務(wù)器,服務(wù)器端口號為8080,模塊作為客戶端上電后自動連接服務(wù)器,接收上位機發(fā)送命令并將下位機數(shù)據(jù)上傳至手機或者電腦上位機端。
藍牙上位機一般通過Android手機APP實現(xiàn),WIFI遠程控制上位機則既可以是Windows電腦,也可以是Android手機。上位機程序涉及到Android和Windows程序開發(fā),非本實驗平臺教學內(nèi)容,學生可通過互聯(lián)網(wǎng)下載相應(yīng)程序安裝調(diào)試即可。
給出本實驗平臺上位機Android藍牙串口APP和Windows Socket Tool應(yīng)用程序調(diào)試界面分別如圖3、4所示:
圖3 Android上位機藍牙及WIFI調(diào)試界面
圖4 Windows上位機WIFI調(diào)試界面
本實驗平臺設(shè)計的目的是為了滿足高等職業(yè)院校移動互聯(lián)與應(yīng)用技術(shù)專業(yè)物聯(lián)網(wǎng)課程教學需要,在課程體系的設(shè)計中,遵循由淺入深、由易到難、由分到合原則,總體上可以分為基礎(chǔ)模塊、傳感器模塊、物聯(lián)網(wǎng)模塊三個部分開展教學?;A(chǔ)模塊包含Arduino開發(fā)ESP8266環(huán)境的搭建、NodeMCU硬件介紹、板載LED及按鍵操作、模擬輸入輸出(光敏電阻傳感器)、串口打印輸出等內(nèi)容;傳感器模塊包含I2C1602LCD、舵機、DS18B20溫度傳感器、DHT11溫濕度傳感器、SR04超聲波傳感器等內(nèi)容;物聯(lián)網(wǎng)部分主要介紹串口藍牙模塊和串口WIFI模塊的使用方法。具體教學安排如下表表1所示:
表1 基于NodeMCU物聯(lián)網(wǎng)實驗平臺教學內(nèi)容安排表
本物聯(lián)網(wǎng)IOT實驗教學平臺以NodeMCU為載體,利用常見物聯(lián)網(wǎng)傳感器獲取相關(guān)信息,借助藍牙和WIFI通信方式,達到了物聯(lián)網(wǎng)的基本功能。但由于WIFI模塊尚未接入云端,僅僅實現(xiàn)局域網(wǎng)內(nèi)的控制與信息獲取,云端遠程控制有待進一步開展研究。
物聯(lián)網(wǎng)是信息科技產(chǎn)業(yè)的第三次革命,是通過信息傳感設(shè)備,按約定的協(xié)議,將任何物體與網(wǎng)絡(luò)相連接,物體通過信息傳播媒介進行信息交換和通信[5]。職業(yè)教育要緊跟時代發(fā)展需要,培養(yǎng)順應(yīng)時代發(fā)展趨勢的綜合性人才。