Tuesday, 7 October 2014

ADRC系統

      好比其它有所突破的技術,ADRC顯得有點魔幻。不僅如此,它同樣極具概念性。在ADRC系統裏各部分和諧工作,實現預定目標。它主要由五部分組成:
  • 應用程序
  • 設備服務器
  • 設備網關
  • 資源控制協議 - RCP
  • 資源標記語言 - RML
      項目實現時,有可能引入其他組成部分,但上述五點在理論上是ADRC的核心所在。

      上圖可見五部分協同構建一個ADRC系統。下面讓我們看看每一部分具體如何工作。

應用程序

 

     簡單來說,應用程序是跟設備打交道的一個實體,屬于客戶端,我們可叫它爲設備浏覽器。這或許是一個新名詞,爲了更好的理解它,讓我們把它比喻爲一個特殊的 網頁浏覽器。但它操作處理的不是網頁數據,而是設備,家電,或具備應用接口的實體。就像浏覽器一樣,你可以指定它訪問某一個設備,而它將會顯示用戶圖形交 互操作界面。網頁浏覽器針對的是結構性文本,圖形和多媒體內容,而設備浏覽器針對的是操作控制,接收設備自發事件,理解語義數據,以及提供人機對話。

設備服務器


      我們再次參照網絡結構,你可以把設備服務器跟網絡服務器對比。它爲設備和其他客戶端提供內容和緩存服務。設備服務器需要處理一個可變化系統,包括設備顯示 和消失。系統中設備浏覽器能接收設備的自發信號,並交互操作。事實上,設備浏覽器必須能顯示所有被監控設備的實時狀態。從這點來看,設備服務器是一個實時 控制分布系統的核心。想象的出,這不容易實現。

 設備網關


      網絡系統中,沒有相應的組成部分可以用來比照設備網關。它的作用是能讓任意設備與其他部分更容易的相聯接。嚴格來說,他是一個可逆向網關,提供以下功能:
  • 列舉設備結構和元數據
  • 配對和拆對
  • 安全管理
  • 通信傳輸層
  • 文件系統
      由于設備網關的存在,這些核心業務並不需要應用程序來實現。事實上設備只需回應來自應用的RCP請求,並在自身狀態發生改變時向外部發出信號。

 資源控制協議(Resource Control Protocol - RCP)


       RCP協議類似HTTP,但它具備一些特征讓它更適用于控制設備。它的兩類變量RCP.host和RCP.wire,能一一對應,而具體使用那一種取決你 從哪裏去訪問系統。RCP.host 應用于應用程序和設備服務器之間,使用XML語言格式,組裝面向設備服務器的請求和服務器返回應用的回應和信號。RCP.wire應用在設備服務器和設備 之間,自動包裝的,非常緊湊,容易解析。在采用低端微處理器的系統中,比如當前流行的Arduino Uno,運行良好。你可以把這兩個RCP變量比作XML和JSON,雖然它們表達相同的數據,但其中一個是更加輕量級的應用。

資源標記語言(Resource Markup Language - RML)


      RML是XML格式語言,類似HTML。網頁浏覽器根據HTML描述進行刷屏,設備浏覽器和其他ADRC客戶端根據RML描述進行設備監控,解釋來自設備 的數據。RML和設備浏覽器實現了“模型-視圖-控制器”(Model View Controller - MVC)的設計模式。大家都知道,在分隔數據,顯示和控制邏輯方面,MVC非常強大。RML可以通過直接訪問設備而得到,實際上它是存儲于設備網關提供的 文件系統裏。應用程序和設備即使沒有連接上Internet,甚至在廣域網和局域網裏都沒有相聯,也能相互工作。RML應用于ADRC系統任何一個部分, 包括設備服務器,是核心組成。

      現在你應該對幾個核心元素有個大概了解,明白他們如何構建一個ADRC系統。我會在未來的博文裏針對每一個組成部分展開細節性的介紹,從RML開始。

      下次再見!

Monday, 29 September 2014

ADRC是什麽?

      在我回答這個問題之前,最好讓我們來看看下面這個短片......

