CG-FusionLogger (加速度/姿勢/回転/地磁気/気温/湿度/気圧/空気品質 マルチセンサーロガー)

ArduinoIDEで動作を自由にプログラミング可能な、19種類以上のセンサーに対応したマルチセンサーロガーです。加速度/姿勢/回転/地磁気/気温/湿度/気圧/空気品質などのデータをmicroSDに記録できます。USB-Aポートに直挿し可能な設計となっており、車などモバイルで運用可能です。

主な特徴

19種類以上の測定に対応したセンサーを搭載

19種類以上の測定に対応し、microSDスロットを利用したロギング、データ解析に最適です。 モーションセンサーにはBosch社/HillcreastLabs社共同開発のBNO080を採用しました。 センサー内部に計算用MCUを搭載しており、3軸加速度、磁場、ジャイロスコープ(角速度)を動的キャリブレーションしながら 測定できる上、データを処理(Fusion)することで、姿勢を示すクォータニオン、行動予測、歩数カウント、タップ検出、衝撃検出など 複雑なデータを出力可能です。環境センサーとして温度、湿度、気圧の測定が可能なBosch社のBME280、および 空気品質の測定が可能なams社のCCS811を搭載しました。CCS811は独自のアルゴリズムにより、空気中の等価TVOC値[ppb]を出力できます。

ArduinoIDEで開発可能

本基板はご自身で動作をプログラミングできるため、ユーザー様の目的に合ったフレキシブルな制御、測定やロギングが可能です。 コントローラーにはATmega1284Pを採用しました。Arduinoで採用されているATmega328Pと同一ファミリーで、 世界的に人気の高いArduinoIDEで開発することができます。既に様々なライブラリが用意されており、 開発コストを低減できます。また、ATmega1284PはATmega328Pと比べてプログラムROMが4倍、SRAMメモリーが8倍となっており、 複雑なアプリケーションにも対応できます。

測定用プログラム書き込み済みで出荷

実用可能な測定プログラムを書き込んで出荷致しますので、プログラムを作成しなくても測定が開始できます。 100ミリ秒、1秒、1分の3種類の間隔でセンサー値をマイクロSDへ記録できるほか、 シリアル通信や外部OLEDディスプレイ(オプション品) でリアルタイム表示、時刻の設定が可能となっています。 ソースコードは応用例のページで公開しており、自由に改変してご利用いただけます。 (お客様の責任でご利用いただくことが条件となります。プログラムは将来変更される可能性があります。)

コンパクト、モバイルに最適

幅30mm x 長さ77mmのコンパクトサイズで、USB-Aポートに直挿し可能な設計となっており、モバイルに最適です。 PCのUSBポート、市販のモバイルバッテリーや、車のUSBポートなどに挿すだけで計測できます。 また、PCと接続時はプログラム書き込みやシリアル通信によるデータ取得が可能です。

低消費電力

不要なICの消費電力をカットできる機能、測定していないときはメインマイコンをSleep状態にできる機能など、 低消費電力に対応した回路設計となっております。SleepMode時は消費電流を最小1mA以下に抑えることができます。 バッテリーを利用した長時間測定が可能です。(測定の頻度や有効にするセンサーによって消費電流は変動します)

RTC(リアルタイムクロック)搭載

Maxim社製RTC(リアルタイムクロック)DS3231MZ+を搭載しているので、電源を落とした状態でも時刻を保持できます。 ログを残す際に時刻データも記録できるので、後からの解析を簡単にできます。 RTCを利用するには別途CR2032コイン電池が必要となります。 電池ホルダーにはMPD社製SnapDragonを採用しました。取り外しが容易で、激しい動きでも電池の落下を防ぎます。

LED、スイッチ搭載

ユーザー入力スイッチを4個、LED4個を搭載しています。ステータスを表示したり、スイッチで直接本基板を操作することができます。 また、別売りのOLEDディスプレイ を接続すると文字を表示させることもできます。

Revisionの違いについて

Rev1.x間の違いは製造上の都合による配線パターンの最適化のみとなります。 基板寸法、部品位置および回路に変更はなく、ソフトウェアも完全互換で動作します。

購入

完成品

部品一式を基板に実装した完成品になります。オプションのOLEDディスプレイ、リアルタイムクロック用コイン電池は付属しません。

利用例

応用アプリケーション例

  • 車両、航空機、船舶、ロボット、動体などの加速度、回転、姿勢のモニタリング、ロギング
  • モバイルバッテリーを利用したポータブル気温、湿度、気圧のモニタリング、ロギング
  • 室内空間の空気品質モニタリング、ロギング
  • 歩数計
  • 持ち歩いている人の行動予測
  • 衝撃、揺れ、動き検出
  • BNO080モーションセンサー、BME280温湿度気圧センサー、CCS811空気品質センサーの試用、開発
  • 本基板を使ったマルチセンサーロガーの例 を紹介しています。

これらの応用例を実現するプログラム、機器は付属しません。 ご自身で準備していただく必要があります。

ブロックダイアグラム

仕様

