obniz Parts Library

BMP280

GitHub
BMP280
Usable Devices :
obniz_board

気圧センサー - BMP280

温度、気圧センサーです。
とても低い消費電力で、かつ高い精度で計測できます。

wired(obniz, {[vio, vcore, gnd, csb, sdi, sck, sdo, address, i2c]} )

センサーをobniz Boardにつなぎます。
obniz Boardには内部プルアップがありますが、安定した通信のためには外部の抵抗を使ってSCKとSDIをvioなどにプルアップして下さい。

以下のような直接接続はおすすめできません
name type required default description
vio number(obniz Board io) no   connected obniz Board io. power supply for interface
vcore number(obniz Board io) no   connected obniz Board io. power supply for core
gnd number(obniz Board io) no   connected obniz Board io. power supply
csb number(obniz Board io) no   connected obniz Board io. I2C/SPI 選択.
sdi number(obniz Board io) no   connected obniz Board io. データ端子
sck number(obniz Board io) no   connected obniz Board io. クロック
sdo number(obniz Board io) no   connected obniz Board io. データ通信かアドレス選択
i2c i2c object no   configured i2c object
address number no 0x76 0x76 or 0x77

このライブラリではI2Cで部品と通信します。

// Javascript Example
// Please pullup sdi and sck.
var bmp280 = obniz.wired("BMP280", {vio:0, vcore:1, gnd:2, csb:3, sdi: 4, sck: 5, sdo:6 });
await bmp280.applyCalibrationWait();
const val = await bmp280.getAllWait();
console.log(val);

vioとvcoreは直接繋げられます。
csbはhighに単純に繋げられ、sdoもgndに単純に繋げられます。
なので、そのように繋いだものをobniz Boardにつなぐときの最小構成は以下になります。

// Javascript Example

// vcore connected to vio
// csb connected to vio
// sdo connected to gnd

var bmp280 = obniz.wired("BMP280", {vio:0, gnd:1, sdi: 2, sck: 3 });
await bmp280.applyCalibrationWait();
const val = await bmp280.getAllWait();
console.log(val);

またはI2Cオブジェクトで設定することで他のI2C接続の部品とバスを共有できます。

// Javascript Example

var i2c = obniz.getFreeI2C();
i2c.start({mode:"master", sda:2, scl:3, clock:100000}); 

var bmp280 = obniz.wired("BMP280", {vio:0, gnd:1, i2c: i2c });

もしチップをsdoをプルアップすることでアドレスを 0x77にしている場合は

// Javascript Example

var bmp280 = obniz.wired("BMP280", {vio:0, gnd:1, sdi: 2, sck: 3, address: 0x77});

[await] applyCalibrationWait()

チップに保存されている工場で設定されているキャリブレーションデータを取り出します。
これをしないで使うことも出来ますが、これを一度呼び出すことで精度がかなり上がります。

// Javascript Example
// Please pullup sdi and sck.
var bmp280 = obniz.wired("BMP280", {vio:0, vcore:1, gnd:2, csb:3, sdi: 4, sck: 5, sdo:6 });
await bmp280.applyCalibrationWait();

[await] setIIRStrengthWait()

内蔵IIRフィルタの強度を変更できます。 0 to 4.

0 で使わない設定となります(デフォルト)

IIRフィルタは計測結果を安定させてより高い精度にします。
ただし、そのためには結果が出るのをしばらく待つ必要があります。

// Javascript Example
// Please pullup sdi and sck.
var bmp280 = obniz.wired("BMP280", {vio:0, vcore:1, gnd:2, csb:3, sdi: 4, sck: 5, sdo:6 });
await bmp280.applyCalibrationWait();
await bmp280.setIIRStrengthWait(1); // start using minimum IIR 

[await] getAllWait()

すべての値を取得します。

  • temperature: セルシウス温度
  • pressure: hPa
// Javascript Example
// Please pullup sdi and sck.
var bmp280 = obniz.wired("BMP280", {vio:0, vcore:1, gnd:2, csb:3, sdi: 4, sck: 5, sdo:6 });
await bmp280.applyCalibrationWait();
const obj = await bmp280.getAllWait();
console.log('temp: ' + obj.temperature + ' degree');
console.log('humidity: ' + obj.humidity + ' %');
console.log('pressure: ' + obj.pressure + ' hPa');

[await] getPressureWait()

気圧を取得します。

// Javascript Example
// Please pullup sdi and sck.
var bmp280 = obniz.wired("BMP280", {vio:0, vcore:1, gnd:2, csb:3, sdi: 4, sck: 5, sdo:6 });
await bmp280.applyCalibrationWait();
console.log('pressure: ' + await bmp280.getPressureWait() + ' hPa');

[await] getTempWait()

気温を取得します。

// Javascript Example
// Please pullup sdi and sck.
var bmp280 = obniz.wired("BMP280", {vio:0, vcore:1, gnd:2, csb:3, sdi: 4, sck: 5, sdo:6 });
await bmp280.applyCalibrationWait();
console.log('temp: ' + await bmp280.getTempWait() + ' degree');

calcAltitude(pressure, seaPressure)

気圧から高度を計算するUtility関数です。返り値はメートルでとなります。

// Javascript Example
// Please pullup sdi and sck.
var bmp280 = obniz.wired("BMP280", {vio:0, vcore:1, gnd:2, csb:3, sdi: 4, sck: 5, sdo:6 });
await bmp280.applyCalibrationWait();
const obj = await bmp280.getAllWait();
const airPressure = obj.pressure;
const hight_in_m = bmp280.calcAltitude(airPressure);
console.log('altitude: ' + hight_in_m + ' m');

Supported from: obniz.js 3.5.0