https://www.youtube.com/watch?feature=player_embedded&v=OSV90EJbXMk

      在手機和設備貼近而産生感應的時候,ADRC技術能讓手機變成一個遙控器,並在屏幕上觸發一個用于實現控制功能的用戶圖形交互界面,這樣用戶馬上可以與設備進行交互。想象一下如果世界上所有的東西都可以通過這樣的方式來進行操作,我們將可以與任何在我們周圍的物件進行交流,獲取信息,進行控制,甚至做現在我們不敢想象的一些事情。
      這就是ADRC爲未來的一個美好設想。假想當你出去逛街時,看到一台自動小吃銷售機。你可能覺得你眼前的糖果非常吸引你,但你不可能改變你面前的選擇。事實上,你很可能永遠沒有機會去改變。好吧,現在假設這台機器是植入ADRC技術的,你可以簡單的用你的手機貼近機器的觸碰圖標:

ADRC 触碰图标

銷售機的控制界面自動出現在你的手機屏幕上。然後你可以選擇你想要的糖果,手機上會顯示它的價格。你可以采用PayWave 或PayPass付費方式,只需要用你的手機再次觸碰機器,糖果就是你的了。
      不知道你遇到下面這種情況沒有。停車裏的一個自動繳費機系統崩潰了,不能提供正常的服務。這種情況下,我從來沒有遇到過有任何的一台機器可以提供機會讓我 使用信用卡繳費。那爲什麽不能讓這台扣費機植入ADRC技術呢?你只需要把你的手機貼近扣費機,就可以繳費了,一切的操作過程和結果都會顯示在你的手機屏 幕上。你同樣可以采用PayWave和PayPass的方式再次觸碰機器,來確認你的繳費。
      現在你應該有點概念了吧!
      ADRC爲什麽那麽特別呢,其中一個理由就是與其他同功能方案相比,你只需要一個應用程序去操作每一台設備。僅僅就是一個應用程序,ADRC突破的技術就 在這裏。無論是不同廠家的自動銷售機,還是不同廠家的停車場扣費機,你不需要爲它們配備專門的軟件。擁有智能手機的人們應該知道當前手機裏的應用程序過多 而過于複雜,你同樣的也有可能爲這樣的問題而每天煩惱。ADRC與設備之間的關系,對比于網絡浏覽器和萬維網,有異曲同工之秒。ADRC技術所提供的設備 浏覽器和用戶界面標記語言,讓設備和遙控器之間的互動變得通用,也沒有繁瑣的步驟。在我們的設計裏,ADRC將會提供更多功能。
      我們Xped公司已經在一些産品中,植入了這項令人驚奇的技術。擁有我們的紅外線衝擊器(IR Blaster),你可以把所有的紅外線遠程遙控器永遠的扔到垃圾桶裏,你只需要用你的手機來代替它們。我們的智能插座(Ultra Plug)允許用你的手機控制一些簡單家電,比如燈,風扇,電暖器等等。同時你還可以監控這些家電的即時能源消耗狀況,而這些數據能夠自動記錄並用于統計 分析。類似産品可調節插座(Vari Plug)可以讓你調節你的台燈亮度和改變你的電機轉速。在我們的産品規劃裏這些只是先頭戲,若想得到更多的信息,請登錄我們的網站 www.xped.com 。
      我們爲電子和Arduino的愛好者量身定做了一款植入ADRC技術的Arduino擴展插板。如果你在Arduino項目中采用我們這款插板,你就可以使用你的手機實現控制操作,就像我們視頻所展示的效果一樣。



      講到這裏,我希望你能認同我的看法 - ADRC是一項了不起的技術。我將會向你展示如果構建一個ADRC系統。

Wednesday, 24 September 2014

