[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してディスプレイに表示してみました

2021.07.03

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

M5Stack Core2 for AWSを使うために、ここまで、PlatformIOで新規プロジェクトを作成して作業を始めることこと、Core2 for AWS IoT EduKit BSPを組み込みを試してみました。

今回は、引き続き、Core2 for AWS IoT EduKit BSPを使用して、画面周りの表示を確認してみました。

2 文字列出力

ここまでの作業で、BSPが、セットアップできているので、同じプロジェクトでapp_main() を下記のように書き換えるだけで、画面への文字列出力が可能です。

main.c

#include "freertos/FreeRTOS.h"
#include "freertos/semphr.h"
#include "core2forAWS.h"
 
void app_main(void){
    Core2ForAWS_Init();
    Core2ForAWS_Display_SetBrightness(80);
 
    xSemaphoreTake(xGuiSemaphore, portMAX_DELAY);
 
    lv_obj_t * hello_label = lv_label_create(lv_scr_act(), NULL);
    lv_label_set_text(hello_label, "Hello World");
    lv_obj_align(hello_label, NULL, LV_ALIGN_CENTER, 0, 0);
    
    xSemaphoreGive(xGuiSemaphore);
}

2 ILI9342C

ディスプレイは、SPIバスに接続されたILI9342Cでドライブされています。

Core2 for AWS IoT EduKit BSP/Display

Core2 for AWS IoT EduKit BSPでは、ILI9342Cを使用するために、LVGLライブラリを使用しているため、実際の利用方法は、こちらのドキュメントを参照する事になります。

https://docs.lvgl.io/latest/en/html/widgets/index.html

なお、LVGL APIをコールする前後で、xGuiSemaphoreのセマフォの取得及び、開放が必要です。
https://edukit.workshop.aws/en/api-reference/xguisemaphore_variable.html

3 行単位でテキスト表示

行単位でテキストを表示してみました。lv_obj_alignで、基準位置からの相対位置を指定できます。


参考:Base object (lv_obj)

#include "freertos/FreeRTOS.h"
#include "freertos/semphr.h"
#include "core2forAWS.h"
 
void app_main(void){
    Core2ForAWS_Init();
    Core2ForAWS_Display_SetBrightness(80);
 
    xSemaphoreTake(xGuiSemaphore, portMAX_DELAY);

    char buffer[128];
    const int LINE_HEIGHT = 20; // 行の高さ
    const int LEFT_MARGIN = 10; // 左余白
    const int LINE_MAX = 10; // 表示行数
    for (int i = 0; i < LINE_MAX; i++) {
        lv_obj_t * my_label = lv_label_create(lv_scr_act(), NULL);
        sprintf(buffer, "%2d Hello World.", i);
        lv_label_set_text(my_label, buffer);
        lv_obj_align(my_label, NULL, LV_ALIGN_IN_TOP_LEFT, LEFT_MARGIN, i * LINE_HEIGHT);
    }
    
    xSemaphoreGive(xGuiSemaphore);
}

4 その他

LVGLライブラリは、文字列の表示だけではなく、あらゆるコントロール等の描画が可能になっています。

  • ボタン

  • チェックボックス

  • スライダー

Getting Startの画面で表示されていたファンや、家も、lv_img_createlv_img_set_srcで描画されていますが、画像データについては、cのソースファイルとなっているようでした。

5 最後に

今回は、新規作成したプロジェクトに、Core2 for AWS IoT EduKit BSPを組み込み、ディスプレイを操作してみました。

久々のC言語で、ちょっと戸惑ってますが、続けて、BSPの各種モジュールを試してみたいと思います。

6 参考リンク


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を使用しててみました