edit

Grove 超音波レンジャー

Grove - Ultrasonic Ranger         

Grove - Ultrasonic Ranger

Grove -超音波レンジャーは40KHzで作業する、非接触式の距離測定モジュールです。信号ピンで10uS以上のパルス トリガ信号を発送したら、Grove - Ultrasonic Rangerは8サイクルの40KHz超音波を送り、物体からのエコーを受信します。エコーのパルス幅と距離とには比例した相関関係があります。計算公式:距離=エコーのかかった時間*音声速度(340メートル/秒)/2。 Grove-Ultrasonic Rangerのトリガー(Trig) のSIGピンとエコー信号のは同じです。

注意!! センサー損壊のないように、Grove-Ultrasonic Rangerのホットプラグはしないでください。距離測定には、測定地域は面積が0.5平方メートル以上、面が平滑であるというように。

バージョン

バージョン 変更 発行日
Grove-Ultrasonic ranger V1.0 オリジナル版 2012年5月
Grove-Ultrasonic ranger V2.0 低電圧ボードの採用と以下の変更(1:電気容量C14の追加。2:よりきれいなレイアウト。3:3.3V電圧で働くシステムとも互換性がある。)によって、電源はより穏やかになる。 2017年7月

商品仕様

パラメーター 数値/範囲
動作電圧 3.2~5.2V
動作電流 8mA
超音波頻度 40kHz
測定範囲 2-350cm
精度 1cm
出力 PWM
サイズ 50mm X 25mm X 16mm
重さ 13g
測定角度 15度に至る
動作温度 -10~60℃
トリガー信号 10uS TTL
エコー信号 TTL

ヒント!!! Groveモジュールの詳細情報は Grove Systemでご覧ください

サポートされるプラットフォーム

Arduino Raspberry Pi BeagleBone Wio LinkIt ONE

注意! 以上のプラットフォームは代表的或いは理論的に互換性があるソフトウェアです。ほとんどの場合は、こちらはソフトウェアライブラリとコードの例を提供し、全部のMCUプラットフォームうにライブラリやデモのコードを提供するではありません。そのため、ライブラリを作ることが必要です。

入門ガイド

ノート!!! 初めてArduinoを操作する場合は、 Getting Started with Arduino でご覧ください。

Arduinoでは

ハードウェア部分

  • ステップ1 以下の物は必要です。
Seeeduino V4.2 Base Shield Grove - Ultrasonic Ranger
enter image description here enter image description here enter image description here
Get One Now Get One Now Get One Now
  • ステップ2 Ultrasonic RangerをGrove-Base ShieldのD7ポートに接続します。
  • ステップ3 SeeeduinoにGrove-Base Shieldをインサートします。
  • ステップ4 USBケーブルでSeeeduinoをコンピュータに接続します。

ノート!!! Grove-Base Shieldがない場合は、以下のようにGrove - Ultrasonic RangerをSeeeduinoに接続します。

Seeeduino Grove-Ultrasonic Ranger
5V
GND
接続なし
D7

ソフトウェア部分

  • ステップ1  Githubから UltrasonicRanger Library をダウンロードします。
  • ステップ2  ファイル How to install library によってライブラリをArduinoにインストールします。
  • ステップ3  Arduinoで以下のコードをコピーして、そしてアップロードします。アップロード方法が分からない場合、 how to upload codeでご覧ください。
#include "Ultrasonic.h"

Ultrasonic ultrasonic(7);
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);
}
  • ステップ4 そして距離数値は以下のようにターミナルで表示されます。
The distance to obstacles in front is:
2 inches
6 cm
The distance to obstacles in front is:
2 inches
6 cm
The distance to obstacles in front is:
2 inches
6 cm

Codecraftでは

ハードウェア部分

ステップ1  Grove-Ultrasonic RangerをBase ShieldのD7ポートに接続します。 ステップ2  Seeeduino/ArduinoにGrove-Base Shieldをインサートします。

ステップ3  USBケーブルでSeeeduino/Arduinoをコンピュータに接続します。

ソフトウェア部分

ステップ1  Codecraft を開き、Arduino supportを追加して、そしてメインプロシージャをワーキングエリアにドラッグします。 ノート!! 初めてCodecraftを操作する場合は、 Guide for Codecraft using Arduinoでご覧ください!