ADRC Arduino擴展插板研發過程

      我最近才開始接觸Arduino應用技術,到現在爲止采用Uno板做了兩個簡單作品。我深深的喜歡上Arduino的技術開發模式。它讓電子設計變得更加容易,能在更廣的範圍內,讓具備不同技能的人士參與進來,那怕他們只具備有限的電子專業知識。
      我一直在爲我們未來的Arduino項目探索一種方案,能實現真正高效的用戶圖形接口。大概4個月前我決定把我們Xped公司的部分高端技術嵌入到一個適用Arduino的擴展插件上。兩個月後,我研發出它的alpha樣板,用于測試。
      這裏給出一張當初項目開始時的真實照片。左上角是我們購買的一個NFC開發板,其他兩個是具有外殼的産品電路板。這兩個産品應用于我們的其他一系列項目。


       根據我們的設計目標,我把這三塊板相關線路連接起來。我規劃一下,我們的最終産品 - Arduino插件將具備以下主要功能特征:
      近場通信,英文簡稱NFC(Near Field Communications)。NFC技術已經應用于無線支付,比如PayWave和PayPass。大部分最近和最新生産的智能手機都支持NFC技術。
      個人小範圍網絡,英文簡稱PAN(Personal Area Networking)。它在網路鏈路的MAC層采用802.15.4通信協議,其通信距離優于藍牙(Bluetooth)。
      芯片植入哈希加密,用于安全操作,比如非接觸方式的無線固件(firmware)升級。
      采用ARM 32位微控制器 STM32F103R8 Cortex M3。
      256 KB的擴展FLASH內存。
      提供文件系統,用于數據和文件存儲。

      實驗驗證工作持續2-3周後,我們擁有了足夠的固件代碼( firmware)和測試硬件。在這基礎上,我們進一步研發出一款線路板,就是我們將要發售的這個Arduino插件。這裏附上最原始的一塊印刷電路板,上面並未焊接元器件。


       很快我們的成品生産出來了,它插接在Arduino Uno底板上,並能正常工作。
      我們現在提供一個庫文件給用戶,讓他們能容易的進行産品二次開發。這裏是第一個通過實驗測試的案例。在這項目中,我們使用一個無外殼的小直流馬達驅動四個三維打印機生成的塑料齒輪。插件插在Arduino底板上,連接並控制馬達。



      如果設備浏覽器尚未運行,把智能手機輕輕觸碰一下設備,相應的網頁將自動打開,手機的NFC功能就開始使用。

                                 https://www.youtube.com/watch?feature=player_embedded&v=xWsCPwkl1qI

      從下面這個視頻可以看到,我們能很容易做到把手機和設備進行通信聯接。啓動設備浏覽器,把手機輕輕觸碰設備,NFC功能就發揮作用了。

                                 https://www.youtube.com/watch?feature=player_embedded&v=OSV90EJbXMk

      ADRC系統能讓你自定義規則,讓設備之間能夠互動,實現各種功能。這就是所謂的機器對機器(M2M)技術。

                                 https://www.youtube.com/watch?feature=player_embedded&v=COxRa2I590E

      你可以使用多個遙控器,或不同的遙控器,而他們能同步顯示設備的狀態。下面的視頻展示了三個遙控器控制一台設備,其中有一個是運行在桌面電腦上的應用軟件。

                                 https://www.youtube.com/watch?feature=player_embedded&v=5QsuiFFm5SA

       不知大家是否熟悉Qt和用戶圖形界面(GUI)應用開發,其實在很多方面跟Java SWING技術開發類似。本應用程序使用三種主要的窗口控件:容器控件,控制控件,布局控件。我們在智能手機開發上采用Qt技術和XML語言。我們把該 XML語言命名爲資源標記語言(Resource Markup Language),簡稱RML。根據你的設計,你可以使用RML語言構建那怕是非常複雜的用戶界面。

      這裏提供更多例子:
      簡單例子(控制LED燈開關):


<screen name="main-page" margins="4">
    <devicebox title="$(NICKNAME)" layout="horizontal" spacing="4" margins="4" skin="wood">
        <xpcontrolbox bind="on" layout="horizontal" leftmargin="20" rightmargin="20" stretch="1">
            <localetitle><en>LED</en></localetitle>
            <xpsvgtoggleswitch bind="on" skin="Beryl"/>
        </xpcontrolbox>
        <spacer stretch="4"/>
    </devicebox>
</screen>


      稍複雜例子:


      相對複雜例子(采用stylesheets定義和多屏):



      當前提供以下窗口控件:
布局/容器類型
    box(普通盒子)
    groupbox(可包含多類型窗口)
    devicebox(能接收設備狀態)
    signalbox(能接收信號強度)
    controlbox(容納普通控件)
布局/間隔類型:
    separator(用于隔斷)
    spacer(用于距離間隔)
