M5StickC의 자이로 센서(MPU6886)를 사용해 무선 스피커 시스템 Sonos를 조작해 보았다.

7368 단어 SonosMPU6886M5StickC

소개



M5Stack Advent Calendar 2019 17일째의 기사 「 M5Stack / M5StickC에서 Sonos를 조작해 보았습니다. 」의 발전형이 됩니다.

SONOS Japan User Group 에 다른 기사도 있으므로 참고가 됩니다.

했던 일



M5StickC의 버튼 조작으로 「곡의 되감기」 「음악 재생의 일시정지・재개」 「곡의 선송」을 행하고 있었습니다만, M5StickC에 탑재되고 있는 자이로 센서 「MPU6886」을 사용해 M5StickC의 회전 조작에서도 「곡의 되감기」 「곡의 선송」을 실시할 수 있도록 했습니다.


동영상





자이로 센서(MPU6886)의 동작 확인



먼저 간단한 코드를 작성하여 자이로 센서(MPU6886)의 동작을 확인합니다.
Arduino IDE의 직렬 플로터 기능을 사용하여 센터 값을 시각화(그래프화)합니다.
M5StickC를 움직이면서 각각의 값이 어떻게 변화하는지 관찰합니다.
이번 경우는 Y축 자이로 센서값(gyroY)이 ±50.0 이상(좌회전의 경우는 -50.0 이하, 우회전의 경우는 +50.0 이상)로 변화한 경우를 트리거로 했습니다.
처음에는 가속도 센서 값 (Accel)을 사용할 예정이었지만 M5StickC의 기울기에 따라 가속도 센서 값이 변경되므로 M5StickC의 취급을 잘못 (세로 또는 옆에 놓음)과 센서 값이 변경되어 노래 이 바뀌어 버리기 때문에, 이번 경우는 불편했습니다.

(자이로 센서 값의 변화)


(가속도 센서 값의 변화)


M5StickC_MPU6886.ino
#include <M5StickC.h>

float gyroX, gyroY, gyroZ;  // ジャイロデータ取得 →回転(左90 0/-50/0, 右90 0/50/0)
float ax, ay, az;  // 加速度データ取得 →傾き(X/Y/Z: 正 0/0/1, 左90 1/0/0, 右90 -1/0/0, 上90 0/-1/0, 下90 0/1/0)

void setup() {
  Serial.begin(115200);
  M5.begin();
  M5.MPU6886.Init();
}
void loop() {
  M5.MPU6886.getGyroData(&gyroX, &gyroY, &gyroZ);
  M5.MPU6886.getAccelData(&ax, &ay, &az);
  M5.Lcd.setCursor(0, 30);

  M5.Lcd.printf("X:%7.2f\nY:%7.2f\nZ:%7.2f mg", gyroX * M5.MPU6886.gRes, gyroY * M5.MPU6886.gRes, gyroZ * M5.MPU6886.gRes);
  Serial.printf("%7.2f,%7.2f,%7.2f\n", gyroX * M5.MPU6886.gRes, gyroY * M5.MPU6886.gRes, gyroZ * M5.MPU6886.gRes);
  M5.Lcd.printf("X:%7.2f\nY:%7.2f\nZ:%7.2f mg", ax , ay , az );
  Serial.printf("%7.2f,%7.2f,%7.2f\n", ax , ay , az);

  delay(50);
}

소스 코드



여기 입니다.

좋은 웹페이지 즐겨찾기