LoginSignup
0
6

More than 5 years have passed since last update.

M5StackでセンサーデーターをAmbientに送る (Arduino編)

Last updated at Posted at 2018-03-17

M5StackはEspressif社のマイコンESP32を搭載したコンパクトなIoT端末です。Arduino IDE、MicroPythonとEspressif社のESP-IDFでプログラミングできます。ここではM5Stackと温湿度・気圧センサーBME280と空気品質センサーBME680をArduinoで制御してセンサーデーターを読み、IoTデーター可視化サービスAmbientに送る例を紹介します。MicroPythonで使う例は以下のページをご覧ください(近日公開)。

  • M5StackでセンサーデーターをAmbientに送る (MicroPython編)

M5Stack_BME280

M5Stack

M5StackはESP32マイコン、電池、320 x 240 TFTカラーディスプレイ、スピーカーなどを搭載したIoT端末で、Wi-FiとBluetoothで通信できます。5.4cm x 5.4cmのコンパクトなケースに入っていて、拡張モジュールを積み重ねることで機能を追加できます。現時点ではGPSモジュールやユニバーサル基板モジュールなどの拡張モジュールがあります。

詳細は次のサイトをご覧ください。

M5Stackを使うためのArduinoの環境設定

公式サイトにWindows/Mac/Linuxでのインストール方法が解説されています。ここでは簡単にMacでのインストールの流れを紹介します。

  • USBドライバーのインストール: SiLabs CP2104 Driverをダウンロードしてインストールします。

  • ESP32 Arduino Coreのインストール: 公式サイトの説明に従ってESP32 Arduino Coreをインストールします。

  • M5Stackライブラリーのダウンロード: Arduino IDEのライブラリーマネージャーを使うか、Gitを使う方法があります。どちらかの方法でM5Stackライブラリーをダウンロードします。

以上でArduinoの環境設定は終わりです。

M5Stackの動作確認

Arduino IDEを立ち上げて、

  • M5StackをUSBケーブルでPCに接続
  • Arduino IDE メニューの「ツール」→「ボード」で「M5Stack-Core-ESP32」を選択

selectBoard

  • 「ツール」→「シリアルポート」で「/dev/cu.SLAB_USBtoUART」を選択
  • 「ファイル」→「スケッチ例」→「M5Stack」→「Basics」→「Hello」を選択
  • ビルドしてマイコンボードに書き込む

プログラムがダウンロードされ、M5Stackの画面が消え、hello worldと出力されれば、環境設定はokです。

温湿度・気圧センサーBME280を使う

M5Stack_back

M5Stackの底に近い部分にはBUS PORTとI/O PORTと呼ばれるスロットがあります。BUS PORT、I/O PORTとも一方がピン、他方がソケットで、対向するピンとソケットは同じ信号がでています。各ピン/ソケットの意味はシールに書かれています。

その中にI2C通信で使うSDA、SCLと3.3V、GNDがあるので、BME280モジュールをそこにつなぎます。SDA、SCLは対向する側ではそれぞれ21、22と書かれていますが、同じ信号です。この他にスイッチサイエンスのBME280モジュールにはSDOとCSBというピンがあり、それぞれGND、3.3Vにつなぎます。

M5Stack BME280モジュール
GND SDO
SCL(22) SCK
SDA(21) SDI
3V3 CSB
GND GND
3V3 Vcore
Vio

必要な部品をまとめました。M5StackとBME280モジュールをつなぐケーブルは「M5Stack Basic」に含まれています。

部品 個数
M5Stack Basic 1個
BME280搭載 温湿度・気圧センサモジュール 1個
ピンヘッダL型1×40 1個

プログラム

Ambientライブラリーのインストール

AmbientライブラリーはESP8266/ESP32用のものを使います。

dl_from_github

  • Arduino IDEを立ち上げ、「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」を選択し、ダウンロードしたファイルを選択する

lib_install.jpg

「スケッチ」→「ライブラリをインクルード」を選択し「Ambient ESP8266 lib」が表示されればライブラリーは正しくインストールされています。

BME280をアクセスする

BME280をアクセスし、温度、湿度、気圧を測定してM5StackのLCDに出力してみます。
プログラムはArduino IDEを立ち上げ、「ファイル」→「スケッチ例」→「Ambient ESP8266 lib」→「M5Stack」→「BME280_test」を選択するとロードできます。

BME280ライブラリーはESP8266用のBME280ライブラリーがそのまま使えます。BME280をI2Cで使う時はSDAとSCLをプルアップする必要があります。スイッチサイエンスのESP8266モジュールにはプルアップ抵抗が載っていませんが、プログラムでプルアップするので大丈夫です。

    pinMode(21, INPUT_PULLUP);
    pinMode(22, INPUT_PULLUP);

BME280のデーターをAmbientに送る

次にBME280のデーターをAmbientに送信します。Ambientにデーターを送信するライブラリーはESP8266/ESP32共通で、M5Stackでも同じものを使います。Ambientに関係する部分だけを抜き出すと、setup()関数でAmbientの初期化をおこない、loop()関数でセンサーの値を読んで、その値を.set()でパケットにセットし、.send()でAmbientに送信しています。

プログラムはArduino IDEを立ち上げ、「ファイル」→「スケッチ例」→「Ambient ESP8266 lib」→「M5Stack」→「Ambient_BME280」を選択するとロードできます。

プログラムをビルドし、M5Stackに書き込むと、BME280で温度、湿度、気圧を測定し、データーがAmbientに送信されます。Ambientのチャネルページを見ると、次のようにデーターが確認できます。

スクショ

温湿度・気圧・空気品質センサーBME680を使う

温湿度・気圧に加えて、空気品質を測定できるBME680というセンサーがあります。これもM5Stackにつなげてみます。BME680センサーチップはI2CとSPIの両方のインターフェースを持っていますが、スイッチサイエンス社が扱っているPimoroni社のモジュールはI2Cインターフェースのみに対応し、5本のピンでアクセスするようになっています。これを次のようにM5Stackに接続します。

M5Stack BME680モジュール
3V3 2-6V
SDA(21) SDA
SCL(22) SCL
GND GND

信号の並び順がM5StackとPimoroni社のBME680モジュールとで違うので、順番を入れ替える小さな基板を作ってBME680をM5Stackにつなぎました。

M5Stack_BME680

BME680をアクセスするライブラリーはAdafruitのものを使いました。そのままだとコンパイルエラーになるので、一部修正を加えています。

プログラムはArduino IDEを立ち上げ、「ファイル」→「スケッチ例」→「Ambient ESP8266 lib」→「M5Stack」→「Ambient_BME680」を選択するとロードできます。

まとめ

M5Stackは5.4cm x 5.4cmのコンパクトなケースにESP32、電池、320 x 240 TFTカラーディスプレイなどが搭載されたIoT端末です。拡張モジュールを積み重ねることで機能を拡張していけます。ArduinoとMicroPythonでプログラミングできることも魅力です。簡単な実験から本番での使用まで幅広く使えるIoT端末です。

0
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
6