M5StickC의 자이로 센서(MPU6886)를 사용해 무선 스피커 시스템 Sonos를 조작해 보았다.
소개
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);
}
소스 코드
여기 입니다.
Reference
이 문제에 관하여(M5StickC의 자이로 센서(MPU6886)를 사용해 무선 스피커 시스템 Sonos를 조작해 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kitazaki/items/1ce671532270cd44fabf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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);
}
소스 코드
여기 입니다.
Reference
이 문제에 관하여(M5StickC의 자이로 센서(MPU6886)를 사용해 무선 스피커 시스템 Sonos를 조작해 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kitazaki/items/1ce671532270cd44fabf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(M5StickC의 자이로 센서(MPU6886)를 사용해 무선 스피커 시스템 Sonos를 조작해 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kitazaki/items/1ce671532270cd44fabf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)