質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

3553閲覧

RaspberryPiで同一のi2Cデバイスを複数使う場合

IzuShin

総合スコア68

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2018/07/19 23:27

RaspberryPiで同一のi2Cデバイス(照度センサーBH1750)を複数使いたいと考えています。

同一のi2Cデバイスを複数つないだ場合、i2cdetectコマンドでアドレスをしらべても1つしか
表示されないのは正しいのでしょうか?

もし正しい場合、そのアドレスから複数のセンサーの値を見分ける事は可能でしょうか?
1つ目のセンサーの値と2つ目のセンサーの値を分けて取り出したいのですが、可能なのでしょうか?

ご存知の方がおられましたら教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

IzuShinさん、

I2Cでは、同一のアドレスを持つスレーブは、同時に使用できません。

BH1750のデータシートをみたところ、電源(VCC,GND)とI2C(SCL,SDA)以外に、ADDRピンとDVIピンがあります。

ADDR=Lで、0100011、ADDR=Hで、1011100 と2種類のアドレスを持つことができるようなので、ハードウェア設定をかえて、2個はつけられますね。

あとは、DVI=L(PowerDownモード)で、このとき、I2C通信が無視されるのであれば、ラズパイ側でアクティブにするデバイスのみ、DVIをHにして通信、ということができるかもしれません。

投稿2018/07/20 00:27

mt08

総合スコア1825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IzuShin

2018/07/20 05:38

mt08様 ご回答ありがとうございます。 ADDRをLに接続したものと、ADDRをHに接続したもので別々のアドレスを取得する事ができました。 しかし本当にやりたかったのは3個の接続だったので…。 BH1750ではないアナログの照度センサーを検討します。 ありがとうございました。
mt08

2018/07/20 05:50

[GPIO制御でのソフトウェアI2C](https://electronicayciencia.github.io/wPi_soft_i2c/) ってのもあるようなので、別のピンを使って、3個目のデバイスをつける、なんてのもできるかもしれません。 MCP3008とかなら、8chのADCがつかえるので、そっちのほうが同様に制御できてラクかもしれませんが...
guest

0

ベストアンサー

その照度センサにアドレス設定はないでしょうか。

IICバスには、スレーブアドレスが異なるデバイスを複数接続できます。
IICのEEPROMなんかでは、アドレス設定のためのピンが出てたりして、その接続状況でスレーブアドレスを区別して複数つなげるようになってます。

投稿2018/07/19 23:30

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IzuShin

2018/07/19 23:46

y_waiwai様 さっそくのご回答ありがとうございます。 照度センサー(BH1750)にADDRのピンが付いております。 このピンにRaspberryPiのGPIOをつなげば、センサーの切り替えをおこなえるという事でしょうか?
y_waiwai

2018/07/20 00:04

おそらく、そのADDRピンを一つはLow、もう一つはHighに接続すると区別ができるようになる、と思われます。 これで2つのセンサをつなげることができるようになりますね #アドレスの区別は固定でいいので、GPIOにつなぐ必要はないでしょうね
y_waiwai

2018/07/20 00:08

んで、それぞれのスレーブアドレスがどうなるかは、そのセンサのデータシートで確認しておいてください
IzuShin

2018/07/20 05:36

y_waiwai様 ご回答ありがとうございます。 ADDRピンをLowとHighに接続する事で別のアドレスで取得する事ができました。 しかしやりたかったのは3つの照度センサーを使いたかったので…、別の方法を考えます。 ありがとうございました。
y_waiwai

2018/07/20 05:41

ラズパイのIICポートは一つだったっけ。 ポートが2つあればそこにも繋げれるんだけどねー まあ、IICは2本のポートをバタバタするだけで実装できるので、GPIOのピンで、自前でIICのシーケンスを実装すればアクセスできますよ。 そんなに難しくはないんで、挑戦してみては。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問