前 言
現代計算機系統及互聯網絡的發展取決于人類的交互和實踐活動。人們能夠通過各種方式,譬如敲擊一下鍵盤、按下一個錄制按鈕、制作一幅數碼圖畫或掃描一個條形碼來獲得各種數據。然而人類獲取數據的能力似乎還不是那么完美,因為人的視野總是有限的,還缺少足夠高的精確度和充足的時間,所以人類從現實世界中獲取數據的能力還不甚理想。那么怎樣做才能彌補人類這種獲取和儲存數據的不足之處呢?這一點顯得至關重要:如果令計算機系統保持與數據之間的良好聯系,而且不必依賴于人與人之間的互動就能有效地獲取數據,那將會是一種十分理想的辦法。即使計算機系統(因數據量太大)變得乏力無能或者索性宕機,那也只需要對它們進行替換或者修復就可以繼續工作下去。因此,使用一種新式的計算機系統,它不依賴于人與人之間的互動,具有自動獲取數據的能力并且能把這些數據上傳到互聯網上,這將會是非常有利和高效的。這種系統的另一個術語叫做“物聯網——IoT”,它就像互聯網所做到的那樣,對改變世界具有極大的潛力;蛟S,在其開放性源代碼及我們所涉及的領域中所帶來的大量使能技術方面,物聯網將擁有更為巨大的潛力。
將來,會有很多裝置和設備連接到物聯網上,它們中的每一個都需要有一個IP 地址。因此當前的IPv4 所規劃的地址空間將被耗盡,從而不能再滿足需求。IPv6 肯定要被用來提供足夠大的地址空間,它將因物聯網的發展而快速地為世人所接受。
盡管物聯網行業可能還處于早期階段,但是該行業似乎已經充分認識到物聯網時代的到來,而且幾乎每個人都在為此做好準備。在硬件領域,物聯網所需要的大量低成本嵌入式處理器已被開發出來,為之打下了基礎;用于智能手機的CPU 和可攜帶(或可穿戴)的安卓器件也會像處理器那樣將使物聯網進一步得到壯大。根據*近對大多數技術專家和互聯網用戶的調查,被調查者中以壓倒性的多數表示,物聯網、嵌入式技術和便攜式計算在2025 年前后將會得到非常廣泛的應用。
更多先進的性能和有用的特征將被注入物聯網之中。例如,環境智能或人工智能以及自主控制等這些原本不屬于物聯網的技術單元,都將被融于其中,從而能進行預測并以非確定方式發揮作用。這些設備中的機器學習算法將在收集數據和與其他設備,例如位于一個開放網絡中的智能實體(Web 服務,SOA 組件)、虛擬對象(形象化符號)進行交互方面得到應用。
在一個非常巨大的領域內,包括家庭自動化、環境感知、智能產品管理、社會互動創新及智能儀表等方面,物聯網將會大有用武之地。而且應用的范例不勝枚舉。從根本上說,其目標就是要把各種各樣的數字化信息連接起來,并且把所得到的全部數據上傳到互聯網的服務器中。在那里有一大批計算機,這些數據將被用于自動化監控和分析并為人類服務。智能服務器還能發送監控和分析結果,把響應返回到物聯網設備,以指導下一步的行動。
這樣,物聯網,或者把它說成是“一種可以替代人類的復雜感知和認知功能,甚至能夠克服人類的局限性而進行自主活動的智能系統”的實現即將成為現實。它能夠在很多方面幫助人類生活得更為便利和簡捷,而我們自己恰恰置身于如此廣泛事件的**。
低成本的嵌入式CPU 和嵌入式操作系統將成為構建物聯網的基礎。在本書中,我們將以Raspberry、Linux 系統及基于安卓的智能手機和便攜式設備的開發為重點進行介紹,并進一步為物聯網的開發打下基礎。之所以看好Linux 而并非所有的操作系統,主要是看中了它的開放式源代碼和廣泛的適用性。
當前*為流行的低價位嵌入式系統是Raspberry Pi(一款基于Linux 系統的個人電腦系統),在該領域內已經開發出一大批產品,我們則重點介紹美國博通公司基于該系統開發的ARM(Advanced RISC Machines)微處理器;還有可用于物聯網的由中國君正集團首創的基于MIPS 的嵌入式系統——龍芯。盡管它在綜合開發方面還滯后于Raspberry Pi,但考慮到未來的因素,龍芯還是具有相當好的開發前景。所有這些都是作為基于傳統的微控制器系統運行在Linux 之上的,而且它們在從事物聯網開發的軟件能力方面沒有太高的要求。
因為物聯網是一個整體的生態系統,所以其自身擁有大量的使能元素,其中包括內嵌操作系統的嵌入式系統、傳感器件、網絡、移動設備、計算機及互聯網。位于API 后端的服務器不僅能處理所捕獲的數據,而且還具有將這些數據上傳到物聯網設備上的能力。
在本書中,我們嘗試把構成物聯網整個生態系統的各種不同形式的組件集成起來,其中包括API/Web 服務,諸如當今到處流行的蘋果手機(Iphone)和安卓移動系統以及由Raspberry-Pi 組成的控制器系統,它們能夠控制位于局域網上的各種類型的傳感器。移動系統和Raspberry-Pi 之間可以通過TCP/UDP 套接口協議進行通信。如果在每個Pi 的內部設置了Web服務器,那么每個Pi 系統又能被局域網外部的信主訪問,這樣,每個Pi 就可以獨立地訪問位于世界上任何地方的控制器。我們還將討論在Raspberry Pi 的**布局之中使用BATMAN工具,這是一種包容于Debian Linux 操作系統內的、先進的二層路由算法的無線網網格。本書還將涉及一個包含上百個Pi 的實際商業項目:一個處于大型商業建筑之中的大型網絡的每個Pi 單元都會成為其中的一個網格節點,并具有令路由數據包貫穿整個網絡的能力。我們不能采用專用網絡中繼的方法來覆蓋這種大型網絡,唯有采用低價位的Pi 來實現才有意義——因為物聯網只有低成本才能更實用。
在將來本書再版的時候,我們計劃把機器學習算法作為新的內容,因為這是物聯網很多應用的重要內容。機器學習使能系統具有一定的智能以及根據先前的經驗來預示后果的功能,它能對系統如何控制物聯網中的設備有所幫助,從而不需要人的更多介入就能管控它們并紀錄數據。
至于中國,在未來幾年內能夠在物聯網方面走到多遠,這不僅取決于運行在嵌入式Linux上的低成本CPU 的價格,而且還依賴于在系統中接入各種類型的傳感器,包括運動傳感器、溫度傳感器、紅外傳感器、濕度傳感器、壓力傳感器等以及光電驅動元件,Wi-Fi 適配器,電動驅動器,各類運算放大器及大量的模擬芯片。就像中國計劃到2030 年,每年投入50 億美元的計劃來夯實它的半導體行業基礎,以成為世界**的半導體輸出大國那樣,物聯網在中國的實現和發展也將指日可待。
當前,由于國際互聯網的迅猛發展及全球的高度信息化,高等教育的國際化已成為國內眾多普通高等本科院校的迫切需求;編寫具有中國特色,又逐步與發達國家接軌的教材,是中國高等學校教學改革中的一個新課題。為此,在中國電力出版社的支持下,作者在長期從事Linux 系統的研究和基于Raspberry Pi 的物聯網技術應用開發的基礎上,編寫了這本英漢雙語教材。
由于本書為雙語教材,為避免全書篇幅過多,對書中各章內的插圖及例程代碼采取了中英文頁面共享的表達方式,也就是說,同一章節位于英、中文頁面內的代碼都是做了編號且連續的。在具體內容上也并非是中英文的對等互譯,而是強調基本內容的一致性和中英文詞義、語義的準確性,從而達到中英文優勢互補的效果。英文敘述中盡量采用常用的詞匯和簡單的科技語法,使讀者容易閱讀理解,使本書具有更好的可讀性。
本書內容共包括6 章。第1 章HTTP API 服務器運行機制,首先介紹了HTTP API 服務器的工作原理,所公布的源代碼具體展示了HTTP API 的運行機制;第2 章帶套接口的內聯網通信編程,重點討論了內聯網通信中的關鍵內容——套接口的編程實現;第3 章Web 服務器與Web 頁面,詳盡地描述了Web 服務器的架構及主要功能;第4 章樹莓派系統,重點介紹了樹莓派系統的硬件、基于Linux 系統的廉價且便攜式電腦的基本架構、主要功能及與嵌入式設備的連接方法;第5 章Linux 內核和應用程序編程接口,簡要地介紹了Linux 的內核,數據結構、鏈接清單等基礎知識,通過代碼展示了遙控設備單元的讀取及復制更新的方法等內容,以及第6 章攜帶樹莓派的無線網格網,系統性地展示了以樹莓派為主要連接對象所構建的物聯網系統集成的方法。全書內容新穎、充實,重點突出,特色鮮明;每章中的代碼均具有特定的功能,作者對那些重要的代碼行都加注了英、中文注釋,以幫助讀者更好地理解其作用。
本書由工作在美國加州硅谷的軟件工程師Norman Yu 先生撰寫了英文全文,并無私地公布了與全書內容相關的全部源代碼;上海師范大學天華學院朱懷中博士、崔芊老師和齊從謙教授對全書進行了編譯和注釋(齊從謙負責導言和第1、2、6 章及附錄,朱懷中負責第4、5章, 崔芊負責第3章)。方躬高級工程師對全書插圖進行了精心的編輯和規范化處理,全書統稿工作由齊從謙完成。
本書內容新穎,重點突出,特色鮮明,書中具體內容和實例特為高等學校工科類計算機科學與技術、網絡工程、通信工程、電子信息技術、汽車電子、電力電子、航空航天等專業的廣大學生和教師度身定做?梢宰鳛樯鲜龈黝悓I的教學用書,也可以作為計算機、通信類職業技術培訓教材以及相關行業廣大工程技術人員的參考用書。
由于編者水平有限,加之Linux 和物聯網本身博大精深,書中難免有錯誤和疏漏之處,敬請各校師生及廣大讀者批評指正。
Norman Yu、朱懷中、齊從謙于上海嘉定天華園