[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して電源を操作してみました

2021.07.05

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を使用してディスプレイ上のボタンの動作を確認してみました

BSPでは、入力電力、周辺電力及び、バッテリー充電回路を制御するライブラリが含まれています。

最初に、試しに作成してみたサンプルです。 Power OFFのボタンを押すと、3秒後に電源断としてみました。

2 コード

下記が、動画のコードです。

ディスプレイ上のボタンにタッチすると、Axp192_PowerOff()により、3秒後にM5Stack Core2の電源が断となります。

ボタンの描画や、そのイベント処理については、[M5Stack Core2 for AWS] LVCLを使用してディスプレイ上のボタンの動作を確認してみましたをご参照ください。

main.c

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

static const char *TAG = "BUTTON_SAMPLE";

static void event_handler(lv_obj_t * obj, lv_event_t event) {
    if(event == LV_EVENT_CLICKED) {
        ESP_LOGI(TAG, "Clicked!");
        const int delay = 3;
        for(int i=0; i<delay; i++) {
            ESP_LOGI(TAG, "Power Off %d",delay - i);
            vTaskDelay(pdMS_TO_TICKS(1000));
        }
        Axp192_PowerOff(); // 電源断
    }
}

void button_sample(void) {
    lv_obj_t * label;

    lv_obj_t * power_off_btn = lv_btn_create(lv_scr_act(), NULL);
    lv_obj_set_event_cb(power_off_btn, event_handler);
    lv_obj_align(power_off_btn, NULL, LV_ALIGN_CENTER, 0, 0);
    lv_btn_set_checkable(power_off_btn, true);
    lv_btn_toggle(power_off_btn);
    lv_btn_set_fit2(power_off_btn, LV_FIT_NONE, LV_FIT_TIGHT);

    label = lv_label_create(power_off_btn, NULL);
    lv_label_set_text(label, "Power Off");
}

void app_main(void){
    Core2ForAWS_Init();
    Core2ForAWS_Display_SetBrightness(80);
 
    xSemaphoreTake(xGuiSemaphore, portMAX_DELAY);
    button_sample();
    xSemaphoreGive(xGuiSemaphore);
}

3 AXP192

AXP192ライブラリは、電力管理ユニット(PMU)を制御するものです。


https://edukit.workshop.aws/en/api-reference/axp192.html

ファンクションとして、以下のようなものが提供されています。

  • Core2ForAWS_PMU_Init (AXP192電源管理ユニット(PMU)の初期化)
  • Core2ForAWS_PMU_GetBatVolt (バッテリ電圧の取得)
  • Core2ForAWS_PMU_GetBatCurrent (バッテリー電流の取得)
  • Axp192_PowerOff (電源OFF)
  • Axp192_SetPressPoweroffTime (電源OFFために電源ボタンを押す時間の設定)
  • Axp192_SetPressStartupTime (電源ONために電源ボタンを押す時間の設定)

4 最後に

今回は、電源を制御するライブラリについて確認してみました。 まだ、全然FreeRTOSの作法が掴めてませんが、めげずに、引き続き、Core2 for AWS IoT EduKit 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を使用しててみました