[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してジャイロセンサーを操作してみました

2021.07.11

1 はじめに

IoT事業部の平内(SIN)です。

M5Stack Core2 for AWSを使うために、ここまで、PlatformIOで新規プロジェクトを作成し、Core2 for AWS IoT EduKit BSPの動作を色々試してみました。


Visual Studio Code + PlatformIO 環境で M5Stack Core2 for AWS でHello Worldしてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してLEDを光らせてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してディスプレイに表示してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して仮想ボタンの動作を確認してみました
[M5Stack Core2 for AWS] LVCLを使用してディスプレイ上のボタンの動作を確認してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して電源を操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してスピーカーを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して静電容量式タッチパネルを操作してみました

BSPでは、ジャイロセンサーや、温度センサーを制御するライブラリが含まれています。

最初に、動作しているサンプルです。 M5Stackの傾きに合わせて、画面のバーの長さを変えてみました。

2 MPU6886

MPU6886ライブラリは、6軸慣性測定ユニット(IMU)と温度センサーを制御する機能を提供します。

MPU6886(6軸 IMUユニット)は、I2Cで接続されます。
https://edukit.workshop.aws/en/api-reference/mpu6886.html

ライブラリでは、下記のメソッドが公開されています。

  • MPU6886_Init(初期化)
  • MPU6886_SetGyroFSR(ジャイロスコープのスケール範囲を設定)
  • MPU6886_GetGyroRes(ジャイロスコープの解像度を取得)
  • MPU6886_GetGyroAdc(ジャイロスコープの測定値を取得「16bi ADC」)
  • MPU6886_GetGyroData(ジャイロスコープの測定値を取得)
  • MPU6886_SetAccelFSR(加速度計のスケール範囲を設定)
  • MPU6886_GetAccRes(加速度計の解像度を取得)
  • MPU6886_GetAccelAdc (加速度計の測定値を取得「16bi ADC」)
  • MPU6886_GetAccelData(加速度計の測定値を取得)
  • MPU6886_GetTempAdc(温度の取得「16bi ADC」)
  • MPU6886_GetTempData(温度の取得)

3 コード

試してみたコードは、以下のとおりです。 ジャイロセンサーで取得したデータを画面上にバーで表示し、500msごとに更新しています。

#include "freertos/FreeRTOS.h"
#include "freertos/task.h" 
#include "esp_log.h"
#include "core2forAWS.h"

static const char *TAG = "SAMPLE001";

// Bar生成
lv_obj_t * create_bar(int y) {
    lv_obj_t * bar = lv_bar_create(lv_scr_act(), NULL);
    lv_obj_set_size(bar, 200, 20);
    lv_bar_set_range(bar, 0, 100);
    lv_obj_align(bar, NULL, LV_ALIGN_CENTER, 0, y);
    return bar;
}

// Barへの値設定
void set_value(lv_obj_t * bar, float value) {
    value += 1;
    value *= 50;
    lv_bar_set_value(bar, (int)value, LV_ANIM_OFF);
}

static void accel_task(void* pvParameters){

    lv_obj_t * bar_x = create_bar(-40);
    lv_obj_t * bar_y = create_bar(0);
    lv_obj_t * bar_z = create_bar(40);

    float accel_x = 0.00;
    float accel_y = 0.00;
    float accel_z = 0.00;

    for(;;){
        MPU6886_GetAccelData(&accel_x, &accel_y, &accel_z);
        ESP_LOGI(TAG, "X:%.2f  Y:%.2f  Z:%.2f", accel_x, accel_y, accel_z);
        set_value(bar_x, accel_x);
        set_value(bar_y, accel_y);
        set_value(bar_z, accel_z);
        vTaskDelay(pdMS_TO_TICKS(500));
    }
    vTaskDelete(NULL);
}

void app_main(void){
    Core2ForAWS_Init();
    Core2ForAWS_Display_SetBrightness(80);

    xTaskCreate(accel_task, "accelerometerTask", configMINIMAL_STACK_SIZE * 3, NULL, 1, NULL);
}

4 最後に

今回は、ジャイロセンサーを制御するライブラリについて確認してみました。 もう少しで、BSPで提供されるライブラリを一通り確認できそうです。

5 参考リンク


Visual Studio Code + PlatformIO 環境で M5Stack Core2 for AWS でHello Worldしてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してLEDを光らせてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してディスプレイに表示してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して仮想ボタンの動作を確認してみました
[M5Stack Core2 for AWS] LVCLを使用してディスプレイ上のボタンの動作を確認してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して電源を操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してスピーカーを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して静電容量式タッチパネルを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してジャイロセンサーを操作してみました
[M5Stack Core2 for AWS] PlatformIO を使用して、ArduinoでHello Worldしてみました
[M5Stack Core2 for AWS] ArduinoでLED (Adafruit NeoPixel フルカラーLED) を点灯してみました
[M5Stack Core2 for AWS] Arduinoで仮想ボタンを作成してみました
[M5Stack Core2 for AWS] ArduinoでMQTT接続してみました
[M5Stack Core2 for AWS] Arduinoでオーディオファイルを再生してみました
[M5Stack Core2 for AWS] Arduinoでマイクの利用方法を確認してみました
[M5Stack Core2 for AWS] ArduinoでGroveポートのGPIOを使用しててみました