M5Stack に色々な M5 ユニットをつないで扱う為の新たなアプローチ
M5Stack シリーズ、 M5Unitシリーズの為のライブラリです。
注意: 現在αバージョンです
ご意見ご要望などは Issue または PR にてお願いします。
M5UnitUnified は、様々な M5 ユニット製品を統一的に扱うためのライブラリです。
各ユニットの外部ライブラリは、それぞれ独自の API デザインがされています。
基本的なAPIを統一し、すべてのユニットが同じように扱えるようにします。
各ユニットの外部ライブラリは独自の通信機能と前提条件が必要です。
前提条件や通信方法を統一化します。
将来的にはM5HAL(Hardware Abstraction Layer)と連携し、各ユニットとの通信を統一する予定です。
各ユニットの外部ライブラリのライセンスは様々な物が混在しています。
すべてのM5UnitUnifiedおよび関連ライブラリは、MITライセンス下にあります。
アルファ版ですが Arduino/PlatformIO のライブラリマネージャーに登録されています
- ライブリマネージャから使用したいユニットのライブラリ (M5Unit-Foo) を選択してください
依存する M5UnitUnfied 関連のライブラリは自動で DL されます
- platformio.ini の lib_deps に記述してください
lib_deps=m5stack/M5Unit-foo ;使用したいユニットのライブラリ
依存する M5UnitUnfied 関連のライブラリは自動で DL されます
各ユニットのレポジトリの例も参照のこと。
// 他のユニットを使用する場合、インクルードファイル (*1)、インスタンス (*2)、値の取得 (*3) を変更する
#include <M5Unified.h>
#include <M5UnitUnified.h>
#include <M5UnitUnifiedENV.h> // *1 使用するユニットのヘッダ
m5::unit::UnitUnified Units;
m5::unit::UnitCO2 unit; // *2 使用するユニットのインスタンス
void setup() {
M5.begin();
auto pin_num_sda = M5.getPin(m5::pin_name_t::port_a_sda);
auto pin_num_scl = M5.getPin(m5::pin_name_t::port_a_scl);
M5_LOGI("getPin: SDA:%u SCL:%u", pin_num_sda, pin_num_scl);
Wire.begin(pin_num_sda, pin_num_scl, 400 * 1000U);
M5.Display.clear(TFT_DARKGREEN);
if (!Units.add(unit, Wire) // unit を UnitUnified マネージャへ追加
|| !Units.begin()) { // ユニットの始動
M5_LOGE("Failed to add/begin");
M5.Display.clear(TFT_RED);
}
}
void loop() {
M5.begin();
Units.update();
if (unit.updated()) {
// *3 ユニット固有の計測値の取得
M5_LOGI("CO2:%u Temp:%f Hum:%f", unit.co2(), unit.temperature(), unit.humidity());
}
}
- Arduino
ESP-IDF は将来対応予定です。
- TwoWire による I2C 通信
GPIO、UART は将来対応予定です。
こちらを参照 https://docs.m5stack.com/en/products
- CORE
- STICK
- ATOM
- STAMP
- E-PAPER
他のデバイスは動作確認されたのち追加されます。
- M5Unit-ENV
- UnitCO2
- UnitENVIII
- UnitTVOC
- UnitENVPro
- M5Unit-METER
- UnitAmeter
- UnitVmeter
- UnitKmeterISO
- M5Unit-HUB
- UnitPaHub2
- M5Unit-GESTURE
- UnitGESTURE
- M5Unit-HEART
- UnitHEART
- M5Unit-TOF
- UnitToF
- UnitToF4M
- M5Unit-WEIGHT
- UnitWeightI2C
他のユニットは開発、確認後追加されます。
各ユニットのサンプルについては、各ユニットのリポジトリを参照してください。
このリポジトリにあるサンプルは M5UnitUnified 全般のものです。
あなたのローカルマシンでドキュメントを生成したい場合は、以下のコマンドを実行してください。
bash docs/doxy.sh
docs/html の下に出力されます。
Git コミットのハッシュを html に出力したい場合は、 git クローンしたフォルダに対して実行してください。