概要
加速度、姿勢などの14種類のセンサー値について100ms/1秒/1分の異なる間隔でロギングするCG-FusionLogger用のアプリケーション例です。 ログデータをグラフ化して分析するなどの応用が可能です。(有効になるセンサーは各間隔により異なります)
時刻設定モードを搭載しており、PCより現在時刻の設定ができます。 センサーデータをPC/OLEDディスプレイ上に表示するモニターモードも搭載しており、 簡易的な測定データの確認も可能となっています。
Arduino IDEソースコード
応用例のプログラム書き込み済みで出荷しますので、そのまま使う場合はコンパイル、書き込みを行う必要はございません。
プログラムを再度書き込みしたい場合やカスタマイズして使用したい場合は以下よりダウンロードして、 お使いのArduino IDEでCG-FusionLoggerボードにプログラムを書き込んでください。 自由に改変してお使いいただけますが、お客様の責任でご使用をお願い致します。
Version | 日付 | MightyCore | 変更履歴 |
---|---|---|---|
1.0.0 | 2019/4/6 | 2.0.1 | 初版 |
サードパーティライブラリ
以下のサードパーティArduinoライブラリを使用しています。 ArduinoIDEの”ツール” > “ライブラリを管理”で開いたダイアログから、目的のライブラリを検索し、 ”インストール”を選択してインストールして下さい。
以下のサードパーティArduinoライブラリを使用しています。 ArduinoIDEの”ツール” > “ライブラリを管理”で開いたダイアログから、目的のライブラリを検索し、 ”インストール”を選択してインストールして下さい。ライブラリのインストール方法についての解説も用意しています。
ライブラリ | Version | 内容 |
---|---|---|
Adafruit GFX Library | 1.4.3 | OLEDディスプレイ制御に使用します。OLEDディスプレイを使用しない場合もコンパイルに必要です。 |
Adafruit SSD1306 | 1.2.9 | OLEDディスプレイ制御に使用します。OLEDディスプレイを使用しない場合もコンパイルに必要です。 |
SdFat | 1.1.0 | SDカードの読み書きに使用します。標準のSDライブラリと違って長いファイル名が扱えるため、 こちらを使用しています。 |
起動
製品の仕様、使用方法はCG-FusionLoggerサポートページをご参照ください

SW3の設定によりどのモードに移行するか決定します。 起動中にSW2を押したままにしておくことで白色LEDが1回点滅し、CCS811空気品質センサーを無効化できます。 CCS811は消費電流が多いので、省電力化したい場合は無効化して下さい。
SW3-1 | SW3-2 | SW3-3 | モード |
---|---|---|---|
ON or OFF | ON or OFF | OFF | ログモード |
OFF | OFF | ON | モニターモード |
OFF | ON | ON | 時刻設定モード |
予期せぬエラーが起きた場合はLED3(赤)が点灯して停止します。
ログモード
ログモードに移行するとまずはスタンバイ状態となります。 SW2を押すことでmicroSDへのロギングを開始し、再度SW2を押すと停止します。 Mode0-3の4種類のログモードがあり、ロギング開始時のSW3-1/3-2の状態でどれを使用するか決まります。 Mode0-2は一定時間置きにセンサー値を記録します。Mode3はイベント検出型のセンサー向けとなっており、 センサーが特定の状態を検出した際に時刻を記録します。
SW3-1 | SW3-2 | ログモード | LED |
---|---|---|---|
– | – | スタンバイ | LED2(黄)点灯 |
OFF | OFF | Mode0 (100ms間隔) | LED1(緑)点灯 |
OFF | ON | Mode1 (1秒間隔) | LED1(緑)点灯 |
ON | OFF | Mode2 (1分間隔) | LED消灯(省電力化のため) |
ON | ON | Mode3 (イベント型) | LED1(緑)点灯 |
温湿度、気圧、空気品質はまとめて1つのファイルに記録されます。それ以外は各センサーごとに別のファイルに 記録されます。ファイル名は「開始日時 + 各センサーPrefix.csv」となります。 各モードで有効になるセンサーおよびPrefixは以下の通りです。
– : 無効
x : デフォルトで有効。カスタマイズで無効に変更可能
v : デフォルトで無効。カスタマイズで有効に変更可能
センサー | ファイルPrefix | 備考 | Mode0 | Mode1 | Mode2 | Mode3 |
---|---|---|---|---|---|---|
Temperature, Humidity, Pressure | TPHG | 温湿度、気圧 | – | x | x | – |
AirCondition | TPHG | 空気品質TVOC | – | x | x | – |
Accelerometer | Acc | 加速度(重力含む) | v | v | – | – |
LinearAcceleration | LAcc | 加速度(重力含まず) | v | v | – | – |
Gravity | Grav | 重力 | v | v | – | – |
Gyroscope | Gyro | 角速度(ジャイロ) | x | x | – | – |
MagneticField | Mag | 磁場 | x | x | – | – |
RotationVector | RotV | 姿勢(加速度+ジャイロ+磁場を使用) | x | x | – | – |
GeomagneticRotationVector | GeoM | 姿勢(加速度+磁場を使用) | v | v | – | – |
ARVRStabilizedRotationVector | VRRV | 安定化計算付姿勢(加速度+ジャイロ+磁場を使用) | v | v | – | – |
GameRotationVector | Game | 姿勢(加速度+ジャイロを使用) | x | x | – | – |
ARVRStabilizedGameRotationVector | VRGa | 安定化計算付姿勢(加速度+ジャイロを使用) | v | v | – | – |
StabilityClassifier | Stab | 動きの大きさを分類 | – | x | – | – |
PersonalActivityClassifier | PAct | 持ち主の状態予測 | – | x | – | – |
StepCounter | Step | 歩数計 | – | x | – | – |
TapDetector | Tap | タップ検出 | – | – | – | x |
SignificantMotion | SigM | 急な動き検出 | – | – | – | x |
モニターモード
モニターモードはセンサーの値をシリアル通信もしくはOLEDディスプレイ(オプション)上に1秒ごとに表示する動作モードです。 ログモードと違い、microSDを経由せずにセンサーの値が分かるので、簡単な確認などの用途に向いています。 シリアル通信を使用する場合はPCと接続した上で、シリアルモニターソフト(ArduinoIDEのシリアルモニタ等)を起動し、 通信スピードを57600bpsに設定して下さい。 お使いのPC環境によってはFT231Xシリアル通信IC向けのドライバーをインストールする必要があります。 対応OLEDについてはCG-FusionLoggerサポートページをご参照ください。
モニターモードに移行すると、センサー非選択状態となり、現在時刻が出力されます。 SW2を1回押すごとに、センサーが1つずつ切り替わり(温湿度、気圧、空気品質はまとめて1つ)、選択中のセンサーの値が シリアルおよびOLEDへ1秒おきに表示されます。

