Main Content

센서 데이터 스트리밍

센서를 제어하고 데이터 수집하기

이 예제에서는 모바일 기기 센서를 제어하고 이들 센서에서 데이터를 수집하는 간단한 워크플로를 보여줍니다.

이 예제에서는 모바일 기기에 MATLAB® Mobile™을 설치하여 설정한 후 이를 MathWorks Cloud에 연결했다고 가정합니다. 아직 이렇게 하지 않은 경우에는 기기에 MATLAB Mobile 설치하기 항목을 참조하십시오.

  1. 모바일 기기에서 MATLAB Mobile을 시작합니다.

  2. 메시지가 표시되면 클라우드에 로그인합니다.

  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은 비활성화됨 또는 꺼짐을 의미합니다. 이 예제에서는 기기와 클라우드가 연결되어 있고 모든 센서가 활성화(센서 화면에서)되었지만 데이터는 아직 기록되지 않고 있음을 알 수 있습니다. 이 기기에는 5개의 센서가 있지만 여러분의 기기는 이와 다를 수 있습니다. 기기에 특정 센서가 없는 경우, 해당 센서는 항상 0으로 표시됩니다. 타임스탬프는 아직 기록된 데이터가 없기 때문에 비어 있습니다.

    InitialTimestampmobiledev가 받은 첫 번째 데이터 점의 타임스탬프입니다. 모든 센서의 다른 모든 타임스탬프는 InitialTimestamp를 기준으로 합니다.

  7. Logging 속성을 설정하여 선택한 센서의 데이터 기록을 시작합니다.

    m.Logging = 1

    이 동작은 선택한 모든 센서에서 데이터 전송을 시작합니다. 기기의 MATLAB Mobile에서 시작 버튼을 눌러 전송을 시작할 수도 있습니다.

  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

    이 표시 결과에서 기기와 클라우드가 연결되어 있고 데이터가 기록되고 있음을 알 수 있습니다. 또한, InitialTimestamp 속성값과 센서 값이 표시되어 있습니다. 이는 객체를 만들었을 때의 현재 측정값을 나타냅니다.

  9. 데이터를 기록할 때는 센서 측정값 속성을 사용하여 모든 센서의 현재 값을 표시할 수 있습니다. Acceleration, AngularVelocity, Orientation, MagneticField 속성은 각 센서의 현재 측정값을 표시합니다. 위치 센서가 기록 중인 경우, Latitude, Longitude, HorizontalAccuracy, Altitude, Course, Speed 속성을 사용하여 개별 위치 측정값을 가져올 수 있습니다.

    예를 들어, 객체 m의 가속도 센서 측정값을 가져오려면 다음을 입력하십시오.

    m.Acceleration
    ans =
    
        0.6945   -0.2579    9.9338

    위치 센서에서 경도 측정값을 가져오려면 다음을 입력하십시오.

    m.Longitude
    ans =
    
        -71.3517
  10. MATLAB의 센서 제어 속성을 사용하여 센서를 켜거나 끌 수 있습니다. 제어 속성을 사용하는 것은 MATLAB Mobile에서 센서 버튼을 켜거나 끄는 것과 같습니다. 각 제어 속성에는 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

관련 항목