ステップ2 以下のようにブロックをドラッグします。或いはcdcファイルを開きます。このページの終わりではcdcファイルがダウンロードできます。

cc

そのプログラムをSeeeduino/Arduinoにアップロードします。

できた! コードがアップロードられたら、シリアルモニターでは距離数値が表示されます!

Raspberry Pi では(Grove Base Hat for Raspberry Piも必要)

ハードウェア部分

  • ステップ1 以下の物が必要です。
Raspberry pi Grove Base Hat for RasPi Grove - Ultrasonic Ranger
enter image description here enter image description here enter image description here
Get ONE Now Get ONE Now Get ONE Now
  • ステップ2 Grove Base HatをRaspberryにインサートします。
  • ステップ3 Grove - Ultrasonic RangerをBase Hatの D5ポートに接続します。
  • ステップ4 USBケーブルでRaspberry Piをコンピュータに接続します。

ノート! ステップ3では、Ultrasonic Rangerを どちらのGPIOポート に接続してもいけますが、それに伴い、ポートにマッチするコマンドを変更しなければなりません。

ソフトウェア部分

  • ステップ1 Setting Software によって開発環境を構成します。
  • ステップ2 grove.py libraryのクローンによってソースファイルをダウンロードします。
cd ~
git clone https://github.com/Seeed-Studio/grove.py
  • ステップ3コードの実行のため、以下のコマンドを実行させます。
cd grove.py/grove
python grove_ultrasonic_ranger.py 5 6

以下はgrove_ultrasonic_ranger.pyコード。

import sys
import time
from grove.gpio import GPIO

usleep = lambda x: time.sleep(x / 1000000.0)

_TIMEOUT1 = 1000
_TIMEOUT2 = 10000

class GroveUltrasonicRanger(object):
    def __init__(self, pin):
        self.dio =GPIO(pin)

    def _get_distance(self):
        self.dio.dir(GPIO.OUT)
        self.dio.write(0)
        usleep(2)
        self.dio.write(1)
        usleep(10)
        self.dio.write(0)

        self.dio.dir(GPIO.IN)

        t0 = time.time()
        count = 0
        while count < _TIMEOUT1:
            if self.dio.read():
                break
            count += 1
        if count >= _TIMEOUT1:
            return None

        t1 = time.time()
        count = 0
        while count < _TIMEOUT2:
            if not self.dio.read():
                break
            count += 1
        if count >= _TIMEOUT2:
            return None

        t2 = time.time()

        dt = int((t1 - t0) * 1000000)
        if dt > 530:
            return None

        distance = ((t2 - t1) * 1000000 / 29 / 2)    # cm

        return distance

    def get_distance(self):
        while True:
            dist = self._get_distance()
            if dist:
                return dist


Grove = GroveUltrasonicRanger


def main():
    if len(sys.argv) < 2:
        print('Usage: {} pin_number'.format(sys.argv[0]))
        sys.exit(1)

    sonar = GroveUltrasonicRanger(int(sys.argv[1]))

    print('Detecting distance...')
    while True:
        print('{} cm'.format(sonar.get_distance()))
        time.sleep(1)

if __name__ == '__main__':
    main()

完成!! 間違いがなければ、以下の結果が出てきます。

pi@raspberrypi:~/grove.py/grove $ python grove_ultrasonic_ranger.py 5 6
Detecting distance...
121.757901948 cm
246.894770655 cm
2.60205104433 cm
0.205533257846 cm
0.657706425108 cm
247.433267791 cm
122.485489681 cm
^CTraceback (most recent call last):
  File "grove_ultrasonic_ranger.py", line 110, in <module>
    main()
  File "grove_ultrasonic_ranger.py", line 107, in main
    time.sleep(1)
KeyboardInterrupt

Ctrl+Cを押すと、このプログラムを終了することができます。

Raspberry Piでは(GrovePi_Plusも必要)

ハードウェア部分

  • ステップ1 以下の物が必要です。
