はじめに
Raspberry Piや電子回路等ド素人が温度センサーをつなげて、Pythonでそれを取得するまでの備忘録です。
なお、ほとんどが他の記事から内容を流用していますので、参考サイトをそのまま見てもらう方がわかりやすいかもしれません。
最初にすること
もちろん、Raspberry Piの購入です。この辺はざっくり調べると今時点(2017年2月上旬)では、Raspberry Pi 3 Model B
でよさそうです。
アマゾンで適当に、本当に適当に購入します。もっとじっくり調べれば値段は抑えられるかもしれませんが、まぁいいでしょう。
また、センサーについても具体的に欲しいものが決まっていませんでしたので、次のセットを購入。使いもしないセンサーもあるため、大分割高ですが、まぁいいでしょう。
Amazon.co.jp: ベスト センサーモジュール キット 20種セット
プライム会員なので、デフォルトのお急ぎ便のままで注文したら24時間以内に届きました。(これはこれで良いのか悪いのか・・・)
Raspberry Piが届いたら、SDカードにOSイメージを書き込み
1. SDカードの接続
SDカードはそのままSDカードのスロットのあるPCがありましたので、そちらを利用します。無ければ何かしらのアダプターが必要でしょう。
2. SDカードへのイメージ書き込み用ソフトのダウンロード
SDカードに書き込むためのDD for Windows Ver.0.9.9.8
を以下よりダウンロード。
DD for Windows - Tech Info
3. OSのダウンロード
RaspbianのLite版(raspbian_lite-2017-01-10
)というのを以下よりダウンロード。
Index of /pub/raspberrypi/raspbian_lite/images
4. DDでSDカードへイメージ書込み
自分の環境はWindows7なので、DDWin.exe
を実行する際、右クリックして[管理者として実行]で起動します。
起動後、imgファイルを選択して書込みします。
5. SSH接続用の対応
SSH接続する場合、bootパーティションにssh
というファイルが必要とのことなので作成します。(新規テキストファイルの作成などでファイルを作成して名前をssh
にする)
6. SSH接続用のソフトのダウンロード
SSH接続にはPuTTYを使用することにします。無ければ以下からダウンロードします。
PuTTY ごった煮版
Raspberry Piの起動とPythonの確認
1. 接続準備
SDカードをラズパイに差込、LANケーブルを繋げて、電源を接続。これでもうラズパイは起動するようですね。
2. 接続用の設定確認
IPアドレスが分からないと接続できませんので、使用している環境での必要な方法で確認します。今回はルータでの管理画面からIPアドレスを確認しましたが、コマンドプロンプトで、arp -a
とするなど、いくつか方法はあるようです。
3. PuTTYから接続
一番どきどきするところですよね。といってもIPアドレスが見えてる時点で、もう何かしら動いているのはわかっていましたが、ちゃんと接続できました。
初期状態のユーザ:pi
、パスワード:raspberry
でログインします。
4. Pythonの確認
最初にやるべきことは色々ありますが、とりあえずPythonを動かしてみます。何せ、Pythonもド素人ですから。
さくっと動くことがわかりました。
5. 本来すべき設定など
最初はまず最低限やりたいことを動かすためのことしかしませんので、この辺は飛ばしています。
センサーを繋げて動きをみる
さすがに、ここで手間取りました。
そもそも知識が無さ過ぎてどうつなげてよいかすらわからなかったからです。GPIO
やI2C
やら1-Wire
や、はてはSPI
などなど。
GPIO
でLEDを光らせるくらいはすぐでしたが、何らかの数値を出力するセンサーからその値を取得する方法がうまくいきません。
色々と記事を参考にしつつ試していましたが、センサーを購入したメーカー?のサイトにちゃんと使い方の記事がありましたので、そのまま試したらうまくできました。
1. DS18B20温度センサー
を繋げる
直接繋げます。接続するピンは参考にした記事の通りにDQピンをGPIO4に、VDDピンを3.3V、GNDピンをGNDに繋げました。
なお、図はFritzing Downloadからツールを入手して作成しました。最初配線がドラッグ&ドロップで何も反応しないのでおかしいなと思いましたが、ファイルを新規作成したら普通に出来ました。こちらも色々と記事がありますが、見なくてもできるくらいとても簡単です。
2. 1線通信libaryをインストールする
sudo modprobe w1-gpio
sudo modprobe w1_therm
3. /boot/config.txtを修正する
sudo nano /boot/config.txt
dtoverlay=w1-gpio
4. Raspberry Piを再起動
sudo reboot
5. センサーを認識しているかの確認
ls /sys/bus/w1/devices/
28-
からはじまるものがあれば、それのはず。
6. センサーのテスト
cat /sys/bus/w1/devices/28-xxxx/w1_slave
xxxx
の部分は環境によって異なるので、28-
まで打ち込んだらTabで補完すればよいです。
7. Pythonで実行する
import time
while 1:
tempfile = open ("/sys/bus/w1/devices/28-XXXX/w1_slave")
thetext = tempfile.read()
tempfile.close()
tempdata = thetext.split("\n")[1].split(" ")[9]
temperature = float(tempdata[2:])
temperature = temperature /1000
print temperature
XXX
の部分は書き換える。
途中温度が変わったところは、手で覆ったり、息を吹きかけてみました。
普通の温度計と比べると、2~3度ほど高く計測されているみたいです。
こんな感じで、とりあえず最低限やってみたいことは実現できました。
たとえば、これをVPNで繋げて、温度確認できるようにしたり、赤外線送信モジュール?なりを使って、エアコンの温度調整をしたりとかやりようは色々とあるかと思います。