LoginSignup
5
4

More than 5 years have passed since last update.

NefryBTでGroveセンサーをつなげる時の?について

Last updated at Posted at 2017-12-14

はじめに

Nefry Advent Calendar 2017 の15日目です。よろしくお願いします。

NefryBTをお借りしてから、少しずつですが勉強中です。
未だ初心者の域を超えておらず、でも初心者ならではの疑問、つまずきは今しかない(たぶん)と思うので、「NefryBTでLチカをして、さあGroveセンサーをつなげてみるぞ」のフェーズで起こりうる問題について、超音波センサーを例にまとめてみようと思います。

フェーズ1:Groveセンサーをつなげる

NefryBTはGrove端子があるので、Groveセンサーを手軽に接続できる・・はずなのですが、4つのGrove端子のうち、どこに接続すればいいのかがわかりません。

Seeed社のHPをみよう

 Seeed社の各センサーのHPにはArduinoのGrove Base Shieldの接続例が記載されています。例えば、超音波センサーでは、Grove Base ShieldD7端子に接続しています。

 image.png
 [Seeed社 HPより]

 この例から、超音波センサーは、デジタル(D)に接続すれば良さそうということがわかります。NefryBTはデジタルがD2なので、D2に接続します。

image.png

フェーズ2:ライブラリが必要(な時がある)

 センサーの中には、ライブラリが用意されていて、サンプルもこのライブラリを使用したものになっています。
 先ほどの超音波センサーにもライブラリがあり、Githubからダウンロードして、インストールする必要があります。

Seeed社のHPをみよう

超音波センサーのHPのSoftwareの箇所にGithubのダウンロードリンクとライブラリのインストール方法へのリンクがあります。

image.png

ライブラリのzipファイルをダウンロードして、Arduino IDEの「スケッチ」-「ライブラリをインクルード」-「.zip形式のライブラリをインストール」にてダウンロードしたライブラリのzipを指定するとインストールできます。

フェーズ3:ソースをコピぺ

 超音波センサーのHPのサンプルコードをコピペするのですが、ちょっとだけ修正が必要となります。
 ここで問題となるのが、D2に接続したセンサーは、このサンプルの「Ultrasonic ultrasonic(7);」の7はいくつにすればいいのだ?という疑問にぶつかります。
 
image.png

NefryBTの説明書をみよう

 NefryBTの説明書は、dotstudio株式会社NefryBT関連リンク内の説明書にて公開されています。
 このうち、「各入出力のピンの機能」にNefryBTのピンと、ESP32のピンのマッピング表があるので、ここから、NefryBTのD2がESP32ピンの何番になっているのかを調べます。

image.png

 すると、23番であることがわかりますので、先ほどの「Ultrasonic ultrasonic(7);」は、「Ultrasonic ultrasonic(23);」 に置き換えることになります。
 あとは、「#include <Nefry.h>;」 を追加すれば、完成です。


#include <Nefry.h>
#include <Ultrasonic.h>

Ultrasonic ultrasonic(23);

void setup() {
   Serial.begin(9600);
}

void loop() {

    long RangeInInches;
    long RangeInCentimeters;

    Serial.println("The distance to obstacles in front is: ");
    RangeInInches = ultrasonic.MeasureInInches();
    Serial.print(RangeInInches);//0~157 inches
    Serial.println(" inch");
    delay(250);

    RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval
    Serial.print(RangeInCentimeters);//0~400cm
    Serial.println(" cm");
    delay(250);

}

シリアルモニタへの出力から、Web Consoleに変えたソースがこちら

#include <Nefry.h>
#include <Ultrasonic.h>

Ultrasonic ultrasonic(23);

void setup() {

}

void loop() {

    long RangeInInches;
    long RangeInCentimeters;

    Nefry.println("The distance to obstacles in front is: ");
    RangeInInches = ultrasonic.MeasureInInches();
    Nefry.print(RangeInInches);//0~157 inches
    Nefry.println(" inch");
    Nefry.ndelay(250);

    RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval
    Nefry.print(RangeInCentimeters);//0~400cm
    Nefry.println(" cm");
    Nefry.ndelay(250);

}

最後に

超音波センサーを例にまとめましたが、前回NefryBTからセンサーの値をSlackに投稿するで使用したJoystickはアナログだったので、analogReadはどうするんだといった疑問がありました。使用するセンサーごとにノウハウも違ってくると思いますので、各センサーごとにNefryBTとの繋ぎ方や、サンプルソースなどをまとめていけたらと思います。

5
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4