M5Stack Gray에 탑재된 가속도 센서 MPU-9250의 보수계 기능을 이용
신규 로트의 M5Stack Gray에는 MPU-9250이 탑재되어 있지 않기 때문에 본 기사의 내용에 해당되지 않으므로 주의해 주십시오.
본 제품에 탑재된 9축 센서에 대해서, 초기 모델에 탑재된 MPU9250에서, 2019년 8월 14일 당사 입하분 이후는 MPU6886+BMM150이라고 하는 조합으로 변경되었습니다. (2019년 8월 14일)
htps //w w. 슈 tch-s 시엔세. 코 m/타타 g/3648/
MPU-9250에는 DMP(Digital Motion Processor)라는 작은 칩이 타고 있어 보수계나 동작 인터럽트 등의 모션 관련 처리를 움직일 수 있다.
MPU-9250 도착-Sabotenboy's sigh
목적
DMP로 보수계 기능을 실행시켜 M5Stack의 화면에 표시한다.
환경
개발 환경: Arduino IDE(1.8.7) (arduino-esp32 v1.0.1)
장비: M5Stack Gray
구현
DMP로 움직이는 기능의 바이너리를 업로드하는 부분이나, 거기에의 I2C 접속등을 실장할 필요가 있지만, 이것들을 실장 끝난 편리한 라이브러리가 있으므로 그것을 이용한다.
라이브러리 추가
sparkfun/SparkFun_MPU-9250-DMP_Arduino_Library
Arduino IDE에 설치.
라이브러리 편집
그대로 이용하려고 하면 에러가 발생하기 때문에(원래 SparkFun의 제품용의 라이브러리를 위해), 일부 수정.
라이브러리 설치 대상으로 이동 다음 두 가지 사항 편집
/src/util/inv_mpu.c#define min(X,Y) ((X) < (Y) ? (X) : (Y))
// 上の方(例えば40行目)あたりに追加
/library.propertiesarchitectures=*
걸음 수를 화면에 표시
다음 코드를 작성합니다. (스케치 예 SparkFun MPU-9250 Digital Motion Processing (DMP) Arduino Library > MPU9250_DMP_Pedometer를 M5Stack용으로 수정)
* 이하의 코드는 무보증입니다. 자기 책임으로 이용하십시오.
MPU9250_DMP_Pedometer.ino/************************************************************
MPU9250_DMP_Pedometer
Pedometer example for MPU-9250 DMP Arduino Library
Jim Lindblom @ SparkFun Electronics
original creation date: November 23, 2016
https://github.com/sparkfun/SparkFun_MPU9250_DMP_Arduino_Library
The MPU-9250's digital motion processor (DMP) can estimate
steps taken -- effecting a pedometer.
After uploading the code, try shaking the 9DoF up and
down at a "stepping speed."
Development environment specifics:
Arduino IDE 1.6.12
SparkFun 9DoF Razor IMU M0
Supported Platforms:
- ATSAMD21 (Arduino Zero, SparkFun SAMD21 Breakouts)
*************************************************************/
#include <M5Stack.h>
#include <SparkFunMPU9250-DMP.h>
MPU9250_DMP imu;
unsigned long stepCount = 0;
unsigned long stepTime = 0;
unsigned long lastStepCount = 0;
void setup()
{
M5.begin();
// Call imu.begin() to verify communication and initialize
if (imu.begin() != INV_SUCCESS)
{
while (1)
{
Serial.println("Unable to communicate with MPU-9250");
Serial.println("Check connections, and try again.");
Serial.println();
delay(5000);
}
}
imu.dmpBegin(DMP_FEATURE_PEDOMETER);
imu.dmpSetPedometerSteps(stepCount);
imu.dmpSetPedometerTime(stepTime);
M5.Lcd.setTextSize(4);
M5.lcd.print("Walked 0 steps");
}
void loop()
{
stepCount = imu.dmpGetPedometerSteps();
stepTime = imu.dmpGetPedometerTime();
if (stepCount != lastStepCount)
{
lastStepCount = stepCount;
M5.lcd.clear();
M5.Lcd.setCursor(0,0);
M5.lcd.print("Walked " + String(stepCount) + " steps");
M5.lcd.print(" (" +
String((float)stepTime / 1000.0) + " s)");
}
}
동작 이미지
요약
보수계 기능을 쉽게 이용할 수 있었다. 처리는 센서 칩내에서 행해지므로 메인의 처리의 방해도 하지 않을 것.
DMP에는 그 밖에도 기울기 검출 기능이나 탭 기능? 등도 있는 것 같아서 시험해보고 싶다.
Reference
이 문제에 관하여(M5Stack Gray에 탑재된 가속도 센서 MPU-9250의 보수계 기능을 이용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tanopanta/items/7ec96bf4801eddedac39
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
개발 환경: Arduino IDE(1.8.7) (arduino-esp32 v1.0.1)
장비: M5Stack Gray
구현
DMP로 움직이는 기능의 바이너리를 업로드하는 부분이나, 거기에의 I2C 접속등을 실장할 필요가 있지만, 이것들을 실장 끝난 편리한 라이브러리가 있으므로 그것을 이용한다.
라이브러리 추가
sparkfun/SparkFun_MPU-9250-DMP_Arduino_Library
Arduino IDE에 설치.
라이브러리 편집
그대로 이용하려고 하면 에러가 발생하기 때문에(원래 SparkFun의 제품용의 라이브러리를 위해), 일부 수정.
라이브러리 설치 대상으로 이동 다음 두 가지 사항 편집
/src/util/inv_mpu.c#define min(X,Y) ((X) < (Y) ? (X) : (Y))
// 上の方(例えば40行目)あたりに追加
/library.propertiesarchitectures=*
걸음 수를 화면에 표시
다음 코드를 작성합니다. (스케치 예 SparkFun MPU-9250 Digital Motion Processing (DMP) Arduino Library > MPU9250_DMP_Pedometer를 M5Stack용으로 수정)
* 이하의 코드는 무보증입니다. 자기 책임으로 이용하십시오.
MPU9250_DMP_Pedometer.ino/************************************************************
MPU9250_DMP_Pedometer
Pedometer example for MPU-9250 DMP Arduino Library
Jim Lindblom @ SparkFun Electronics
original creation date: November 23, 2016
https://github.com/sparkfun/SparkFun_MPU9250_DMP_Arduino_Library
The MPU-9250's digital motion processor (DMP) can estimate
steps taken -- effecting a pedometer.
After uploading the code, try shaking the 9DoF up and
down at a "stepping speed."
Development environment specifics:
Arduino IDE 1.6.12
SparkFun 9DoF Razor IMU M0
Supported Platforms:
- ATSAMD21 (Arduino Zero, SparkFun SAMD21 Breakouts)
*************************************************************/
#include <M5Stack.h>
#include <SparkFunMPU9250-DMP.h>
MPU9250_DMP imu;
unsigned long stepCount = 0;
unsigned long stepTime = 0;
unsigned long lastStepCount = 0;
void setup()
{
M5.begin();
// Call imu.begin() to verify communication and initialize
if (imu.begin() != INV_SUCCESS)
{
while (1)
{
Serial.println("Unable to communicate with MPU-9250");
Serial.println("Check connections, and try again.");
Serial.println();
delay(5000);
}
}
imu.dmpBegin(DMP_FEATURE_PEDOMETER);
imu.dmpSetPedometerSteps(stepCount);
imu.dmpSetPedometerTime(stepTime);
M5.Lcd.setTextSize(4);
M5.lcd.print("Walked 0 steps");
}
void loop()
{
stepCount = imu.dmpGetPedometerSteps();
stepTime = imu.dmpGetPedometerTime();
if (stepCount != lastStepCount)
{
lastStepCount = stepCount;
M5.lcd.clear();
M5.Lcd.setCursor(0,0);
M5.lcd.print("Walked " + String(stepCount) + " steps");
M5.lcd.print(" (" +
String((float)stepTime / 1000.0) + " s)");
}
}
동작 이미지
요약
보수계 기능을 쉽게 이용할 수 있었다. 처리는 센서 칩내에서 행해지므로 메인의 처리의 방해도 하지 않을 것.
DMP에는 그 밖에도 기울기 검출 기능이나 탭 기능? 등도 있는 것 같아서 시험해보고 싶다.
Reference
이 문제에 관하여(M5Stack Gray에 탑재된 가속도 센서 MPU-9250의 보수계 기능을 이용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tanopanta/items/7ec96bf4801eddedac39
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#define min(X,Y) ((X) < (Y) ? (X) : (Y))
// 上の方(例えば40行目)あたりに追加
architectures=*
/************************************************************
MPU9250_DMP_Pedometer
Pedometer example for MPU-9250 DMP Arduino Library
Jim Lindblom @ SparkFun Electronics
original creation date: November 23, 2016
https://github.com/sparkfun/SparkFun_MPU9250_DMP_Arduino_Library
The MPU-9250's digital motion processor (DMP) can estimate
steps taken -- effecting a pedometer.
After uploading the code, try shaking the 9DoF up and
down at a "stepping speed."
Development environment specifics:
Arduino IDE 1.6.12
SparkFun 9DoF Razor IMU M0
Supported Platforms:
- ATSAMD21 (Arduino Zero, SparkFun SAMD21 Breakouts)
*************************************************************/
#include <M5Stack.h>
#include <SparkFunMPU9250-DMP.h>
MPU9250_DMP imu;
unsigned long stepCount = 0;
unsigned long stepTime = 0;
unsigned long lastStepCount = 0;
void setup()
{
M5.begin();
// Call imu.begin() to verify communication and initialize
if (imu.begin() != INV_SUCCESS)
{
while (1)
{
Serial.println("Unable to communicate with MPU-9250");
Serial.println("Check connections, and try again.");
Serial.println();
delay(5000);
}
}
imu.dmpBegin(DMP_FEATURE_PEDOMETER);
imu.dmpSetPedometerSteps(stepCount);
imu.dmpSetPedometerTime(stepTime);
M5.Lcd.setTextSize(4);
M5.lcd.print("Walked 0 steps");
}
void loop()
{
stepCount = imu.dmpGetPedometerSteps();
stepTime = imu.dmpGetPedometerTime();
if (stepCount != lastStepCount)
{
lastStepCount = stepCount;
M5.lcd.clear();
M5.Lcd.setCursor(0,0);
M5.lcd.print("Walked " + String(stepCount) + " steps");
M5.lcd.print(" (" +
String((float)stepTime / 1000.0) + " s)");
}
}
보수계 기능을 쉽게 이용할 수 있었다. 처리는 센서 칩내에서 행해지므로 메인의 처리의 방해도 하지 않을 것.
DMP에는 그 밖에도 기울기 검출 기능이나 탭 기능? 등도 있는 것 같아서 시험해보고 싶다.
Reference
이 문제에 관하여(M5Stack Gray에 탑재된 가속도 센서 MPU-9250의 보수계 기능을 이용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanopanta/items/7ec96bf4801eddedac39텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)