pdf-icon

Arduino入門

2. デバイス&サンプル

Unit Mini BPS Arduino ユーザーガイド

1. 準備作業

依存ライブラリ
上記のドライバライブラリ(M5UnitUnifiedM5Unit-ENV など)は、インストール時に他の依存ライブラリ(例: M5HALM5Utility など)が必要です。Arduino ライブラリマネージャを通じてインストールする場合は、表示される指示に従って全ての依存ライブラリをインストールしてください。

2. サンプルプログラム

サンプル説明
本サンプルでは Unit Mini BPS v1.1 を例として、気圧データの読み取りを実現します。もし Unit Mini BPS(BMP280 バージョン)を使用している場合は、USING_BPS のコメントを切り替えることで別のインスタンスを有効にできます。
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
#include <M5Unified.h>
#include "M5UnitENV.h"

M5Canvas canvas(&M5.Display);

// #define USING_BPS
#define USING_BPS_V11

#if defined(USING_BPS)
  BMP280 bmp;
#elif defined(USING_BPS_V11)
  QMP6988 qmp;
#endif

float calculate_altitude(const float pressure, const float seaLvhPa = 1013.25f)
{
    return 44330.f * (1.0f - pow((pressure / 100.f) / seaLvhPa, 0.1903f));
}

void setup()
{
    M5.begin();
    Serial.begin(115200);
    M5.Display.setFont(&fonts::lgfxJapanMinchoP_20);
    M5.Display.setTextSize(1);
    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, 400000U);

#if defined(USING_BPS)
    if (!bmp.begin(&Wire, BMP280_I2C_ADDR, pin_num_sda, pin_num_scl, 400000U)) {
        Serial.println("BMP280が見つかりません");
        M5.Display.clear(TFT_RED);
        while (1) delay(1);
    }
    /* データシート記載のデフォルト設定 */
    bmp.setSampling(BMP280::MODE_NORMAL,     /* 動作モード */
                    BMP280::SAMPLING_X2,     /* 温度のオーバーサンプリング */
                    BMP280::SAMPLING_X16,    /* 圧力のオーバーサンプリング */
                    BMP280::FILTER_X16,      /* フィルタリング */
                    BMP280::STANDBY_MS_500); /* スタンバイ時間 */
#elif defined(USING_BPS_V11)
    if (!qmp.begin(&Wire, QMP6988_SLAVE_ADDRESS_L, pin_num_sda, pin_num_scl, 400000U)) {
        Serial.println("QMP6988が見つかりません");
        M5.Display.clear(TFT_RED);
        while (1) delay(1);
    }
#endif
}

void loop()
{
    M5.update();

#if defined(USING_BPS)
    if (bmp.update()) {
        M5.Display.setCursor(0, 0);
        M5.Display.clear(TFT_BLACK);
        M5.Display.println("-----BMP280-----");
        M5.Display.print(F("温度: "));
        M5.Display.print(bmp.cTemp);
        M5.Display.println(" 度 C");
        M5.Display.print(F("気圧: "));
        M5.Display.print(bmp.pressure);
        M5.Display.println(" Pa");
        M5.Display.print(F("推定高度: "));
        M5.Display.print(bmp.altitude);
        M5.Display.println(" m");
        M5.Display.println("-------------\r\n");
    }
#elif defined(USING_BPS_V11)
    if (qmp.update()) {
        M5.Display.setCursor(0, 0);
        M5.Display.clear(TFT_BLACK);
        M5.Display.println("-----QMP6988-----");
        M5.Display.print(F("温度: "));
        M5.Display.print(qmp.cTemp);
        M5.Display.println(" *C");
        M5.Display.print(F("気圧: "));
        M5.Display.print(qmp.pressure);
        M5.Display.println(" Pa");
        M5.Display.print(F("推定高度: "));
        M5.Display.print(qmp.altitude);
        M5.Display.println(" m");
        M5.Display.println("-------------\r\n");
    }
#endif
    delay(1000);
}

3. コンパイルとアップロード

    1. ダウンロードモード: 各デバイスはプログラム書き込み前にダウンロードモードに入る必要があり、主制御デバイスによりこの手順は異なる場合があります。詳細は Arduino IDE 入門チュートリアル ページ下部のデバイスプログラム書き込みチュートリアル一覧を参照し、具体的な操作方法をご確認ください。
  • CoreS3 の場合、リセットボタンを約2秒間長押しして内部の緑色LEDが点灯したらボタンを離します。これによりデバイスはダウンロードモードに入り、書き込み待機状態となります。

    1. デバイスポートを選択し、Arduino IDE 左上のコンパイル&アップロードボタンをクリックして、プログラムがコンパイルされ、デバイスに書き込まれるのを待ちます。

4. 気圧値の読み取り

On This Page