Raspberry Pi と 1-wireデバイス

Raspberry Pi と 1-wireデバイス

1-wire は非同期シリアルインターフェースで
1本の信号線を使ってデータの送受信ができるインターフェース

信号線が1本でも
複数デバイスを接続することができ
電源を信号機からとることもできる

通信速度は 15.4kbps
125kbps となっていて
I2C SPIに比べると低速

個々の 1-wire デバイスには
ROM ID
という重複しない固有IDが振られているので
同じ種類のデバイスを
同じ 1-wire 上のパス上に複数接続できる

これはIPで振り分けている複数のパソコンが
インターネットに接続できる
ように
複数の接続が可能

例えば20個の温度の監視をするときにも
使用する Raspberry Pi のGPIOポートは
1つで済む

まずは実践したほうがわかりやすいので実験

使うものは
1-wire デバイスの温度センサーDS18B20

カーボン抵抗(炭素皮膜抵抗) 1/4W 2.2kΩ

ジャンパーワイヤー 3本

そしてブレッドボードと raspberry Pi 本体

Amazon で調べたけどみあたらないので
今回も秋月電子でネットで購入

複数の抵抗をかったためわかりにくいので

カラー抵抗値の写真早読み表!

をみて
一番右の金色以外すべて赤が 2,2 kΩなので
これを使う

そして配線
3.3V 左下11番め
GPIO 4 左下4番め
GND 左上3番め
から
ブレッドボードにさす
さすときに、これらを縦に同じ列にする

そして
3.3V と GPIO 4 のピンの部分へまたぐように
2.2KΩの抵抗をさす

そして、
GPIO 4
3.3V
GND
のそれぞれの横の列と同じようになるように
温度センサーDS18B20
をさす

センサーには向きがあるので注意
今回、反応しなかったので
検索したところ

[コラム] 第9回『1-wire温度センサーで部屋の温度を測定しよう』


接続例がでていたので、それを参考にさせてもらいました
どうやら文字がかかれていて
1番左がGND
真ん中が GPIO 4
一番右が 3.3V
なるようです

GND側に抵抗を入れるのがプルダウン

+のほうに抵抗を入れるのがプルアップ

今回はプルアップを行う

配線ができても、そのままだと Raspberry Pi は
1-wire が有効になっていないので使えない

sudo vim /etc/modules 

でファイルを開いて編集する

最終行に

w1-gpio
w1-therm

を追記する

編集が終わったら再起動することで
設定が有効になり
1-wire デバイスを使えるようになる

一時的に使うのなら

sudo modprobe w1-gpio 
sudo modprobe w1-therm

を実行することで使えるようになる

ただしこれだけだと再起動すると使えない状態に戻る

設定ができたら、次に 1-wire デバイスのIDを調べる
1-wire デバイスには ROM ID というIDが振られているので
1-wireデバイスを配線したら

ls /sys/bus/w1/devices/

で調べると

28-000006479c5b

みたいに
28-0000 ではじまるシンボリックリンクがみつかる

これが接続しているデバイスのIDになる
ちなみに、何も接続していないと

w1_bus_master1

として表示される

これで認識しているのがわかったので
次に温度センサーの値を取得

cat /sys/bus/w1/devices/28-000006479c5b/w1_slave 

で値を得ることができる

実行結果は

c6 01 4b 46 7f ff 0a 10 17 : crc=17 YES
c6 01 4b 46 7f ff 0a 10 17 t=28375

この2行めの
t=28375
が温度になる
これは1000倍された値のため
実際の温度は 28.375 度となる

このままだと読みにくいけど
perl とかシェルスクリプトなどを使えば
温度だけを表示できるので見やすくできる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です