GP2Y0E03はアナログ出力のほかにI2Cに対応しており複数(最大16個)接続することができます。しかし、工場出荷時にはI2Cアドレスが0x40に設定されているため、このまま複数個繋げると重複してしまい正常に動作しません。これを正常に動かすためにそれぞれに固有のI2Cアドレスを振る必要があります。ここではそのI2Cアドレスを変更する手順をまとめました。
使用するもの
- GP2Y0E03(シャープ測距モジュール(I2C&アナログ))
- Raspberry Pi 3(2とかでも良いと思います)
- ジャンパー線(GP2Y0E03にハンダ付けします)
前提
- Raspberry Pi に最新のRaspbianがインストールされていること
- Pythonが動作すること(2でも3でもよいと思います)
- 8番にジャンパー線をハンダ付けします。8番はコネクターに線が出ていないのではんだ付けする必要があります。

裏
表
- このように接続します。

- Raspberry PiのRaspbianをupdate/upgeadeします。
$ sudo apt-get update ; sudo apt-get upgrade
- Pythonのi2c用ライブラリsmbusをインストールします。
$ sudo apt-get install python-smbus
- i2cdetectを使ってi2cアドレスを確認します。defaultの状態は0x40であることが確認できます。
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
- python3の更新スクリプトを用意します。
ソースコードの6行目のnew_addを適宜目的のi2cアドレスに変更してください。
0x20にしたい場合は0x04を指定するなど、8で割った値を指定するようです。
今回は、0x10にしたいので0x02を指定しています。
gp2y0e03_i2c_add_chg.py#!/usr/bin/python3 # -*- coding: utf-8 -*- import smbus import time now_add = 0x40 # defaultのアドレス new_add = 0x02 # 変更先のアドレス 0x10 i2c = smbus.SMBus(1) # Vpp OFF val = input('Vpp端子をOFFにしてください。準備ができたらEnterを押下してください') print('stage1') i2c.write_byte_data(now_add, 0xEC, 0xFF) time.sleep(0.1) # Vpp ON val = input('Vpp端子をONにしてください。準備ができたらEnterを押下してください') print('stage2') i2c.write_byte_data(now_add, 0xC8, 0x00) time.sleep(0.1) print('stage3') i2c.write_byte_data(now_add, 0xC9, 0x45) time.sleep(0.1) print('stage4') i2c.write_byte_data(now_add, 0xCD, new_add) time.sleep(0.1) print('stage5') i2c.write_byte_data(now_add, 0xCA, 0x01) time.sleep(0.1) val = input('Vpp端子をOFFにしてください。準備ができたらEnterを押下してください') # Vpp OFF print('完了') - スクリプトを実行します。
このとき画面に「Vpp端子をOFFにしてください。」が表示されたとき上記2の図の※のジャンパー線を外します。また、「Vpp端子をONにしてください。」のとき上記2の図の※のジャンパー線を繋ぎます。$ python3 gp2y0e03_i2c_add_chg.py Vpp端子をOFFにしてください。準備ができたらEnterを押下してください stage1 Vpp端子をONにしてください。準備ができたらEnterを押下してください stage2 stage3 stage4 stage5 Vpp端子をOFFにしてください。準備ができたらEnterを押下してください 完了
- 再度i2cdetectを使ってi2cアドレスを確認します。このときGP2Y0E03を再起動する必要がありますので、Raspberry Piに繋げている赤いジャンパー線を一度外して再度繋げてください。アドレスが0x40から0x10に変更されていることが確認できます。
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: 10 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
- 注意
原因はわからないですが、2回アドレスを変更すると下記のようにアドレスが出力されなくなりますのでご注意ください。使用できなくなります!$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
- 参考
データシート http://akizukidenshi.com/download/ds/sharp/gp2y0e.pdf
秋月電子 http://akizukidenshi.com/catalog/g/gI-07547/
創活こんぺさん支部 http://bmj0312.blog.shinobi.jp/robot/sharp測距モジュールgp2y0e03
technology memo http://technology-memo.seesaa.net/article/406837556.html








