Tuesday, 23 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