GR-PEACH 特設:ロームセンサー評価キットを動かす!

概要

3軸加速度、気圧、地磁気、近接照度、カラー、磁気、温度、紫外線の8種類のセンサーがお試しできるロームセンサー評価キットを動かします。ここではWebコンパイラを使った例を紹介します。


準備

GR-PEACH、USBケーブル(マイクロBタイプ)の他、主役となるロームセンサー評価キットを準備します。


ライブラリの適用

ダウンロード

以下のファイルはロームセンサー評価キットのページから入手したファイルをzip化したものです。3軸加速度、気圧、近接照度、カラー、温度、紫外線センサー用のライブラリが含まれています。

※なぜか地磁気と磁気センサーのサンプルはダウンロードできませんでしたので(2016年8月現在)、別途ロームさんのページから入手してください。

以下のリンクをクリックするとダウンロードが始まります。

Webコンパイラへのアップロード

WebコンパイラでGR-PEACHのプロジェクトを作成し、プロジェクトルートにzipのままアップロードします。Webコンパイラを初めて使う方は「Webコンパイラでスケッチ」を参照してください。

GR-PEACHロームのファイルアップロード

以下のようにプロジェクトにrohm-libフォルダができ、ライブラリファイルが追加されます。これでWebコンパイラでのライブラリ適用は完了です。


ハードウェアの接続

ロームセンサー評価キットに以下の5種類のセンサーを接続し、J15のジャンパー設定を3Vにします。つまり3V系で駆動できるものをセンサーを接続しています。 ※紫外線センサーも3Vで駆動できますが、温度センサーと同時に使用した場合、温度センサーの値が異常になってしまったため、今回は乗せていません。(analogReadライブラリの問題かもしれません)

GR-PEACHにキットを接続して、PCに接続します。これでハードウェアの接続は完了です。


サンプル

5つのセンサーから読んだ値をTera Termなどのシリアルモニターに出力するサンプルです。Webコンパイラのgr_sketch.cppにコピーしてビルドし、GR-PEACHに書き込んでください。



#include <Arduino.h>
#include <Wire.h>

#include <KX022.h>
#include <BM1383GLV.h>
#include <RPR-0521RS.h>
#include <BH1745NUC.h>
#include <BD1020.h>
#include <ML8511A.h>
 
KX022 kx022(KX022_DEVICE_ADDRESS_1E); //Accelerometer
BM1383GLV bm1383; //Pressure Sensor
RPR0521RS rpr0521rs; //PS/ALS Sensor
BH1745NUC bh1745nuc(BH1745NUC_DEVICE_ADDRESS_39); //Color Sensor
BD1020 bd1020; //Temperature Sensor
ML8511A ml8511a; //UV Sensor
 
int tempout_pin = 14; // A0
int uvout_pin = 16; // A2
 
void setup() {
 
  Serial.begin(9600);
   
  Wire.begin();
  kx022.init();
  bm1383.init();
  rpr0521rs.init();
  bh1745nuc.init();
  bd1020.init(tempout_pin);
  ml8511a.init(uvout_pin);
}
 
void loop() {
  byte rc;
  float acc[3], press, als_val, temp, uv;
  unsigned short ps_val, rgbc[4];
  byte near_far;
 
  //Accelerometer
  rc = kx022.get_val(acc);
  if (rc == 0) {
    Serial.print(" x= ");
    Serial.print(acc[0]);
    Serial.print(" y= ");
    Serial.print(acc[1]);
    Serial.print(" z= ");
    Serial.print(acc[2]);
  }
 
  //Pressure Sensor
  rc = bm1383.get_val(&press);
  if (rc == 0) {
    Serial.print(" ");
    Serial.print(press);
    Serial.print("[hPa]");
  }
   
  //PS/ALS Sensor
  rc = rpr0521rs.get_psalsval(&ps_val, &als_val);
  if (rc == 0) {
    Serial.print(" ");
    Serial.print(ps_val);
    Serial.print("[cnt]");
    near_far = rpr0521rs.check_near_far(ps_val);
    Serial.print("->");
    if (near_far == RPR0521RS_NEAR_VAL) {
      Serial.print(F(" Near"));
    } else {
      Serial.print(F(" Far"));
    }
     
    if (als_val != RPR0521RS_ERROR) {
      Serial.print(" ");
      Serial.print(als_val);
      Serial.print(F("[lx]"));
    }
  }
   
  //Color Sensor
  rc = bh1745nuc.get_val(rgbc);
  if (rc == 0) {
    Serial.print(" R:");
    Serial.print(rgbc[0]);
    Serial.print(" G:");
    Serial.print(rgbc[1]);
    Serial.print(" G:");
    Serial.print(rgbc[2]);
    Serial.print(" C:");
    Serial.print(rgbc[3]);
  }
   
  //Temperature Sensor
  bd1020.get_val(&temp);
  Serial.print(" ");
  Serial.print(temp);
  Serial.print("[C]");
   
  Serial.println();
 
  delay(100);
 
}



正常に動作すると以下のようにシリアルモニターにセンサー値が表示されます。