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版很快將會進入測試。

No comments:

Post a Comment