つれづれなるまゝに

単なる作業メモ。主に、Linux, arduino, raspberry piとか?

raspberry piで温度計測(TMP102)

2013-09-22 21:40:07 | raspberry pi
さて、次はraspberry piにTMP102を繋いでみます。

1) I2Cデバイスを扱えるようにする

ここを参考にさせていただきました。

1.1) /etc/modulesに以下一行を追加

i2c-dev

1.2) /etc/modprobe.d/raspi-blacklist.confで以下一行をコメントアウト

blacklist i2c-bcm2708

1.3) 再起動

1.4) 以下にてモジュールが組み込まれていることを確認

$ dmsg | grep i2c

1.5) i2cツールのインストール

$ sudo apt-get install i2c-tools


2) TMP102の接続

2.1) Revの確認

Rev1とRev2ではGPIOピンの配列が若干違うため、念のために確認しておく。確認方法は、ここここを参考にした。

私のは、ねじ止めの穴が開いてることから、Rev2であることが確認できた。またメモリが512MBなので、Rev2確定。

ちなみにcpuinfoは、

Hardware : BCM2708
Revision : 000d

でした。

2.2) ピン接続

ここや本を参考にピン配置を確認。
ちなみにワイヤーはArduinoがオス-オスに対して、raspberry piはメス-オス。同じなら出費が減らせたのだが。。。

あと、GPIOはSoCに直結とのことで、静電気には注意が必要と聞いているので、金属物にタッチ。

こんな感じ?



3) 動作確認

再度起動後、動作確認。またまた、ここを参考にさせていただいてます。

3.1) i2cレベルでの動作確認

pi@raspberrypi:~$ sudo i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

ちゃんと0x48と出ています。

ここで1点補足。参考元のサイトでは、コマンドが"sudo i2cdetect 0"となっています。
最初はそのままコマンド打ってみたところ、アドレスが表示されず、接続間違えた?と焦りました。

i2cdetect -hでヘルプをみたことろ、-lというオプションを見つけたので打ってみる。

pi@raspberrypi:~$ sudo i2cdetect -l
i2c-0 i2c bcm2708_i2c.0 I2C adapter
i2c-1 i2c bcm2708_i2c.1 I2C adapter

あぁ、I2Cが2つあるのに気付く。手元の本でピン配列を再度確認すると、接続してるのはi2c-1の方でした。
ちなみにRev1では両方ともi2c-0でした。

3.2) 値取得

参考先のシェルスクリプトを使用させていただきました。
ここでも注意。アドレスが 0x49 -> 0x48、i2cが 0 -> 1 なので、i2cgetのパラメータは以下になります。

sudo i2cget -y 1 0x48 0x00 w

2行あるので変更忘れずに。

pi@raspberrypi:~$ ./tmp102.sh
30.5625

値がとれました :-)

本日は、以上!

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。