2015/02/15

結合BLE系統單晶片與Raspberry Pi單板電腦的IPv6物聯網SDK



引言

在Internet上搜尋到一篇應用筆記nRF51 IoT SDK,搭配Yahoo字典、和Google翻譯等工具,我嘗試著將文章的片段翻譯成繁體中文版,希望大家對於具備BLE介面(非IEEE 802.15.4-2003介面)之IPv6裝置的軟體開發工具包能夠擁有些許認識。 




概述

SDK為一完整支援兼容Bluetooth SmartIPv6軟體堆疊(stack)、並以nRF51系列系統單晶片為範例,同時支援IPSP (Internet Protocol Support Profile)與架構於Bluetooth Smart之上的6LoWPAN

物聯網、IPv6、及Bluetooth Smart

今日的Bluetooth Smart讓產品有能力藉由智慧型手機與平板電腦之類的閘道器來連接上網際網路,參閱圖1。在這種使用情境裡,閘道裝置上的應用程式完成必要的任務以便把Bluetooth Smart的訊息轉換為基於IP (Internet Protocol)的訊息並將其傳送到雲端。
讓物與物之間直接使用原生的IP進行通訊是件合理的事,參閱圖2。在這種使用情境裡,Bluetooth Smart裝置透過支援Bluetooth Smart的無頭(headless)路由器直接連接上網際網路。

重要特徵

6LoWPANIPSP函式庫:
  • 6LoWPAN壓縮與解壓縮
  • 6LoWPAN節點角色
  • 封包流量控制
  • IPv6前綴管理
  • 允許使用第三方的IPv6堆疊
NordicIPv6堆疊:
  • 支援多重IP位址
  • ICMPv6模組
  • UDPsocket應用程式介面
NordicCoAP函式庫:
  • CoAP訊息類型涵蓋了CONNONACK、及RESET
  • 對於本地客戶產生的要求所產生的回覆進行標記比對
  • 以資源的方式來建立端點
  • 端點資源函式回呼(callback)
  • 端點權限設定

應用範圍

物聯網應用



IPv6顯著地擴充有效IP位址至2128次方個位址,這意味著必要時可以讓每個裝置都具備自身的IPv6位址。
舉凡6LoWPAN之類的標準讓整合感測器時無關乎傳輸方式為何。6LoWPAN讓感測器以原生的IP協定溝通,更進一步,像CoAP (Constrained Application)MQTT (Message Queue Telemetry Transport) 之類的新型應用層可以確保頻寬與資源受限之感測器的最佳化。
Bluetooth Smart為一針對以電池為電源之感測器與穿戴式裝置的開放標準,今日受惠於IETF草擬的基於Bluetooth Smart6LoWPAN,將不需要智慧型閘道器便可以讓感測器連接上雲端。

異質IP網路與Bluetooth Smart

SDK允許開發異質IP網路的Bluetooth Smart應用,這類網路可以是單獨地物與物相連,也可以是物與雲端相連,還可以是物藉由雲端相連。Bluetooth Smart上的原生IP意味著透過無頭路由器便可以無縫地支援諸如Bluetooth Smart802.15.4、或WiFi等不同的實體進行傳輸,參閱圖3
利用IPIPv6來整合有線與無線技術不僅是令感測器具備相同的語言來跟雲端進行溝通,還能夠讓感測器可以連接至物聯網上的其它同質與異質感測器。這些異質IP網路包含了各式使用了IP連行溝通的技術,例如Bluetooth Smart802.15.4、或WiFi

nRF51物聯網SDKIPv6堆疊

IPSPBluetooth Smart 6LoWPAN標準確保了Bluetooth Smart實體層之最佳化的IP堆疊效能,6LoWPAN定義了從Bluetooth Smart裝置位址到IPv6位址的建立,其壓縮了IP標頭以確保最佳化地使用射頻頻道以達到節能的目的,6LoWPAN同時也定義了稱為6LN (6LoWPAN node)6LR (6LoWPAN Router)、和6LBR (6LoWPAN Border Router)的節點角色。
nRF51物聯網SDK僅支援6LN角色,範例使用了樹莓派作為6LBR角色而該角色完整涵蓋了文件。文件描述了的樹莓派為一基於Linux的計算系統,其可以依據目的而進行設置。IPSP定義了如何建立與管理L2CAP連接導向頻道,IPv6不同層級依據圖4來對應至支援IPv6 Bluetooth Smart的節點。
標註為紅色的層級一般參照至IP堆疊,Nordic提供不含TCPIP堆疊的實作,這是公認的嵌入式IP堆疊的作法,其考量了許多理由。因此,nRF51物聯網SDK提供清楚的介面以便於移植任何第三方的IPv6堆疊至nRF51系列的裝置,例如Lightweight IP (lwIP)便是一個移植了UDPTCP範例的第三方IP堆疊。
SDK也提供一個稱為nCoAPCoAP函式庫,該函式庫提供客戶端與伺服端的實作,還可以同時扮演兩種角色。該函式庫不限定用於哪種IP堆疊,故它可以被用在NordicIPv6堆疊、也可以被用在lwIP堆疊、還可以用在移植到nRF51系列單晶片的其它堆疊。SDK包含了一個運行於lwIPTCP傳輸的MQTT範例。SDK中使用TCP傳輸的範例都將使用lwIP這個IPv6堆疊。

nRF51物聯網SDKSoftDevice

LEL2CAP連接導向頻道提供一個最佳化的邏輯傳輸以便傳送IPv6封包,但該封包也許不符合預設的應用層23位元組的MTU長度限制,LECredit Mode定義了連接導向頻道上的一個內建機制,它可以用來分割與重組IPv6封包、且提供流量控制機制。LECredit ModeBluetooth 4.1核心規格的一部份,nRF51物聯網SDKSoftDevice提供這部份的支援。然而,這一版的SoftDevice將只能扮演GAP週邊的角色,而且這一版的SoftDevice尚未具備量產的SoftDevice品質,但它可以用作技術雛型的驗證。

參考文獻

http://www.nordicsemi.com/eng/nordic/download_resource/41599/6/38430763
 

4 則留言:

  1. 範例使用了樹莓派作為6LBR角色而該角色完整涵蓋了文件。
    原文:The examples use a Raspberry Pi in the 6LBR role and this is fully covered in the supporting documentation.
    我覺得這樣翻比較適合耶~
    範例使用了樹莓派作為6LBR角色,這在支援文件中有完整的說明(報導)

    回覆刪除
    回覆
    1. Thanks! 你建議的中文標題很符合『文章內文』的語義,這篇文意的確也可以像你提的那樣下標題。
      But! 原文的標題為「nRF51 IoT SDK」、而副標題為「SDK for IoT applications using IPv6 over Bluetooth Smart」,我的翻譯以副標題為主、並且將Bluetooth Smart改為其原名Bluetooth Low Energy的縮寫BLE;所以,我的翻譯乃以『文章副標題』為基礎。
      Anyway! 感謝你的閱讀和建議。

      刪除
  2. 您好: 我想知道樹莓派是否可以取代上述的 nRF51 當作6LN 的角色? 做得出來嗎? 還是相對來說比較困難?

    回覆刪除
    回覆
    1. 我認為樹莓派可以實作6LN的角色;
      只是樹莓派的運算能力遠勝於nRF51,
      它比較適合擔任6LBR、而非6LN。
      參考看看…。

      刪除