気圧・温湿度計
概要
- 気圧・温湿度計の単体テストを行うためのページ
 - 気圧から高度が計算できる
 
機器詳細
気圧・温湿度センサ BME280
- 秋月電子: https://akizukidenshi.com/catalog/g/gK-09421/ (opens in a new tab)
 - スイッチサイエンス: https://www.switch-science.com/catalog/2236/ (opens in a new tab)
 
回路図(秋月電子)

| 素子 Pin | Arduino Pin | 備考 | 
|---|---|---|
| VDD | 3V3 | 3.3V 電源 | 
| GND | GND | GND | 
| SDI | A4 (SDA) | I2C のシリアルデータ | 
| SCK | A5 (SCL) | I2C のシリアルクロック | 
| SDO | GND | I2C のアドレス選択ピン。ここでは GND | 
| CSB | - | 通信設定。 VDD にするが,ここでは, J3 でジャンパさせているので未接続。 | 
- 通信は I2C
 - 電圧は 3.3V
- I2C の信号線は,レベル変換を挟むとなお良い
 
 - J1, J2, J3 をはんだでショートさせ, I2C として使う
 
回路図(スイッチサイエンス)

| 素子 Pin | Arduino Pin | 備考 | 
|---|---|---|
| Vcore | 3V3 | 3.3V 電源 | 
| Vio | 3V3 | I2C のプルアップ電圧 | 
| GND | GND | GND | 
| SDI | A4 (SDA) | I2C のシリアルデータ。 Vio でプルアップする | 
| SCK | A5 (SCL) | I2C のシリアルクロック。 Vio でプルアップする | 
| SDO | GND | I2C のアドレス選択ピン。ここでは GND | 
| CSB | 3V3 | 通信設定。 Vcore にする | 
- 通信は I2C
 - 電圧は 3.3V
- I2C の信号線は,レベル変換を挟むとなお良い
 
 - I2C のプルアップ抵抗値はこの図の値から多少ずれても問題ない
- I2C のバスラインに他のセンサが接続されており,そちらでプルアップされている場合は,プルアップ抵抗は不要
 
 
注意
- このサンプルでは,秋月電子もスイッチサイエンスでも, I2C のアドレスが同一である。複数のセンサを用いたいなど,アドレスを変えたい場合は, 
SDOピンをVDDoVcoreに変更するとよい。 
ソースコード
test_baro_thermo_hygrometer.ino
#include <CanSatSchool.h>
 
// 気圧・温湿度計を宣言
BaroThermoHygrometer bth;
 
void setup()
{
    // ロガーを初期化
    logger.enableComputer();
 
    // Wire (Arduino-I2C) を初期化
    // 気圧・温湿度計は I2C を使用するためこれが必要
    Wire.begin();
 
    // 気圧・温湿度計を初期化
    bth.init();
 
    delay(500);
}
 
void loop()
{
    // 気圧,温度,湿度を取得してシリアルモニタに表示
    logger.info(bth.read());
 
    // 気圧を取得して変数に代入したい場合
    // float pressure = bth.read().pressure;  // [hPa]
 
    // 温度を取得して変数に代入したい場合
    // float temperature = bth.read().temperature;  // [°C]
 
    // 湿度を取得して変数に代入したい場合
    // float humidity = bth.read().humidity;  // [%]
 
    // 1s 待つ
    delay(1000);
}