スマートホーム構築記

IoTの恩恵を受けたいけど家庭用はなかなか出てこない。なら作ろうというブログ

Raspberry Pi3 と K09421(BME280使用)のI2C接続

Raspberry Pi3 のI2Cを有効化

Raspberry Pi 3は設定を何もしないとI2C通信ができるようになっていません。
なので設定からI2C通信を有効化します。

$ sudo raspi-config

とコンソールに入力します。
f:id:kagemomiji:20160811154956p:plain
するとこのような画面が表示されます。
この中から 9 Advanced Optionsを選択してEnterを押してください。
f:id:kagemomiji:20160811155336p:plain
次にこのような画面が表示されます。その中のA6 I2Cを選択してEnterを押してください。
f:id:kagemomiji:20160811155521p:plain
最後にこの画面が表示され<はい>を選択するとI2Cが有効化されます。
その後最初の画面に戻るのでFinishを選択して終了してください。
以上がI2Cの有効化手順となります。

K09421(BME280使用)の準備

接続するセンサを準備します。

f:id:kagemomiji:20160811160046j:plain:w360

このように袋のなかにセンサ本体とピンが別々にはいっています。これらは半田づけをしてつけなければなりません。

f:id:kagemomiji:20160811160253j:plain:w360

まずこのようにピン6本セットをニッパーなどをつかって切り出します。


f:id:kagemomiji:20160811160413j:plain:w360
できたらこのように組み合わせて半田づけをしていきます。少し弱く細い半田ごてをお進めします。30Wは若干強すぎる気がしました。
f:id:kagemomiji:20160811163012j:plain:w360
つけ終わるとこのような感じになります。
次にセンサのI2C通信を有効化します。
f:id:kagemomiji:20160811160714j:plain:w360
図のように基盤右上のJ3に半田を乗せて導通させます。
これでセンサの準備が完了です。

Raspberry pi3とセンサの配線

K0942は下表のようなピン構成となっています。

ピン番号 信号
1 Vdd
2 GND
3 DNC
4 SDA
5 VccかGNDに接続するアドレス設定用ピン(通常はGND)
6 SCL

そこで配線を図に起こすと以下のようになります。
f:id:kagemomiji:20160811171154p:plain:w360
これをブレッドボードとジャンパ線を使って実装すると以下のようになります。
f:id:kagemomiji:20160811161114j:plain:w360

Raspberry Pi3からセンサの認識

次に接続したセンサが認識されているかを確認します。

$sudo apt-get install i2ctools 

上記コマンドでi2cを扱うためのツールをインストールします。
完了したら以下のコマンドを入力します。

 $ i2cdetect -y 1
  • y は対話式を無効にする。1はi2cのbus番号です。

正常であれば以下の出力が得られます。

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --

これはI2C通信を行っているアドレスを検出して出力するものです。
K0942の取り扱い説明書にはデフォルトアドレスは0x76とのことですから認識されていることが確認できました。

次にこのセンサの値を確認します。
この部分のやり方はよくわかっていないので何かしら簡単にできるツールを探してくることにしました。

www.switch-science.com
こちらのSWITCH SCIENCEでサンプルプログラムのpythongithubで公開されています。
紹介したページの下のほうにgithubへのリンクが張ってあります。

 $sudo apt-get install python-smbus

サンプルプログラムはsmbusを使用するためライブラリをインストールしておきます。

 $git clone https://github.com/SWITCHSCIENCE/BME280.git
 $cd BME280/Python27
 $python BME280_sample.py

サンプルプログラムをダウンロードして起動します。
すると以下のような出力が得られます。

temp:29.10 ℃
pressure:1006.03 hPa
hum: 50.57 %

これでセンサが正常に動作していることが確認できました。
若干値に誤差があるように感じるので校正が必要なようですが保留としたいと思います。
次はセンサ値を定期的に取得してログとして残すことに挑戦します。