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モジュールを持って上げたり下げたりしてもリニアに反応するようです。
気温の方も、ズボンの中にぶち込んでみたらすぐに反応しました(^^)
とても簡単に気温と気圧を取得することができました。
今回は以上です。
あとがき
最近急に寒くなってきました。
…寒いのは苦手です。
ではでは…。





