その他

Spresenseで電子工作の幅を広げよう!【第3回】

ローム Add-onボードを使って、Spresenseで簡単センサ計測!

 

第1回:Spresenseとは?
第2回:Spresenseでハイレゾ音楽プレーヤーをつくってみよう!

 

こんにちは、ヨシケンです!
ソニーのSpresenseを使った電子工作の第3回、今回はオープンアーキテクチャでつくられている特性を活かして、機能を追加できるAdd-onボードを使いたいと思います。
既にロームがSpresenseにぴったりはまるAdd-onボードを出しています。これを使って簡単に短時間でセンサ計測できるデバイスをつくっていきたいと思います!

今回の記事で必要な物一覧

・SONY Spresenseメインボード
Spresense

・ローム センサAdd-onボード
SPRESENSE-SENSOR-EVK-701

・小型リチウムポリマーバッテリー(400mAh)と電源ソケット
(※注意:取り扱いに十分気をつけて自己責任でお使いください)
3-1

・Micro USBケーブル
・Micro SDカード
・100円ショップなどで手に入る小型ケースなど

 

今回の記事の流れ

1. ローム Add-onボードについて
2. センサAdd-onボードで気温、高度計測
3. 気温/高度チェック・デバイスにつくり上げる
4. まとめ

1.ローム Add-onボードについて

Add-onボードとは、SpresenseのGPIOやコネクタに差し込むだけで機能を追加できる基板群です。既にロームから、センサを扱ったSENSOR-EVK-701と、Bluetooth Low Energy対応のBLE-EVK-701ボードが発売されています。

センサボードについてみていきましょう。これにはあらかじめ、加速度センサ、気圧センサ、地磁気センサの3つのセンサが内蔵されています。

2

これらのセンサは既にビルトインされているので、Spresenseとつなげて、ロームから提供されているライブラリを適用するだけで使い始めることができます。
またGPIOピンが出ているので、ここにロームのセンサ評価キットなどを差せば簡単にセンサを追加することもできます。

それでは早速このセンサボードを、使ってみましょう。
SpresenseのメインボードのGPIOピンのうち、写真の場所にセンサボードを差し込みます。(写真でGPIOの下端にAdd-onボードの5つのピンが来る向きで)

3

さあこれだけで、Spresenseでセンサ計測できるようになります。
こちらのロームのサイトから、センサのライブラリをダウンロードします。
https://github.com/RohmSemiconductor/Arduino

ダウンロードしたライブラリ群を、Arduinoフォルダ下に格納します。
最初の確認の為に、気圧センサのBM1383AGLV.inoをダブルクリックしてみます。Arduino IDEが自動的に立ち上がるので、パソコンとSpresenseをつないでスケッチを書き込みます。
4

その後シリアルモニタを立ち上げると、そこに気圧[hPa]と気温[Celsius]が表示されるでしょうか?これだけで、気圧、温度が手軽に測れてしまいます。
5

2. センサAdd-onボードで高度計測

センサボードがつながって、動くことが分かったので、各センサを使ってもう少し具体的な測定をしてみましょう。
まずは先ほどの気圧センサから、現在地の高度を簡易的に計測してみます。
気圧から高度を計算するのは、以下のような算出式があり、これを当てはめてみます。<br/ >6

Arduino IDEで記述する時は、このようになります。

altitude (m) = ((pow((基準大気圧 / 計測大気圧), (1 / 5.257)) – 1) * (基準温度 + 273.15)) / 0.0065

ここで基準大気圧は、1013.15hPa、基準温度は15℃となっています。先ほど流したBM1383AGLVスケッチを元に、loop内に以下黄色の部分を追加しました。

/** altitude計算をloop内に追加 **/
void loop() {
byte rc;
float press = 0, temp = 0, altitude = 0;
volatile float refPress = 1013.15;//高度計算に使用する基準高度での大気圧[hPa]
volatile float refTemp = 15.0;//高度計算に使用する基準温度[C]
rc = bm1383aglv.get_val(&press, &temp);
altitude = ((pow((refPress / press), (1 / 5.257)) - 1) * (refTemp + 273.15)) / 0.0065;
if ( rc == 0 ) {
Serial.print("ALT: ");
Serial.print(altitude);
Serial.println(" [m]");
Serial.print("TEMP: ");
Serial.print(temp);
Serial.println(" [C]");
}
delay(500);
}

