稼働中

マイクロビット(e_06)GP2Y0A21YK 赤外線距離センサー

GP2Y0A21YK

シャープのGP2Y0A21YK 赤外線距離センサモジュールを使ってみます。以下がセンサーの外観です。モジュールのデータシートをみると 10 ~ 80 cmの距離が測定できます。

赤外線距離センサ外観

接続例

モジュールのピン配置は以下のようになっています。電源電圧は4.5~5.5Vなのでmicro:bitから供給できません。5Vの外部電源が必要になります。

モジュールのピン配置
※シャープのデータシートから引用

以下のようにmicro:bitとGP2Y0A21YKを接続しました。出力電圧Voは3.3Vを超えないようなのでmicro:bitのpin0に直接接続しました。pin0のモードはアナログ入力にして、read_analog()で読み込みます。

配線図
※micro:bitのピン配置図は「https://tech.microbit.org/hardware/edgeconnector/」からの引用です。

また、データシートから出力電圧Voと距離のグラフからエクセルなどの表計算ソフトでグラフ化し、近似式を求めました。以下の 距離L(cm)=26.8995*Vo^-1.3003 を使って計算しようと思います。

近似式

スクリプト

スクリプトは以下のようにしました。※thonny-microbitを使っています。


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from microbit import *
import math
# 電圧換算
def u_map(value,a_min,a_max, b_min,b_max):
    y= (value-a_min)/(a_max-a_min) * (b_max-b_min)+b_min
    return y
Vs=3300                     # 電圧換算のための電源電圧 mv
# GP2Y0A21YK  distance measuring sensor unit
# L = 26.8995xVo^-1.3003 26.9183*Vo^-1.2351
# 一応、NO_PULLに設定しておく
pin0.set_pull(pin0.NO_PULL)
while True:
    v_read=pin0.read_analog()       # Voを読み込む
    vo=u_map(v_read,0,1024,0,Vs)    # 電圧に換算する
    v_out=vo/1000                   # mvをVにする
    l_cm=26.8995*pow(v_out,-1.3003) # 近似式に代入して距離を算出する
    print('Vout %06.2f ' % v_out,'L cm %06.2f ' % l_cm) # 結果表示
    sleep(1000*7)

実行結果です。(ThonnyのShell表示、ThonnyのSTOPアイコンで停止)
厚紙の衝立を7秒内に移動させて測定しました。まあまあ合っています。


>>> %Run b1121_ir_dist_0b.py
Vout 003.19  L cm 005.95         #  5cm
Vout 002.78  L cm 007.13         # 10cm
Vout 001.76  L cm 012.85         # 15cm
Vout 001.39  L cm 017.58         # 20cm
Vout 000.99  L cm 027.36         # 30cm
Vout 000.76  L cm 038.14         # 40cm
Vout 000.64  L cm 047.87         # 50cm
Vout 000.52  L cm 063.57         # 60cm

実測値から近似式

前述の近似式はデータシートから求めました。実測値から近似式を求めてみます。実際に距離を変えてVoを実測定して表計算で近似式を求めました。その結果 距離L(cm)=26.9183*出力電圧Vo^-1.2351 になりました。

実測値から近似式

実測から求めた近似式に変更して再測定をしました。ぴったりとは行きませんでしたが、50、60cmの値は近くなりました。


>>> %Run b1121_ir_dist_0b.py
Vout 003.18 L cm 006.44 # 5cm
Vout 002.62 L cm 008.19 # 10cm
Vout 001.80 L cm 013.02 # 15cm
Vout 001.56 L cm 015.49 # 20cm
Vout 001.01 L cm 026.71 # 30cm
Vout 000.76 L cm 037.50 # 40cm
Vout 000.60 L cm 050.25 # 50cm
Vout 000.52 L cm 060.46 # 60cm

まとめ
micro:bitで赤外線距離センサーモジュールGP2Y0A21YKを使ってみました。GP2Y0A21YKでの距離測定ができました。だいたい近い値になりました。10~40cmくらいにある物体の有無を調べるには簡単に使えそうです。