項目仕様
基板寸法(USB端子、microSD含まず)幅30mm x 60mm
基板寸法(USB端子、microSD含む)幅30mm x 77mm
USB端子TypeAオス
USBシリアルインターフェースFT231X
Atmega1284P電源電圧3.3V
Atmega1284Pクロック8MHz
I2C拡張端子(J4)出力電圧、電流3.3V, Max 100mA
microSDSPI接続。SD/SDHCに対応、SDXCには非対応
センサーデータ記録レート最大50Hz (有効センサー、microSDの性能によって変動)

使い方

出荷時に書き込み済みのプログラムをそのまま使用される場合は、応用例のページの仕様をご参照下さい。

開発環境、プログラム書き込み方法については以下をご参照下さい。

以下の説明では、ArduinoIDEのピン番号の表記はボード設定Pinout:Standardに準拠しております。

USB

本基板用の電源はUSB端子より供給されます。電源が入ると自動的にプログラムが開始されます。また、USB端子を通じてPCとシリアル通信を行うことが可能です。 USBシリアルインターフェースにはFTDI社製FT231Xを使用しております。お使いのOSに応じてドライバーソフトをインストールしてください。

スイッチ
スイッチ機能ピン(MCU)ピン(ArduinoIDE)補足
SW1(白色)MCUリセット
SW2(青色)ユーザー入力PB22押すとLOW。内部プルアップが必要。
SW3-1ユーザー入力PC218ONでLOW。内部プルアップが必要。
SW3-2ユーザー入力PC319ONでLOW。内部プルアップが必要。
SW3-3ユーザー入力PC420ONでLOW。内部プルアップが必要。
SW3-4FT231X ON/OFFプログラム書き込み、PCと通信時はON。省電力で稼働させる際はOFF。
LED
LED機能ピン(MCU)ピン(ArduinoIDE)補足
LED1(緑色)ユーザー出力PB00HIGHで点灯
LED2(黄色)ユーザー出力PC521HIGHで点灯
LED3(赤色)ユーザー出力PC622HIGHで点灯
LED4(白色)ユーザー出力PC723HIGHで点灯
LED20(橙色)USB Serial通信受信中点灯
LED21(橙色)USB Serial通信送信中点灯
RTC

RTCはDS3231MZ+を搭載しています。I2C経由で時刻の設定、取得ができるほか、アラームを設定すると指定した時間に INT端子からLOWが入力されます。フラグをクリアすることでHIGH入力に戻ります。電池ホルダーにCR2032コイン電池をセットすると、 電源OFF時も時刻を保持し続けます。
RTCの32kHz端子より出力しているクロックはBNO080の動作に必要ですので、OFFにしないようにしてください。 起動時はデフォルトでONになります。
詳細はDS3231MZ+データシートをご参照下さい。

DS3231MZ+機能ピン(MCU)ピン(ArduinoIDE)補足
INT割込み入力PD311RTCのアラームの条件を満たすとLOW入力。
I2Cデータ送受信PC0, PC1I2Cアドレス0x68。
BNO080

BNO080との通信にはHillcreastLabs社のSH2プロトコルを使用する必要があります。詳細は BNO080データシート 及び BNO080 SH2プロトコルリファレンスマニュアル をご参照下さい。

BNO080機能ピン(MCU)ピン(ArduinoIDE)補足
RSTリセットPB33LOW出力でリセット
BOOTブートモードPB11LOW出力でリセットするとブートモードで起動。通常はHIGH出力。
INT割込み入力PD210BNO080からデータ送信要求時にLOW入力。
I2Cデータ送受信PC0, PC1I2Cアドレス0x4B。

各軸の方向は以下の図の通りです。

BME280

詳細はBME280データシートをご参照下さい。

BME280機能ピン(MCU)ピン(ArduinoIDE)補足
I2Cデータ送受信PC0, PC1I2Cアドレス0x76。
CCS811

空気品質センサーCCS811を使用する際はWAKEをLOWにして動作させてください。動作中は常に15mA程度の電流を消費します。 起動状態から省電力のため停止する場合は、WAKEをHIGHにした上でリセットしてください。
初めて起動する際は、測定値が安定するまで合計48時間のエージング動作が必要です。また、エージング完了後も、 毎回の起動後20分程度が安定までに必要です。
高温状態で空気品質を測定するため、センサー動作時は若干発熱します。BME280への影響が少なくなるように設計しておりますが、 2°C程度温度が上昇する場合がございます。
詳細はCCS811データシートをご参照下さい。

CCS811機能ピン(MCU)ピン(ArduinoIDE)補足
RSTリセットPD513LOW出力でリセット
WAKE割込み入力PD412LOW出力でデバイス動作
I2Cデータ送受信PC0, PC1I2Cアドレス0x5A。
microSD

マイクロSDカードとはSPIで接続されております。カード挿入はCardDetect入力で判定できます。 サポートしているデバイスはSDもしくはSDHCでFATフォーマットされたものに限ります。

microSD機能ピン(MCU)ピン(ArduinoIDE)補足
CSSPIセレクト信号PB44
CardDetectカード挿入検知PD614カード挿入時LOW入力。内部プルアップが必要。
SPIデータ送受信PB5, PB6, PB7
ICSP

