はじめに
ラズベリーパイを入手したは良いものの、これで何をしようか誰もが悩んだことがあるのではないでしょうか。例に漏れず僕も同じです。
さて、ひとしきり悩んだ後に決めたのはBME280というセンサを使用した温度、湿度、気圧の測定。
まぁ、単純にネット上の情報が多かったという理由なんですけどね!!
電子工作ド素人のメモですが一応残しておきます。
やることが決まれば早速準備に移りましょう。
まずは道具を揃えるところからです!大丈夫、アマゾンなら2日くらいで届けてくれますよ。
買うぞオラァ!
ブレッドボード
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- この商品を含むブログを見る
ジャンパーワイヤー(オス・メス)
ブレッドボード・ジャンパーワイヤ(メス-オス)(20cm)40本
- 出版社/メーカー: oem
- メディア: エレクトロニクス
- この商品を含むブログを見る
ジャンパーワイヤー(短)
サンハヤト ジャンプワイヤキット SKS-100 単線タイプでよく使用する短めジャンプワイヤのセット品
- 出版社/メーカー: サンハヤト
- メディア: Tools & Hardware
- この商品を含むブログを見る
BME280(今回のメイン)
HiLetgo BME280 大気圧センサ 温湿度センサー ブレイクアウト Arduinoに対応 [並行輸入品]
- 出版社/メーカー: HiLetgo
- メディア:
- この商品を含むブログを見る
Raspberry Pi3(分かっていると思うがこれがないと始まらん)
Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (4件) を見る
組むぞ!
下記を前提とします。
- Raspberry Pi OSインストール済み
- ネットワーク、SSHなど接続におけるセットアップ済み
はんだ付け
今回使用するセンサは端子と基板が別れているのではんだ付けが必須です。
ハンダゴテがないなら準備しておきましょう。ハンダもね。
こんな感じ。
「端子をブレッドボードに挿して、その上に基板を重ねてハンダ付けすると快適だよ^^^^^^」ってBOSS(上司)に教えてもらいました。
通信準備とか
さて、BME280はI2Cで制御するため、ラズパイのコンフィグからI2Cを有効にする必要があります。
$ sudo raspi-config
コンフィグ画面で
「5 Interfacing Options」→「P5 I2C」→「YES」を選択
I2Cを制御するツールをインストールします。
$ sudo apt-get install i2c-tools
Pythonのライブラリをインストールしておく。
$ sudo apt-get install python-smbus
スイッチサイエンス様が公開しているPythonのプログラムでセンサを制御します。
とりあえず保存しておきましょう。
配線
終わって見れば簡単だったんですが、正直一番苦労しました。
だって間違えて燃えたりしたら嫌じゃないですか!ネット上に同じケースが無かったので、断片的な情報を組み合わせてやりました。
一番参考にしたのは下記の記事です。本当にありがとうございます。
algorithm.joho.info
まずはBME280とラズベリーパイのGPIOポートの配線図をラクガキしました。
○の横の数字がGPIOのピンの番号です。
あとはラズベリーパイのGPIOも確認しておきましょう。
数字がGPIOのピン番号です。
配線した感じ
動かす!
配線が終わったらまずはI2Cがセンサを認識しているか確認します。
下記のコマンドを投げましょう。
$ sudo i2cdetect -y 1
$ sudo i2cdetect -y 1←エルではなく数字のイチです
そしてこんな結果が帰ってくれば動作確認OKです。
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 --
さて、いよいよPythonプログラムの実行です。
今回はPython3で実行しますので、下記のコマンドになります。
$ sudo python3 bme280.py
すると…
File "bme280.py", line 95 print "pressure : %7.2f hPa" % (pressure/100) ^ SyntaxError: invalid syntax
Oops!
エラー発生です。ん?よく見ると、print 〜ってのはPython2系の書き方ですね。
ちょっと修正しましょう。
面倒かもしれませんが、簡単ですよ。
$ sudo nano bme280.py
まずはエディタでプログラムを開きましょう。
ファイル名は自分でつけたものを指定してください。
おそらく3箇所あると思いますが、下記のようにprintメソッドが使われている箇所を変更します。
( )をつけるだけです。
print "pressure : %7.2f hPa" % (pressure/100) ↓に変更 print("pressure : %7.2f hPa" % (pressure/100))
修正できたら再度実行しましょう!ワクワク!!
Traceback (most recent call last): File "bme280.py", line 3, in <module> from smbus2 import SMBus ImportError: No module named 'smbus2'
あぁん?(ブチギレ)
なんか「smbus2」が見つからんとか言ってますね。
Python3の環境にライブラリがインストールされていないんでしょう。
下記のコマンドでさっさとインストールしてしまいます。
$ sudo pip3 install smbus2
※もしこのコマンドでエラーが出たらpip3をインストールしていない可能性があります。
下記でインストールしちゃいましょう。
$ sudo apt-get install python3-pip
さて、気を取り直して実行です!
$ sudo python3 bme280.py
temp : 23.21 ℃ pressure : 1003.94 hPa hum : 25.03 %
うおおおおおおおおおおおおおお!
とれた!とれました!なんだか湿度が微妙に低すぎる気もしますが、ひとまずOKですね!!!
次はもう少し工夫して見ましょう!
DBとかと連携したいですね!