はじめての電子工作超入門

第40回 Arduinoでセンサを使った開発が劇的に楽になる!8種のセンサを持つロームセンサ評価キットを試してみた(導入&地磁気センサ編)

DSC_0083

デバプラ編集部さんから送られてきた白い箱。

開けてみると今月の2月16日に発売が開始されたロームセンサ評価キットがっ!なにやら調べてみるとたくさんのセンサをびっくりするくらい手軽にArduinoで扱うことができるらしいとのこと。

ふむふむ、本当にそうであれば、いつも夜中にセンサの値がとれなくて回路を見直したり、適切な電圧の供給がちゃんとセンサにきてるかテスター片手に回路のあちらこちらをチェックしなくても済んでしまいますかね!?本当にそうであればArduinoで開発する上で、そんなに嬉しいことはありません…。

ということで、今回からは8種類の多様なセンサが手軽に使えるロームセンサ評価キットの使い方や、センサを使ってデバイスへの応用をしていきたいと思います!

今回の電子工作レシピ

完成までの時間目安:60分
必要なパーツ

※ロームセンサ評価キットは下記サイトから購入できます!
チップワンストップ
ザイコストア

開封の儀

さっそく箱を開けてみます!すると、各センサパーツとセンサシールドが入っていました。

 

写真1 センサシールド

写真1 センサシールド

センサシールド

Arduinoよりも少しだけ大きいセンサシールド。センサシールド自体はArduinoに装着して、センサシールドの上に使いたいセンサを載せて利用します。使い方は後で詳しく書くとして、まずボードが黒で統一されていてかっこいい。第28回で扱った省電力動作可能なラズライトの時もそうですが、電子部品の色にこだわりを持っている方がきっといるに違いない、と思うくらい良い感じです。センサとかのように精度を求める部品の場合、赤とかそういうインパクトのある色も良いのですが、やはりこういう黒だと、ずっしりしていて「しっかり値をとりますぜ!」という安心感がありますね。

 

写真2 8種類のセンサパーツ

写真2 8種類のセンサパーツ

8種類のセンサ

ケースの中に8種類のセンサが入っていて、それぞれアイコンとセンサ名称が書いてあるのでわかりやすいですね。評価キットに入っているセンサの種類は、

図1 ロームセンサ評価キットのセンサ一覧

図1 ロームセンサ評価キットのセンサ一覧

  1. 加速度センサモジュール KX022-1020
  2. 気圧センサモジュール BM1383GLV
  3. 地磁気センサモジュール BM1422GMV
  4. 近接照度センサモジュール RPR-0521RS
  5. カラーセンサモジュール BH1745NUC
  6. ホールセンサモジュール(磁気IC) BD7411G
  7. 温度センサモジュール BD1020HFV
  8. 紫外線センサモジュール ML8511A

の8種類となります。温度センサや加速度センサ、近接照度センサなどはこれまでの連載で扱いましたが、地磁気センサ、気圧センサ、カラーセンサ、ホールセンサ、紫外線センサなどはまだ扱っていない未知のセンサですね!カラーセンサ、ホールセンサ、地磁気センサなども入っているところが幅広いラインナップという感じですね。

入っている内容が分かったところで、さっそく動かしたいですよね!!必要なものとか、開発の流れを確認していきましょう。

 

センサ評価キットをArduinoで動かすまでの流れ

Arduinoでセンサ評価キットを動かすために必要な情報などを集めます。といっても、かなり手順は簡単です。個別に購入したセンサの場合だと、それぞれセンサの仕様に合わせて回路を組んで、それに応じてArduinoのスケッチプログラムを書く必要がありました(でもArduinoが出たときはそれでセンサが、電子回路がなんともまあ手軽にあつかえる!ということで驚きでしたけどね)。

図1 センサの個別実装とセンサキットの場合

図2 センサの個別実装とセンサキットの場合

そういったセンサを扱う上での問題点が解消されているのがこの評価キットの何よりもすごいところなのですが、さらにこの評価キットの優れている点が、公式サイトのドキュメントの充実です。

 

写真3 ロームセンサ評価キット

写真3 ロームセンサ評価キットの公式ウェブサイト

 

基本的にセンサ評価キットとArduinoがそろっていれば、あとはウェブサイト上にあるそれぞれのセンサのライブラリをArduino IDEに入れてしまえばサンプルスケッチプログラムとともにすぐ使えるようになるという、ものの5分もかからずセンサが試せるという優れものです。独自で購入したセンサパーツの場合だと、あんまり利用例が少ないものだと英語のデータシートと格闘しながら、時には何個かセンサを壊しながら格闘する必要がありますからね…。本当にこういうセンサを手軽にあつかえるキットは助かります…(涙)。

何かしらデバイスを作るときに、デバイスの機能の向上に時間をかけたくても、一つ一つのセンサなどの部品の調整に時間を取られてしまうと本末転倒だったりします。そういった意味でも、センサの実験や、何かしらの値の計測、モックアップなど試作機の開発の場で活用できそうですね。

 

地磁気センサを使ってみる

今回は、8種類あるセンサのなかで、地磁気センサを使ってセンサ評価キットの動作の流れを把握してみたいと思います。

地磁気センサって何?

地磁気センサとは、その漢字の名のとおり、地球の磁力を検出できるセンサです。電子コンパス、といえばわかりやすいですね。いわゆる方位磁石として、向いている方角を知ることができるセンサです。地磁気センサには2軸(XY軸)タイプと3軸(XYZ軸)タイプがありますが、評価キットに付属している地磁気センサはXYZ軸が検出できる3軸タイプになります。

写真4 地磁気センサのケース

写真4 地磁気センサのケース

 

写真5 取り出された地磁気センサ

