BlueNinjaを使って気温と気圧をモニタリングしてみました。
BlueNinjaには標準でBOSCHのBMP280という気圧&気温センサーが搭載されているので、簡単に気温と気圧をモニターすることができます。
BlueNinjaについてはこちら
BOSCHのBMP280についてはこちら
※TOSHIBA.TZ10xx_DFPは1.31.1を使用
コーディング
サンプルとして1秒ごとに気温と気圧をコンソールに表示します。
#include <stdio.h> #include <string.h> #include <stdbool.h> #include <stdint.h> #include "TZ01_system.h" #include "TZ01_console.h" #include "TZ01_airpressure.h" #include "utils.h" int main(void) { /* Initialize */ TZ01_system_init(); TZ01_console_init(); TZ01_airpressure_init(); TZ01_system_tick_start(USRTICK_NO_GPIO_INTERVAL, 1000); float temp, press; uint8_t msg[140]; for (;;) { if (TZ01_system_run() == RUNEVT_POWOFF) { /* Power off operation detected */ break; } /* 1秒ごとに温度気圧を取得する */ if (TZ01_system_tick_check_timeout(USRTICK_NO_GPIO_INTERVAL)) { TZ01_system_tick_start(USRTICK_NO_GPIO_INTERVAL, 1000); temp = TZ01_airpressure_temp_read(); press = TZ01_airpressure_press_read(); sprintf(msg, "TEMP=%f , PRESS=%f\r\n", temp, press); TZ01_console_puts(msg); } } TZ01_console_puts("Program terminated.\r\n"); return 0; }
ビルド
mkファイルで下記のコメントアウトを削除。
/* CDP_TZ01B_BSP.mk */ SOURCES+=src/boards/CDP-TZ01B/TZ01_airpressure.c SOURCES+=src/drivers/BMP280.c
/* TZ10xx_DFP.mk */ SOURCES+=$(SDK_DIR)TOSHIBA.TZ10xx_DFP/RTE_Driver/I2C_TZ10xx.c
実行結果
気温の単位はセルシウス度(℃)で、分解能は0.01℃だそうです。
気圧の単位はヘクトパスカル(hPa)で、分解能は0.0016hPaだそうです。
ちなみに1気圧=1013.25hPaです。
今回の結果から標高を計算すると約36.81mとなるようです。
<参考>
気圧から標高を計算
気圧はBlueNinjaモジュールを持って上げたり下げたりしてもリニアに反応するようです。
気温の方も、ズボンの中にぶち込んでみたらすぐに反応しました(^^)
とても簡単に気温と気圧を取得することができました。
今回は以上です。
あとがき
最近急に寒くなってきました。
…寒いのは苦手です。
ではでは…。