朱曉光 劉好杰 王剛
摘 要:物聯(lián)網是當下的“網紅”,多少人都想一探究竟,但復雜的程序、高深的協(xié)議將大多數人拒之門外,本文正是針對此種狀況,選擇適合初學者的硬件和開發(fā)集成環(huán)境,從基本概念到具體應用,使讀者從整體解釋了物聯(lián)網的開發(fā)流程,理解其本質。
關鍵詞:物聯(lián)網;ESP8266;Mixly;Blynk
物聯(lián)網,顧名思義,即“萬物相連的互聯(lián)網”,是在互聯(lián)網基礎上延伸和擴展的網絡,將各種信息傳感設備與互聯(lián)網結合起來而形成的一個巨大網絡,實現(xiàn)在任何時間、任何地點,人、機、物的互聯(lián)互通。它起源于互聯(lián)網(計算機的網絡),但它的連接實體已不僅僅局限于計算機,而是包括了汽車、家電、醫(yī)療設備、智能儀器等萬事萬物,正如其英文名字——The Internet of Things,簡稱IOT。
1 物聯(lián)網基本理念
物聯(lián)網的基本結構是通過無線或有線的方式將萬物連接到一個服務器平臺上,即所謂的“云”,云端包含了所有的信息交換,也儲存了所有的信息,這就是“大數據”,這些數據加以利用,便可分析用戶的各類信息,因此,在物聯(lián)網的世界里,隱私是不存在的。但是,物聯(lián)網帶來的便利也是巨大的,最簡單的應用場景:在你下班回家之前,通過手機APP控制家里的空調提前工作,當你回到家中,便是宜人的環(huán)境,舒適的溫度。
當然,你也是要付出信息代價的:你的下班時間、你喜歡的溫度、你空調的型號等等,利用這些信息可以分析你的工作性質、生活習慣、住房面積、甚至你的經濟情況,再綜合其他設備提供的信息,你的大數據就產生了。當然,這也為你的生活帶來了便利,根據你的習慣和能力推薦適合你的產品。比如,在你的空調難以達到你的預設溫度時,淘寶的推送就是一臺大功率的空調,“云”似乎比你自己還了解你!
當前,這種情況涉及的討論越來越多,到底是我們利用大數據實現(xiàn)了便捷,還是我們被大數據利用,成為數據的附庸?似乎“西部世界”中也討論了這樣的問題。這不是我們今天要討論的重點,既然享受服務,自然要付出代價。但我們應該了解的是這一切發(fā)生的過程,當你再收到某些推送時,你應該了解的是這一系列產生的機制,哪些是你真正的需要,利用大數據的便利,而避免被“云”左右。說了這么多,只是要引出今天要介紹的一款物聯(lián)網芯片——ESP8266。
2 ESP8266簡介
說到連接互聯(lián)網,尤其是設備通過單片機聯(lián)網,之前并不是件容易的事,開發(fā)者需要增加硬件模塊,掌握互聯(lián)網的各類協(xié)議,編寫單片機與模塊的通信代碼,受限于單片機的存儲量和運行速度,這方面的應用并不廣泛,尤其是對于業(yè)余開發(fā)者更是困難重重。直到2015年,由樂鑫公司出的一款WiFi芯片——ESP8266,它以其超低的價格,引起了物聯(lián)網業(yè)界的軒然大波,大大促進了物聯(lián)網的發(fā)展!由于WiFi設備需要專業(yè)的射頻設計,因此使用者往往直接購買集成了ESP8266芯片的模組,如安信可的ESP-12集成了天線、Flash等元件的模組。
ESP8266準確來說是集成了WiFi功能的MCU,它的開發(fā)方式有以下幾種:
1)AT指令方式:燒錄AT的固件包,使用AT指令與ESP8266交互,執(zhí)行相應指令。該方式開發(fā)簡單,資料較多。只需知道AT指令集,以及它的通信方式即可。但缺點是浪費資源,需要額外的MCU與其通信,不能獨立完成某項功能。
2)樂鑫開發(fā)包SDK,專門針對樂鑫芯片開發(fā),但對于業(yè)余者相對吃力。
3)NodeMCU的lua開發(fā):燒錄NodeMCU的固件包,使用Lua語言開發(fā),使用ESP內部資源。該方法節(jié)省資源,開發(fā)簡單,代碼量少。但lua解釋器執(zhí)行效率較低,需要準備相應功能的固件,燒錄進去,然后使用lua語言和工具與之調試。
4)Arduino IDE下的開發(fā):相當于直接編寫固件,編譯之后,燒錄進ESP,使用ESP內部資源。這種方式使用當前非常流行的Arduino集成開發(fā)環(huán)境,集編程和燒錄一體,使用方便。語言執(zhí)行效率高,節(jié)省資源,庫函數比較多,開發(fā)語言簡單,能夠很快上手。由于Arduino的用戶量巨大,樂鑫公司也推薦使用該方式進行開發(fā)。本文將重點介紹基于Arduino的ESP8266開發(fā)。
3 Mixly(米思齊)與Blynk
硬件有了,接下來便是軟件,物聯(lián)網軟件包括兩大部分:MCU軟件和客戶端軟件,MCU軟件既ESP8266的程序,客戶端軟件則是在手機上或計算機上運行的與MCU進行交互的界面,兩者并非直接通信,而是通過中介——云。MCU程序將設備的運行狀態(tài)和各類參數上傳到云端,經過云端處理后發(fā)送到客戶端;客戶端的各類指令同樣經過云端中介后發(fā)送給MCU執(zhí)行。接下來重點介紹這兩種軟件的集成開發(fā)環(huán)境:Mixly(米思齊)與Blynk。
Arduino是基于C語言為基礎的,如果開發(fā)者有過51或AVR單片機學習經歷,那么使用Arduino將得心應手,可以說更加方便簡單,但對于很多非專業(yè)人員,尤其是想學習編程的青少年,仍有一定難度,加之當前編程教育的興起,大量圖形化編程工具應運而生,最為著名的便是麻省理工學院開發(fā)的Scratch。為了推廣創(chuàng)客教育,北京師范大學教育學部創(chuàng)客教育實驗室傅騫教授團隊開發(fā)的Mixly是一款專門針對Arduino的圖形化編程軟件,而且它允許外加函數庫,大大豐富了其資源,針對物聯(lián)網開發(fā)甚至推出了專用版本——Mixly For IoT,這不得不說是廣大物聯(lián)網開發(fā)愛好者的福音!
Blynk既云平臺,是一款服務器在國外的物聯(lián)網開發(fā)軟件,可以通過手機開發(fā)客戶端程序,而且Mixly中已有專門針對Blynk的庫函數,開發(fā)者可以不必關注低層協(xié)議,而把重點放在創(chuàng)意實現(xiàn)上。此外Blynk允許自建服務器,可以選擇國內物聯(lián)網愛好者搭建的一些服務平臺,保證通信的穩(wěn)定性;也可以搭建自己的服務器,提高數據安全,并在必要時進行數據分析。此外,云平臺還有阿里云、百度云、中國移動的OneNet等等,對于初學者和個人用戶,Blynk相對而言上手較為簡單,應用比較靈活。
4 典型應用實例
學習一個新事物,理論看的再多也難以理解其本質,只有通過一個具體的項目,完整的開發(fā)過程才會使學習者形成整體認知,避免只見樹木,不見森林的學習陷阱。我們以一個最簡單的應用場景為例進行開發(fā):遠程控制。通過手機端發(fā)送指令,控制聯(lián)網的設備工作,這個設備可以是熱水器、空調、電飯煲……在這里我們以LED代替,也就是說,手機客戶端控制LED的亮與滅。
在這里我們使用的ESP8266模塊是NodeMCU,只要Arduino中安裝了ESP8266的開發(fā)包,NodeMCU就包含其中,在米思齊中選擇開發(fā)板型號為NodeMCU即可,其Blynk物聯(lián)網函數庫中也包含了大量資源,如圖1所示。
在此實例的應用中,ESP8266程序只需要做一件工作——聯(lián)網。在米思齊中,聯(lián)網只需要一個代碼模塊,如圖2所示。服務器地址可以選擇Blynk的官方服務器blynk-cloud.com,也可以選擇國內服務器,如筆者用的116.62.49.166。在此需要特別注意的是,在使用國內服務器時,需要將IP地址格式的“.”用英文輸入法的“,”代替。此后便是WiFi名稱和密碼,根據實際情況輸入即可。關鍵在于第四個參數Blynk授權碼,此授權碼是客戶端與MCU端進行通信的“接頭暗號”,由Blynk App創(chuàng)建新項目時生成的具有唯一性的編碼,通過此編碼,手機客戶端和ESP8266開發(fā)板實現(xiàn)相互對應。這些信息設置完成后,上傳程序,NodeMCU開發(fā)板便連接到了設定的服務器上,此后的工作便是通過手機客戶端控制其端口輸出0/1,D6端口連接LED,輸出為“1”,燈亮,反之,燈滅。在此需要注意的是NodeMCU開發(fā)板的D6端口并不對應ESP8266的GPIO6,而是GPIO12,如圖所示,因此,客戶端程序對于ESP 8266的控制端應為GP12。
最后一項就是開發(fā)手機端的Blynk程序,開發(fā)流程如下:1)在注冊賬號時設置自定義服務器地址,否則默認官方服務器;2)創(chuàng)建新工程,我們命名為“遠程控制”;3)在工程設置界面可以獲取Blynk授權碼Auth Token,此碼即為前文提及的與ESP8266的“接頭暗號”;4)在開發(fā)界面添加組件Button;5)對組件進行設置,名稱為“按鈕”,OUTPUT設置為GP12,MODE(按鈕形式)設置為SWITCH,其他默認;6)完成設置后界面顯示按鈕及其對應端口,單擊右上角三角形進行運行發(fā)布;7)如果此時ESP8266已通電并聯(lián)網,界面顯示設備在線信息,單擊按鈕可實現(xiàn)LED的亮滅控制。至此,遠程控制LED項目完成,將硬件電路略作修改,將LED換為其他元件,如繼電器等,便可實現(xiàn)用電設備的遠程控制。
5 結束語
本文通過一個最為簡單的應用場景,利用ESP8266的NodeMCU開發(fā)板,基于Mixly與Blynk實現(xiàn)了手機對物聯(lián)網設備的遠程控制,跟隨筆者的步驟,可實現(xiàn)項目開發(fā),激發(fā)學習熱情,并結合自身學習過程遇到的問題,有效幫助初學者避開陷阱,提高學習效率,輕松入門。