写真5 取り出された地磁気センサ

 

センサシールドにセンサを取りつける

取り出したセンサをセンサシールドに装着します。センサシールドには複数の接続ピンと、ジャンパピンがついていますが、それらの役割はどういう風になっているのでしょうか。公式ウェブサイトのセンサシールドの説明ページを見てみるとその役割が記載されていますね。

図3 センサシールドの接続方法解説

図3 センサシールドの接続方法解説

図3でセンサを接続する箇所がわかったので、地磁気センサをセンサシールドに取り付けます。ピン穴に対してセンサ基板を垂直にしっかり刺しましょう。

写真6 地磁気センサをセンサシールドに取り付け

写真6 地磁気センサをセンサシールドに取り付け

次に、図3の電源電圧を設定します。公式ウェブサイトのドキュメント(Sensor Shield 簡易説明書PDF形式)もしくは地磁気センサの解説ページをみるとセンサの推奨電圧が記載されていますので、今回利用する地磁気センサは1.7〜2.0Vとあるので、ジャンパピンは1.8Vをつなぎます。

 

Arduinoにセンサシールドを取り付ける

センサシールドにセンサを載せて、電圧の設定が完了したら、センサシールドをArduinoに接続します。

写真7 Arduinoにセンサシールドを取り付け

写真7 Arduinoにセンサシールドを取り付け

接続が完了したら、次はプログラム側の作業を行います。

 

センサ評価キットのプログラム実装〜動作確認の流れについて

Arduinoのシールドを使ってもプログラムが複雑で面倒…、なんてことがたまにありますが、このセンサ評価キットでは各センサがArduinoのライブラリとして用意されていて、サンプルスケッチのプログラムまである、手厚い内容となっています。なので、センサをのせてすぐ動作確認ができてしますね。

1.センサ用のライブラリファイルのダウンロード

地磁気センサの解説ページの下部からソフトウェアのダウンロードより、ライブラリファイルをダウンロードします。ちなみに、この解説ページでも、地磁気センサをセンサシールドのどこに刺して、電圧はどれにするかもしっかり書かれています。

写真8 ライブラリのダウンロード

写真8 ライブラリのダウンロード

 

2.ライブラリとしてする追加

ファイルがダウンロードされたら、Arduino IDEを開いてライブラリの追加から、ダウンロードしたファイル「BM1422GMV.zip」を選択すれば、地磁気センサの動作準備が完了です。

写真9 ライブラリの追加

写真9 ライブラリ「BM1422GMV」の追加

 

ライブラリの追加が無事完了していると、「スケッチの例」および、「ライブラリを使用」の欄にBM1422GMVの表記が確認できます。

写真10 スケッチの例にBM1422が追加される

写真10 スケッチの例にBM1422が追加される

 

写真11 ライブラリにBM1422が追加される

写真11 ライブラリにBM1422が追加される

 

3.地磁気センサのサンプルスケッチを動かす

写真10のスケッチの例から、BM1422のサンプルスケッチプログラムを呼び出します。このプログラムでは、地磁気センサのXYZ軸それぞれで検出している値を表示するプログラムです。
※サンプルスケッチのコンパイルが通らない場合、Arduino IDEが古い可能性がありますので、最新のArduino IDEでお試しください。

setup()関数内で初期設定をすませば、あとは

bm1422.get_val(mag)

などのような関数で地磁気センサの値を取得することができます。そのほかの関数に関しても解説ページのドキュメントに詳しく紹介されています。

 

BM1422のサンプルスケッチプログラム

/*****************************************************************************
  BM1422.ino

 Copyright (c) 2016 ROHM Co.,Ltd.

 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:

 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.

 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
******************************************************************************/
#include <Wire.h> //センサ評価キットを利用するための準備
#include <BM1422.h> //地磁気センサのライブラリを利用するための準備

BM1422 bm1422(BM1422_DEVICE_ADDRESS_0E); //地磁気センサ変数

void setup() {
  byte rc;

  Serial.begin(9600);
  while (!Serial);

  Wire.begin();

  rc = bm1422.init();//地磁気センサの初期設定
}

void loop() {
  byte rc;
  float mag[3];
  rc = bm1422.get_val(mag); //地磁気センサの値を入力

  if (rc == 0) {
    Serial.print(F("BM1422 XDATA="));
    Serial.print(mag[0], 3);
    Serial.println("[uT]");
    Serial.print(F("BM1422 YDATA="));
    Serial.print(mag[1], 3);
    Serial.println("[uT]");
    Serial.print(F("BM1422 ZDATA="));
    Serial.print(mag[2], 3);
    Serial.println("[uT]");
    Serial.println();    
  }

  delay(500);
}

 

写真12 シリアルモニタによる実行ログ

写真12 シリアルモニタによる実行ログ

プログラムを実行させて、Arduinoの方向を変えると数値が変わっていることが確認できますね。

な、なんて手軽なんでしょう!!

 

まとめ

ロームセンサ評価キットが届いたということで、地磁気センサを試してみました。慣れてしまえばセンサの数値を取るのに準備を入れても5分〜10分程度で数値をすぐ確認できるというのは、お手軽で大変嬉しいですね!!次回はこの地磁気センサの数値から方角の算出、さらに詳しい使い方やプログラムの命令関数を掘り下げ、そして地磁気センサを使ったデバイスを実装してみたいと思います!

写真13 センサ評価キットの箱の感じもかっこいい。

写真13 センサ評価キットの箱の感じもかっこいい。

電子工作マニュアル Vol.4
赤川シホロ

電子工作や新しいデバイスをこよなく愛するエンジニア。日常生活のちょっとしたことを電子工作で作って試して、おもしろく過ごしたいと日々考えています。