ICSP端子を搭載しており、ライターを使用してプログラムやブートローダーの書き込みが可能です。 (ブートローダーを書き込んで出荷しますので、ArduinoIDEからのプログラム書き込みについては、本端子を使う必要はありません。) ICSP端子を使用する際は、必ずUSB-A端子が未接続状態で行ってください。電源は3.3Vとなります。 5Vではありませんのでご注意ください。端子配列は以下の通りです。

I2C拡張端子 / OLEDディスプレイ

I2C接続のOLEディスプレイ(オプション品) を装着できるJ4端子を用意しております。測定結果や状態を表示できます。 端子はGND, 3V3, SCL, SDAの順となっております。 端子配列の異なる類似のディスプレイがありますので、接続しないように注意して下さい。 また、I2Cで通信する汎用ポートとしてご利用いただけます。3V3端子から出力できる電流は最大100mAです。

消費電力

各機能の消費電力の目安(実測値)は以下の通りです。電流値は5V USBの電流値となります。

機能状態消費電流(平均)
ATmega1284P動作中7mA
LED点灯時2-3mA
BNO080動作中25mA
CCS811動作中19mA
FT231X動作中3-4mA
OLEDディスプレイ動作中3-4mA

センサーデータロギング中の消費電力の目安(実測値)は以下の通りです。電流値は5V USBの電流値となります。

ATmega1284PLEDBNO080CCS811FT231X消費電流(平均)
ロギング10Hz1つ点灯センサー5種類スタンバイOFF27mA
ロギング毎秒1つ点灯センサー8種類スタンバイOFF23mA
ロギング毎秒1つ点灯センサー8種類動作OFF41mA
ロギング毎分消灯スタンバイスタンバイOFF0.8mA
ロギング毎分消灯スタンバイ動作OFF20mA

サンプルプログラム

プログラム環境MightyCore内容
InterfaceArduino2.0.1ユーザースイッチSW2, SW3、LEDを制御するサンプルプログラムです。
RTCArduino2.0.1RTC(リアルタイムクロック)DS3231MZ+の時刻設定、時刻取得及びアラーム設定のサンプルプログラムです。
BNO080SampleArduino2.0.1モーションセンサーBNO080による3軸加速度測定サンプルプログラムです。
BME280SampleArduino2.0.1BME280による温湿度気圧測定サンプルプログラムです。
CCS811SampleArduino2.0.1CCS811による空気品質測定サンプルプログラムです。
FusionLoggerArduino2.0.1マルチセンサーロガーの応用例です。本プログラム書き込み済みで出荷します。

サードパーティ製ライブラリ

以下のサードパーティー製ライブラリに含まれるサンプルプログラムも動作します。 いずれのライブラリもArduino IDEの「ツール->ライブラリを管理」よりインストールし、「ファイル->スケッチ例」より ご利用になれます。

ライブラリ補足
SparkFun BNO080 Cortex Based IMUモーションセンサーBNO080を制御するライブラリです。
Adafruit BME280 Library温湿度気圧センサーBME280を制御するライブラリです。begin関数のI2Cアドレスを0x76に変更(bme.begin(0x76))してご利用下さい。

回路図、関連資料

開発依頼

本製品への機能追加などのカスタマイズや、本製品を使ったシステムの開発依頼、その他ハードウェア、ソフトウェアの開発については、有償にて承っております。ハードウェア、ソフトウェア受託開発をご参照下さい。

注意事項

関連ページ

RPZ-CO2-Sensor (Raspberry Pi用 二酸化炭素センサー/リレー 拡張基板)

Raspberry Pi(ラズパイ)用CO2センサーとリレー拡張基板です。CO2濃度を測定することで換気の目安としたり、オフィス環境の改善やスマート農業のCO2モニタリングに利用できます。CO2濃度が一定以上になった際、リレーで換気ファンなどの外部機器をON/OFFできます。7色表示可能なRGB LEDを搭載し、CO2濃度に合わせて色を変えることも可能です。

RPZ-PIRS (Raspberry Pi用 人感/明るさセンサー/赤外線 拡張基板)

Raspberry Pi(ラズパイ)に人感、明るさセンサー、赤外線送受信機能を搭載できる拡張基板です。人感センサーで人や動物を検知してカメラで撮影したり、赤外線で照明をONするような使い方が可能です。周囲の明るさをモニターできる他、外付温湿度/気圧センサー(別売り)を接続することで、温度、湿度、気圧の測定機能を追加できます。7色表示可能なRGB LEDにステータスを表示したり、スイッチを押すことで特定の動作をさせることができます。

ラズパイと赤外線でエアコンの自動ON、消し忘れ機能を実現

普段、エアコンを消し忘れてしまい夜間つけっぱなしにしてしまったり、冬場に朝エアコンを入れても暖かくなるのに時間がかかったことは無いでしょうか?本記事では、Raspberry Piと拡張基板を利用して、毎晩のエアコン消し忘れ機能、および朝に温度が低い場合に自動で暖房を入れる機能を実現します。