Raspberry pi GrovePi_Plus Grove - Ultrasonic Ranger
enter image description here enter image description here enter image description here
Get One Now Get One Now Get One Now
  • ステップ2 GrovePi_PlusをRaspberryにインサートします。
  • ステップ3 Grove-Ultrasonic rangerをGrovePi_PlusのD4ポートに接続します。
  • ステップ4 USBケーブルでRaspberryをコンピュータに接続します。

ソフトウェア部分

  • ステップ1 Setting Software によって開発環境を構成します。
  • ステップ2 GitでGithubリポジトリをコピーします。
cd ~
git clone https://github.com/DexterInd/GrovePi.git
  • ステップ3 ultrasonic_rangerで距離測定のため、以下のコマンドを実行させます。
cd ~/GrovePi/Software/Python
python grove_ultrasonic.py

以下はgrove_ultrasonic.pyコードです。

# GrovePi + Grove Ultrasonic Ranger

from grovepi import *

# Connect the Grove Ultrasonic Ranger to digital port D4
# SIG,NC,VCC,GND

ultrasonic_ranger = 4

while True:
    try:
        # Read distance value from Ultrasonic
        print ultrasonicRead(ultrasonic_ranger)

    except TypeError:
        print "Error"
    except IOError:
        print "Error"
  • ステップ4 ターミナルで距離数値は以下のように出てきます。
pi@raspberrypi:~/GrovePi/Software/Python $ python grove_ultrasonic.py
9
9
9
9
9
9
9
9
9
9
9

よくある質問

Q1:Grove-Ultrasonic sensorはどのように距離を測定しますか?

  • A1:信号ピンで10uS以上のパルス トリガ信号を発送したら、Grove - Ultrasonic Rangerは8サイクルの40KHz超音波を送り、物体からのエコーを受信します。エコーのパルス幅と距離とには比例した相関関係があります。計算公式:距離=エコーのかかった時間*音声速度(340メートル/秒)/2。

Q2:ほかのultrasonic sensor TrigとEcho pinsに比べると、なぜGrove-Ultrasonic sensorには信号ピンが1つだけありますか?

  • A2:Grove-Ultrasonic RangerのTrig のSIGピンとエコー信号のは同じですから。

Q3:ほかの問題があればどうしましょうか?

  • A3:techsupport@seeed.ccまで送信してください。

Q4:1つのArduinoに複数のultrasonic sensorを接続してもいいですか?

  • A4:OKです。例として、1つのセンサーはD2ポートに接続し、ほかのはD3ポートに接続します。
#include "Ultrasonic.h"

Ultrasonic ultrasonic1(2);
Ultrasonic ultrasonic2(3);
void setup()
{
    Serial.begin(9600);
}
void loop()
{
    long RangeInCentimeters1;
    long RangeInCentimeters2;

    RangeInCentimeters1 = ultrasonic1.MeasureInCentimeters(); // two measurements should keep an interval
    Serial.print(RangeInCentimeters1);//0~400cm
    Serial.println(" cm");

    RangeInCentimeters2 = ultrasonic2.MeasureInCentimeters(); // two measurements should keep an interval
    Serial.print(RangeInCentimeters2);//0~400cm
    Serial.println(" cm");

    delay(250);
}

FAQs

Q1:Grove-Ultrasonic sensorはどのように距離を測定しますか?

A1:信号ピンで10uS以上のパルス トリガ信号を発送したら、Grove - Ultrasonic Rangerは8サイクルの40KHz超音波を送り、物体からのエコーを受信します。エコーのパルス幅と距離とには比例した相関関係があります。計算公式:距離=エコーのかかった時間*音声速度(340メートル/秒)/2。

Q2:ほかのultrasonic sensor TrigとEcho pinsに比べると、なぜGrove-Ultrasonic sensorには信号ピンが1つだけありますか?

A2:Grove-Ultrasonic RangerのTrig のSIGピンとエコー信号のは同じですから。

関連リソース

プロジェクト

Seeed Officeでの面白い段階:段階を楽しく、インタラクティブにしましょう。また、”STAFF ONLY”という文字を展示することもできます!

技術サポート

何かご不明な点がございましたら、 フォーラムでお問い合わせ下さい。


※このページは英語バージョンのウィキに基づいて翻訳されたものです。何かご不明な点などございましたら、英語バージョンをご参考下さい。

PCBA