普通控件:

    label(文本)
    checkbox(選擇框)
    pushbutton(按鈕)
    svgbutton(SVG圖片按鈕)
    svgtoggleswitch(SVG選擇開關)
    svgslideswitch(SVG滑動開關)
    slider(滑動調節)
    scrolldial(指針型儀表)
    scrollwheel(滾動輪)
    scrolldialwheel(滾動控制,儀表顯示)
    5waybutton(5按鈕組合)
    3waybutton(3按鈕組合)
    2waybutton(2按鈕組合)
    rockerbutton(二選一按鈕)
    radiogroup(選擇型按鈕)
    progress(漸進條)
    led(燈)
    7seg
    dialgauge(儀表)
    lineedit(文字輸入)
    listbox(列表)

      在應用我們的系統時,並不是一定需要你的手機具備NFC功能。不過NFC能讓你的手機在貼近設備的時候,與設備的交互變得更容易和更敏感。我們提供一個控制集線器,具備NFC功能,並提供802.15.4協議的無線網絡。你可以在這個系統裏,通過觸碰集線器和設備來聯接它們。
      不久前我嘗試利用Arduino來控制低成本的機器人。我發現Zumo Robot比較合適,購買了一對。幾天前,我只花了20分鍾去編輯一個RML文件,並編寫了控制Zumo的軟件代碼。這裏有實驗的一個短片。



https://www.youtube.com/watch?feature=player_embedded&v=QTZ8_iYCUMg

       想了解我們的擴展插板如何把ADRC系統和Arduino項目連接起來,請看下圖 :



      現在ADRC插板仍然處在alpha測試階段,beta版很快將會進入測試。

Thursday, 18 September 2014

爲什麽選擇ADRC?

技術介紹

      目前我們所看到的所有遠程控制或物聯網(IoT)技術都是基于設備類型描述的。每一台設備必須根據它的類型進行配置。例如,當遙控一台電視或連接一個溫度傳感器時,必須根據它的類型是電視或溫度傳感器,來進行相應的系統設置。
      這帶來一些阻礙。
      終端用戶不能簡單的私自定義一個完全嶄新的設備類別,從而使它可以在現有系統中,與其他設備協同工作。用戶必須求助于相應的工業聯合組織,申求在標准中增加新型設備類別。
      同時,即使在一些已經非常成熟的産品中,比如電視,每一個生産廠家又希望自有産品能包含一些個性化特征。可惜的是,在現有的系統中,這些設備定義標准往往服務于一些擁有專利的領域。
      這種運作方式導致的結果是,除了生産廠家,沒有人知道産品具備哪些額外特征,也沒有人知道如何應用這些功能。
      ADRC(Auto Discovery Remote Control)從徹底上提供了一個全新方案。該方案使得可以爲每一個具體的單個設備進行配置,而不是根據它屬于那個産品種類。也就是說,我們可以輕易的爲每一個設備定義它的用戶圖形交互界面,也可以設計它自己的控制方案。


Arduino擴展控制插件


      我們市場上推廣的第一個産品是Arduino擴展控制插件,它爲Arduino愛好者(或其他二次開發者)提供運程遙控自動搜索(ADRC)功能。
      我們嘗試過多種無線通信插件,以及藍牙,WIFI産品等等。沒有一種産品,在提供用戶界面和設備通信方面,提供完整的終端對終端方案。
      ADRC提供一條途徑去定義一台設備以及它的用戶接口。同時也定義了一個同步/異步雙工通信協議。我們爲Arduino設計了一個軟件開發包,開放對應控制接口,讓它能順利集成到你的個人代碼裏,從而讓你能成功采用ADRC技術實現你的目標工作。
      在應用軟件包的庫文件時,你只需要配置一個XML文件,設置設備輸入輸出特性。當然,你可以根據你的個性化設計,爲設備運行狀態的改變,編寫對應接口處理函數。
      我們將會在我們的網站xped.com上發售ADRC控制插件(shield),ADRC集線器(Hub)和其他産品。如果你的手機具備NFC通信功能,只需要把你的手機靠近這些嵌入ADRC通信協議的設備,輕輕觸碰一下,就可以把你的手機與設備關聯起來。連接成功後,我們的Hub能讓你的智能手機與任意數量的ADRC産品進行通信。


未來目標 - 聯接世界

      在研發和應用ADRC技術過程中,我們內心不斷湧現一些令人興奮的新想法。這些想法在我們技術團隊的初始階段並未出現,然而把這些想法實現到真正産品中,並不需要改變現有的已經研發成功的核心系統。
      我們相信ADRC技術的應用非常寬廣。如果你正在市場上爲你的機器尋求某種適配器,以實現機器與其他設備進行通信的話,ADRC是你的一個優質選擇。
      我們將會不斷的推出新的産品和應用,一些將用于實際,一些將用于娛樂。
      請繼續關注!