M5Stack Core2 for AWSでは利用できるGPIOが少ないため、GPIOエキスパンダ「MCP23017」を接続して拡張します。アプリの開発はarduino IDEを使用します。

M5Stack Core2 for AWSとGPIOエキスパンダ「MCP23017」の接続

M5Stack Core2 for AWSとGPIOエキスパンダ「MCP23017」の結線を次に示します。「M5Stack Core2 for AWSでMH-Z19Cを使ってCO2の検出」にPort Aの信号名称を示します。

M5Stack Core2 (Port A) MCP23017
5V VCC
GND GND
SDA SDA
SCL SCL

GPIOエキスパンダ「MCP23017」で拡張されたGPIOのpin割り当てを次に示します。pin名称「GPA0」にLEDを接続します。

M5Stack Core2 for AWSとGPIOエキスパンダ「MCP23017」の接続画像を次に示します。

M5Stack Core2 for AWSとGPIOエキスパンダ「MCP23017」との接続を、「i2c_scanner_M5Core2.ino」を使って確認します。GPIOエキスパンダ「MCP23017」のアドレス は「0×20」でした。

GPIOエキスパンダ「MCP23017」のライブラリのインストール

Raspberry Pi 3にGPIOエキスパンダ「MCP23017/PC8574」を接続」でRaspberry Pi 3にGPIOエキスパンダ「MCP23017/PC8574」を接続しました。今回は「adafruit/Adafruit-MCP23017-Arduino-Library」で提供されるライブラリを使用します。

「Adafruit-MCP23017-Arduino-Library」からzipファイル形式でダウンロードし、メニューから「スケッチ」→「ライブラリをインクルード」→「.zip形式のライブラリをインクルード」を開き、ダウンロードしたzipファイルを読み込みます。

GPIOエキスパンダアプリの作成

GPIOエキスパンダアプリ「MCP23017_Demo.ino」は、次のようにメニューから[ファイル | →「スケッチ例」→「Adafruit MCP23017-xxx」にある 「mcp23xxx_blink」をベースにします。

M5Stack Core2 for AWS上で動作させるために次のように変更します。

  • 1行目で「M5Core2.h」をインクルードします。
  • 11行目と12行目でM5Stack Core2 for AWSの設定とPort Aに対して、5vを供給します。

MCP23017_Demo.ino

#include <M5Core2.h>
#include <Adafruit_MCP23X08.h>
#include <Adafruit_MCP23X17.h>

#define LED_PIN 0     // MCP23XXX pin LED is attached to

// uncomment appropriate line
Adafruit_MCP23X17 mcp;

void setup() {
  M5.begin(true, true, true, false);
  M5.Axp.SetCHGCurrent(AXP192::kCHG_100mA);

  // uncomment appropriate mcp.begin
  if (!mcp.begin_I2C()) {
    Serial.println("Error.");
    while (1);
  }

  // configure pin for output
  mcp.pinMode(LED_PIN, OUTPUT);
  Serial.println("MCP23xxx Blink Test!");
  Serial.println("Looping...");
}

void loop() {
  mcp.digitalWrite(LED_PIN, HIGH);
  delay(500);
  mcp.digitalWrite(LED_PIN, LOW);
  delay(500);
}

コンパイル時に次のエラーが発生しました。

C:\MyPathDocuments\Arduino\libraries\Adafruit_MCP23017_Arduino_Library\src\Adafruit_MCP23XXX.h:29:3: error: 'ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE' was not declared in this scope

ライブラリ管理から、インストールされていた「Adafruit BusIO」をアップデートすると、コンパイルエラーがなくなりました。

GPIOエキスパンダアプリの実行

GPIOエキスパンダアプリ「MCP23017_Demo.ino」を実行すると、GPIOエキスパンダ「MCP23017」に接続したLEDが点滅します。