Main Content

传感器数据流

控制传感器并采集数据

此示例说明一个控制移动设备传感器并从中采集数据的简单工作流。

此示例假设您已在移动设备上安装并设置了 MATLAB® Mobile™,并已将其连接到 MathWorks Cloud。如果没有,请参阅在您的设备上安装 MATLAB Mobile

  1. 在您的移动设备上启动 MATLAB Mobile

  2. 如有提示,请登录到 Cloud。

  3. 传感器屏幕上,使用拨动开关打开要发送数据的传感器。

  4. 在传感器设置中,点击流式传输至,然后选择 MATLAB

  5. 将设备放置在您要采集传感器数据的位置。

  6. 在 MATLAB 中,创建一个 mobiledev 对象 m

    m = mobiledev
    m = 
    mobiledev with properties:
    
                       Connected: 1
               Available Cameras: {'back' 'front'}
                         Logging: 0
                InitialTimestamp: ''
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
           MagneticSensorEnabled: 1
        OrientationSensorEnabled: 1
           PositionSensorEnabled: 1
    
    Supported functions

    在显示的内容中,1 表示启用或打开,0 表示未启用或关闭。在此示例中,您可以看到设备和 Cloud 已连接,所有传感器都已启用(从“传感器”屏幕),但尚未记录数据。该设备包含所有五个传感器,但您的设备不一定全部包含。如果您的设备没有某特定传感器,则在显示的内容中,该传感器始终为 0。时间戳为空,因为尚未记录任何数据。

    InitialTimestampmobiledev 收到的第一个数据点的时间戳。所有传感器的所有其他时间戳都与 InitialTimestamp 相关。

  7. 通过设置 Logging 属性,开始记录来自选定传感器的数据。

    m.Logging = 1

    该操作开始传输来自所有选定传感器的数据。您也可以点击设备上 MATLABMobile 中的开始按钮开始传输。

  8. 现在您已开始记录数据,请使用 disp 函数查看 mobiledev 对象。

    disp(m)
    mobiledev with properties:
    
                       Connected: 1
               Available Cameras: {'back' 'front'}
                         Logging: 1
                InitialTimestamp: '06-08-2014 13:45:56.529'
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
           MagneticSensorEnabled: 1
        OrientationSensorEnabled: 1
           PositionSensorEnabled: 1
    
    Current Sensor Values:
                    Acceleration: [0.27 0.23 -10.19]  (m/s^2)
                 AngularVelocity: [-0.22 0.07 0.06]   (rad/s)
                   MagneticField: [3.56 1.56 -48.19]  (microtesla)
                     Orientation: [85.91 -27.1 0.35]  (degrees)
    
           Position Data: 
                        Latitude: 41.29  (degrees)
                       Longitude: -72.35  (degrees)
                           Speed: 25  (m/s)
                          Course: 83.6  (degrees)
                        Altitude: 200.1  (m)
              HorizontalAccuracy: 9.0  (m)
                                                                     
    Supported functions

    在显示的内容中,您可以看到设备和 Cloud 已连接,现在正在记录数据。现在,您还可以看到 InitialTimestamp 属性值;还显示了传感器值,该值为创建对象时的当前测量值。

  9. 记录数据时,可以使用传感器读取属性显示任何传感器的当前值。AccelerationAngularVelocityOrientationMagneticField 属性分别显示其传感器的当前读数。如果位置传感器正在记录数据,您可以使用 LatitudeLongitudeHorizontalAccuracyAltitudeCourseSpeed 属性获取单个位置读数。

    例如,要获取对象 m 的加速度传感器读数,请使用以下命令:

    m.Acceleration
    ans =
    
        0.6945   -0.2579    9.9338

    要从位置传感器获取经度读数,请使用以下命令:

    m.Longitude
    ans =
    
        -71.3517
  10. 您可以在 MATLAB 中使用传感器控制属性来打开和关闭传感器。使用控制属性与切换 MATLABMobile 中的传感器按钮相同。每个控制属性包含两个值:1 表示打开或已启用,0 表示关闭或已禁用。例如,要从 MATLAB 中关闭加速度传感器,请使用以下命令:

    m.AccelerationSensorEnabled = 0

    要重新打开加速度传感器,请使用以下命令:

    m.AccelerationSensorEnabled = 1
  11. 停止记录传感器数据。

    m.Logging = 0
  12. 当您记录数据时,可以使用传感器读取属性来获取传感器的当前值,如步骤 7 所示。如果您要查看所有读数的完整日志,请使用日志函数。您可以在记录数据期间使用这些函数,也可以在停止数据记录后使用。每种传感器类型都有一个日志函数,例如,accellog 从加速度传感器返回记录的加速度数据。

    要从对象 m 获取记录的加速度数据,请使用变量 a 表示记录的加速度数据,使用变量 t 表示时间戳。

    [a, t] = accellog(m);

    然后,您可以绘制数据或进行其他数据处理。

  13. 完成会话后,删除该对象。

    clear m

相关主题