蘇神保 劉丹 湖南商務職業技術學院 湖南省長沙市 410205
NodeMCU是基于樂鑫ESP8266芯片二次開發的物聯網開源平臺[1],由USB轉串口芯片CP2102或者CH340與ESP-12E物聯網模塊構成。燒錄不同固件可以滿足不同的集成開發環境。目前NodeMCU的開發方式主要有三種:一是AT指令方式 ,通過燒錄AT的固件包,使用AT指令與ESP8266交互,執行相應指令,本教學平臺串口WIFI模塊的透傳就是通過這種方式開發的;二是Lua開發,通過燒錄NodeMCU的固件包,使用Lua語言開發,且使用ESP內部資源;三是Arduino IDE下的開發,相當于直接編寫固件,編譯之后,燒錄進ESP,本教學平臺NodeMCU下位機程序設計就是在Arduino集成開發環境下安裝ESP8266資源包來實現的。
為了滿足物聯網課程日常教學及實驗項目需要,本平臺使用51單片機及傳感器課程教學所用器件,如使用光敏傳感器(模擬值)來獲取當前環境光線強度,使用DS18B20溫度傳感器來獲取當前環境溫度,使用DHT11溫濕度傳感器來獲取當前溫度和濕度,使用SR04超聲波傳感器來獲取障礙物距離,借助NodeMCU自身GPIO口和繼電器來控制房間燈的開關,使用S90舵機來模擬房間開門關門動作。因NodeMCU可用于外接傳感器的GPIO口有限,如需外接其它傳感器,替換上述部分傳感器即可。
教學平臺總體設計框圖如下圖圖1所示:

圖1 物聯網教學平臺總體框架圖
上述核心控制板也可以換成Arduino Uno作為入門級教學主控單元,需要中文顯示可以將LCD1602替換為OLED12864,但為了體現NodeMCU和ESP8266在物聯網領域的應用,建議核心控制單元使用NodeMCU。另外地,串口WIFI模塊ESP-12E也可以直接用NodeMCU來取代。Android手機與Windows電腦上位機端程序可以網絡下載,也可以自行開發。
Arduino集成開發環境作為物聯網硬件開發工具得到廣泛運用的一個主要因素就是具有開源性,用戶只要下載相應的庫文件即可,而不需要清楚的知道各個模塊內部是如何驅動的。庫文件是類庫和函數的集合,庫文件的使用可以提高代碼編寫效率及程序可讀性[2]。
光敏電阻傳感器(模擬)模塊的設計主要是為了讓學生了解NodeMCU的模擬analog輸入輸出部分知識[3]。在NodeMCU中,有且僅有一個模擬輸入管腳A0用于模擬輸入,取值范圍為0~1023,讀取該管腳的模擬PWM值并顯示在I2C1602液晶顯示器和串口上,用于顯示當前光照強度,同時將該PWM值映射(MAP)至模擬輸出管腳(外接LED)上,實現感光燈的效果,加強實驗的興趣性。
根據Arduino集成開發環境的開源性,可以在GitHub官網上下載該模塊的庫文件,并將該庫文件拷貝至libraries目錄,按照庫文件的示例程序和實際情況來編寫相應程序即可。但在實際開發過程中,庫文件種類繁多,編譯容易出錯。為了提高教學效率,建議安裝DFRobot圖形化編程Mind+軟件,該軟件安裝目錄底下自身帶有日常常見傳感器庫文件,按同樣的方式拷貝至libraries目錄,程序包含該頭文件并創建對象即可。示例程序如下圖圖2所示:

圖2 DS18B20庫文件使用方法
教學實驗平臺中所使用的其余傳感器如DHT11溫濕度傳感器、S90舵機、SR40超聲波傳感器以及I[2]C1602液晶顯示器均可以采用同樣的方法進行。如此一來,大大簡化了程序設計的難度,提高其實用性。庫文件的獲取除了上述兩種方式外,還可以利用Arduino IDE自帶庫管理器通過搜索關鍵字在線下載獲得,對于學有余力的同學而言,可以按格式要求自己編寫庫文件。
NodeMCU硬件電路自帶有串行通信接口,外接串口藍牙模塊或者串口WIFI模塊即可實現與上位機的交互通信,也是實現物聯網的關鍵。串口藍牙模塊的AT指令配置相對較為簡單,這里重點舉例介紹一下串口WIFI模塊。在使用AT指令與ESP-12E串口模塊交互時,首先需要對模塊燒錄AT固件[4]。
//設置WiFi應用模式為AP熱點模式
AT+CWMODE =2
//設置模塊AP模式下的SSID號、密碼、信道號、加密方式。
AT+CWSAP="ESP-12EAP","12345678",11,0
//設置單連接模式。
AT+CIPMUX=0
//設置為透傳模式。
AT+CIPMODE=1
//進入透傳模式,并保存。(進入后模塊就一直為透傳模式,IP地址為上位機連接模塊所發出WIFI熱點信號時獲取的IP地址,一般為192.168.4.2。需要退出則取消發送新行,發送+++,返回CLOSED,然后執行AT+RESTORE命令恢復出廠設置。)
AT+SAVETRANSLINK=1,"上位機的IP",8080,"TCP"
執行完上述AT命令后,此時上位機IP做服務器,服務器端口號為8080,模塊作為客戶端上電后自動連接服務器,接收上位機發送命令并將下位機數據上傳至手機或者電腦上位機端。
藍牙上位機一般通過Android手機APP實現,WIFI遠程控制上位機則既可以是Windows電腦,也可以是Android手機。上位機程序涉及到Android和Windows程序開發,非本實驗平臺教學內容,學生可通過互聯網下載相應程序安裝調試即可。
給出本實驗平臺上位機Android藍牙串口APP和Windows Socket Tool應用程序調試界面分別如圖3、4所示:

圖3 Android上位機藍牙及WIFI調試界面

圖4 Windows上位機WIFI調試界面
本實驗平臺設計的目的是為了滿足高等職業院校移動互聯與應用技術專業物聯網課程教學需要,在課程體系的設計中,遵循由淺入深、由易到難、由分到合原則,總體上可以分為基礎模塊、傳感器模塊、物聯網模塊三個部分開展教學。基礎模塊包含Arduino開發ESP8266環境的搭建、NodeMCU硬件介紹、板載LED及按鍵操作、模擬輸入輸出(光敏電阻傳感器)、串口打印輸出等內容;傳感器模塊包含I2C1602LCD、舵機、DS18B20溫度傳感器、DHT11溫濕度傳感器、SR04超聲波傳感器等內容;物聯網部分主要介紹串口藍牙模塊和串口WIFI模塊的使用方法。具體教學安排如下表表1所示:

表1 基于NodeMCU物聯網實驗平臺教學內容安排表
本物聯網IOT實驗教學平臺以NodeMCU為載體,利用常見物聯網傳感器獲取相關信息,借助藍牙和WIFI通信方式,達到了物聯網的基本功能。但由于WIFI模塊尚未接入云端,僅僅實現局域網內的控制與信息獲取,云端遠程控制有待進一步開展研究。
物聯網是信息科技產業的第三次革命,是通過信息傳感設備,按約定的協議,將任何物體與網絡相連接,物體通過信息傳播媒介進行信息交換和通信[5]。職業教育要緊跟時代發展需要,培養順應時代發展趨勢的綜合性人才。