このスケッチをSpresenseに書き込んで、シリアルモニタを立ち上げると、高度と気温の計測を始めます。Spresenseを移動させて、高度などが変化するか確かめてみてください。

7

<br/ ><br/ >

3. 気温/高度チェック・デバイスにする

それではSpresenseを身につけて、気温、標高などをチェックできるデバイスにしましょう。
Spresenseのメインボードとバッテリーだけで計測できるので、100円ショップなどで買える小さなケースに収納できます。ケースの中に入れたら、緑色のLEDが見えるようにしてください。
9

カラビナやクリップなどで、服やズボンなどに付けられるようにします。山歩きなどで、気温や今いる位置の高度を測るなどに使えますね。

10

山歩きなどで使った時に、ある程度高度が上がるとそれが分かるように、SpresenseのLEDを段階的に光らせるようにしてみました。標高が200m以上だとLEDが2つ付くような形です。

最終的に出来上がったスケッチは、以下のようなものです。水色で記した、LEDを光らせる部分は、気温などが上がったら表示するものに変えてもいいかもしれません。ご自身の測りたいもの、表示したいものに合わせて変えてみてください。

#include <Wire.h>
#include "BM1383AGLV.h"
BM1383AGLV bm1383aglv;
void setup() {
byte rc;
Serial.begin(115200);
while (!Serial);
Wire.begin();
rc = bm1383aglv.init();
if (rc != 0) {
Serial.println("BM1383AGLV initialization failed");
Serial.flush();
}
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop() {
byte rc;
float press = 0, temp = 0, altitude = 0;
volatile float refPress = 1013.15;//高度計算に使用する基準高度での大気圧[hPa]
volatile float refTemp = 15.0;//高度計算に使用する基準温度[C]
rc1 = bm1383aglv.get_val(&press, &temp);
altitude = ((pow((refPress / press), (1 / 5.257)) - 1) * (refTemp + 273.15)) / 0.0065;
Serial.print("ALT: ");
Serial.print(altitude);
Serial.println(" [m]");
Serial.print("TEMP: ");
Serial.print(temp);
Serial.println(" [C]");
Serial.println();
delay(50);
if ( (altitude > 50) && (altitude < 200) ) {
digitalWrite(LED0, HIGH);
} else if ( (altitude >= 200) && (altitude < 300) ) {
digitalWrite(LED1, HIGH);
} else if ( (altitude >= 300) && (altitude < 400) ) {
digitalWrite(LED2, HIGH);
} else if (altitude >= 400) {
digitalWrite(LED3, HIGH);
} else {
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
}
}

電池は今回のような小型のものでも数時間はもちました。ぜひこの春の陽気の中、気温や高度などをチェックしながら歩いて、健康管理に役立ててください!

4. まとめ

今回はロームから提供されているAdd-onボードを使ってみました。
Spresenseに差すだけで、加速度、気圧、地磁気の数値を測ることができるようになるのでとても便利です。ロームの他のセンサも半田付け無しにすぐに使い始められるので、Spresenseで電子工作の敷居がグッと下がったのではないでしょうか?
また低電力で小型バッテリーでも長時間使えるので、モバイルデバイスの作成にもうってつけです。

次回は、更にセンサなどを追加して、面白い物をつくっていきたいと思います。
お楽しみに!

(ヨシケン)

 

 

今回の連載の流れ

第1回:Spresenseとは?
第2回:Spresenseでハイレゾ音楽プレーヤーをつくってみよう!
第3回:ローム Add-onボードを使って、Spresenseで簡単センサ計測!(今回)
第4回:ローム BLE Add-onボードを使って、スマホからハイレゾ音楽プレーヤーを操ろう!
第5回:Spresenseカメラボードを使ってデジカメをつくる!

アバター画像

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net

【動画で解説】ラズパイZeroで小型AIカメラを作ろう!