[M5Stack Core2 for AWS] ArduinoでGroveポートのGPIOを使用してみました

2021.07.24

1 はじめに

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

今回は、Arduinoを使用してM5Stack Core2 for AWSでGroveポートから利用できるGPIOを使用してみました。

最初に、動作確認している様子です。ディスプレイ上のボタンに連動してGPIOをHIGH/LOWさせてLEDをON/OFFしています。

サンプルで使用しているディスプレイ上のボタンについては、下記の記事をご参照ください。


[M5Stack Core2 for AWS] Arduinoで仮想ボタンを作成してみました

2 PORT A(Grove)

M5Stack Core2 for AWSでは、Groveのポートが3つありますが、電源スイッチ側にあるPORT Aから、GPIO 32,33が利用可能です。

そして、こちらは、I2Cと供用になっています。

https://docs.m5stack.com/en/core/core2

M5Stack.begin() で、bool I2CEnable をtrueにするとI2Cで初期化されてしまうので、今回は、ここをfalseとしました。

https://github.com/m5stack/m5-docs/blob/master/docs/ja/api/system.md

3 コード

コードは、以下の通りです。

初期化時に、GPIOの32,33をOUTPUTに設定し、ボタンのトグル状態で、GPIOをHIGH/LOWを切り替えているだけです。

#include <M5Core2.h>
#include "VButton.h"

VButton *yellow_button;
VButton *green_button;

#define PIN_YELLOW 32
#define PIN_GREEN 33

void button_callback(char *title, bool use_toggle, bool is_toggled){
    if(title == "YELLOW"){
        digitalWrite(PIN_YELLOW, is_toggled);
    }else{
        digitalWrite(PIN_GREEN, is_toggled);
    }
}

ushort getColor(uint8_t red, uint8_t green, uint8_t blue){
  return ((red>>3)<<11) | ((green>>2)<<5) | (blue>>3);
}

void setup(){
    M5.begin(true, true, true, false); // I2C無効(PORTA をGPIOで使用するため)
    M5.Lcd.setBrightness(200);
    M5.Lcd.fillScreen(WHITE);

    green_button = new VButton("GREEN", button_callback, true, -30, getColor(0, 100, 0));
    yellow_button = new VButton("YELLOW", button_callback, true, 30, getColor(100, 100, 0));

    // GPIO 32,33 モード設定
    pinMode(PIN_YELLOW, OUTPUT);  
    pinMode(PIN_GREEN, OUTPUT);  
}

void loop() {
    green_button->loop();
    yellow_button->loop();
}

4 最後に

M5Stack Core2 for AWSでは、GPIOの端子が見えないようにカバーされていますが、特定のもので良ければ、今回のようにGroveで簡単に利用可能です。

今回使用したPORTA以外にも、あと2つGroveポートがあります。

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でマイクの利用方法を確認してみました