ラズベリーパイ3 温度センサ BMP085(1) 回路接続

前回はA/Dコンバータの値をspiインタフェースで読み込んだ。

ブレッドボードの裏側がおかしくなったせいか、A/Dコンバータから煙が出て

使えなくなったので、注意しないと(汗

テストに使った可変抵抗はテスタあててみると無事だった。

というか、ICではないので、壊れるものでもないか。

A/Dコンバータは内部に回路を持っているので、そこに過電流が流れるかなにかで

熱エネルギーで溶けて壊れたんだろうか・・・

 

可変抵抗の両足は3v、可変する脚は0~3vだかに変動する事はテスタで確認した。

 

今回は温度センサ(BMP085)を動作させてみる。

インタフェースはI2C。

spiは、シリアルペリフェラルインタフェース、素朴なマスタ・スレーブ通信プロトコルだった。マスタ側のR/W、スレーブ側のR/Wで構成され、クロックで同期。マスタのインプットはこの場合、スレーブへのデータ読み込みコマンドだった。それをクロック信号(LOW->HIGH)で送信通知していた。データ読み込みはクロック信号で受信通知してから実際のデータ受信していた。

I/C間の通信をどちらがマスタ、どちらがスレーブと見立てて、通信していた。

I2Cはどう違うのか。

おそらく、マスタ・スレーブという概念は存在しないのではなかろうか。

使用するのは、

SCL : シリアルクロック

SDA: シリアルデータ

確かに、spiにあったような、もしも (Master Output Slabe In)がない。

 

始めてみよう。

ラズパイ3のgpioをみてみると、

ピン3番:SDA1  (I2C)

ピン5番:SCL1 (I2C)

とある。これを温度センサの SDA, SCLに接続すれば良い。

ちなみに、SDA2とか、SCL2は見当たらない。gpioを拡張する場合のために、

識別番号つけてるだけなのか。

 

3.3v : pin1
gnd : pin6
scl : pin5
sda:pin3

接続ピンはこの4つだけ。

ラズパイ3と回路接続したら、まず、ラズパイ3がi2cデバイスとして認識しているか

確認してみる。

ラズパイ3では、bruetooth通信のために、UARTが安定しない、といった話があり、接続デバイスにはハードウェア設計上の制約が生まれるものらしい。

そういった話もあるからか、sudo raspi-configで i2cを有効にしなければならない。

i2cをラズパイ3で使えるようにする話は詳細には触れないが、このハードウェア事情的なコンフィグだけで良い。

 

ように見えるが、もちろんi2c制御ライブラリが必要になる。ラズベリーパイのパイは、「パイソン」のパイであり、パイソンライブラリとしてミドルウェア積み込みされているので、通常は意識しない。

(ちなみにspiの時はraspi-configとか、あまり考えなかった気がするけど、なぜだろう。忘れているだけ?)

 

話がそれたが、i2cデバイス認識しているか確認してみる。

もちろん回路接続しないと、ラスパイ3からはi2cデバイスは存在しない事になるので注意。

> sudo i2cdetect -y 1

ずらずらっと出力されるが、以下が BMP085を認識した、という証拠らしい。

70: -- -- -- -- -- -- -- 77 

 

次は実際にgpioを読むための プログラムを動作させてみる。