時刻設定モード
時刻設定モードではPCからシリアル通信を使用して現在日時を設定する動作モードです。 CR2032電池基板に装着していれば、電源を落とした状態でも時刻を保持します。 PCと接続した上で、シリアルモニターソフト(ArduinoIDEのシリアルモニタ等)を起動し、通信スピードを57600bpsに設定して下さい。 お使いのPC環境によってはFT231Xシリアル通信IC向けのドライバーをインストールする必要があります。
時刻設定モードに移行すると、シリアルモニターに「Enter time by format YYYYMMDDhhmmss」と表示されまので、 現在時刻をこのフォーマットで入力後、送信して下さい。(例 2019年4月15日19時25分00秒の場合 : 20190415192500) 改行コードは送らない設定として下さい。

カスタマイズ
動作ログをシリアル通信及びmicroSD上の「op.log」ファイルに記録する機能を搭載しています。 FusionLogger.inoファイル15-16行目をコメントアウトすることでシリアル/microSDへの出力を無効にできます。
#define OPLOG_SERIAL // Define if print operation log on Serail
#define OPLOG_SD // Define if write operation log on SD card
FusionLogger.inoファイル23行目でログモードのMode0の記録間隔を変更できます。us単位で指定してください。 Mode0で有効にしているセンサーが多いと記録が間に合わず取りこぼしが発生します。microSDの性能によっても変化しますが、 センサー1つの場合20ms以上、5つの場合100ms以上、10つの場合200ms以上を推奨します。
#define LOG_MODE0_INTERVAL 100000
FusionLogger.inoファイル52-71行目で有効にするセンサーを変更できます。
// BME280, CCS811 sensor enable/disable control
bool enableBME280 = true;
bool enableCCS811 = true;
// BNO080 sensor enable/disable control
bool enable[BNO080::rtCount] = {
false, //Accelerometer
true, //LinearAcceleration
false, //Gravity
true, //Gyroscope
true, //MagneticField
true, //RotationVector
false, //GeomagneticRotationVector
false, //ARVRStabilizedRotationVector
true, //GameRotationVector
false, //ARVRStabilizedGameRotationVector
true, //StabilityClassifier
true, //PersonalActivityClassifier
true, //StepCounter
true, //TapDetector
true, //SignificantMotion
};