Raspberry Pi - 1 - はじめのいっぽ（温度センサーを繋げて温度を表示してみる）

# はじめに
Raspberry Piや電子回路等ド素人が温度センサーをつなげて、Pythonでそれを取得するまでの備忘録です。
なお、ほとんどが他の記事から内容を流用していますので、参考サイトをそのまま見てもらう方がわかりやすいかもしれません。


# 最初にすること
もちろん、Raspberry Piの購入です。この辺はざっくり調べると今時点(2017年2月上旬)では、`Raspberry Pi 3 Model B` でよさそうです。
アマゾンで適当に、本当に適当に購入します。もっとじっくり調べれば値段は抑えられるかもしれませんが、まぁいいでしょう。

[Amazon.co.jp | Raspberry Pi3 Model B ボード＆ケースセット 3ple Decker対応 (Element14版, Black) | Physical Computing Lab | マザーボード](http://amazon.co.jp/dp/B01CHJRAOK)

で、次のセットを購入しました。
![image](https://qiita-image-store.s3.amazonaws.com/0/156225/72392e5c-b393-e886-a4ce-afa583d028a4.png)

また、センサーについても具体的に欲しいものが決まっていませんでしたので、次のセットを購入。使いもしないセンサーもあるため、大分割高ですが、まぁいいでしょう。
[Amazon.co.jp： ベスト センサーモジュール キット 20種セット](https://amazon.co.jp/dp/B00YR0COXA)

プライム会員なので、デフォルトのお急ぎ便のままで注文したら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](http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows#s74c46f6)

**3. OSのダウンロード**
RaspbianのLite版(`raspbian_lite-2017-01-10`)というのを以下よりダウンロード。
[Index of /pub/raspberrypi/raspbian_lite/images](http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_lite/images/)

**4. DDでSDカードへイメージ書込み**
自分の環境はWindows7なので、`DDWin.exe`を実行する際、右クリックして[管理者として実行]で起動します。
起動後、imgファイルを選択して書込みします。

**5. SSH接続用の対応**
SSH接続する場合、bootパーティションに`ssh`というファイルが必要とのことなので作成します。（新規テキストファイルの作成などでファイルを作成して名前を`ssh`にする）

**6. SSH接続用のソフトのダウンロード**
SSH接続にはPuTTYを使用することにします。無ければ以下からダウンロードします。
[PuTTY ごった煮版](http://yebisuya.dip.jp/Software/PuTTY/)


# Raspberry Piの起動とPythonの確認
**1. 接続準備**
SDカードをラズパイに差込、LANケーブルを繋げて、電源を接続。これでもうラズパイは起動するようですね。

**2. 接続用の設定確認**
IPアドレスが分からないと接続できませんので、使用している環境での必要な方法で確認します。今回はルータでの管理画面からIPアドレスを確認しましたが、コマンドプロンプトで、`arp -a`とするなど、いくつか方法はあるようです。

**3. PuTTYから接続**
一番どきどきするところですよね。といってもIPアドレスが見えてる時点で、もう何かしら動いているのはわかっていましたが、ちゃんと接続できました。
![image](https://qiita-image-store.s3.amazonaws.com/0/156225/0927fb84-7616-b748-8eb4-727cb4f9e60a.png)

初期状態のユーザ:`pi`、パスワード:`raspberry`でログインします。

**4. Pythonの確認**
最初にやるべきことは色々ありますが、とりあえずPythonを動かしてみます。何せ、Pythonもド素人ですから。
![image](https://qiita-image-store.s3.amazonaws.com/0/156225/d649baef-9e1a-5363-6fee-dfe9542a2f1b.png)

さくっと動くことがわかりました。

**5. 本来すべき設定など**
最初はまず最低限やりたいことを動かすためのことしかしませんので、この辺は飛ばしています。


# センサーを繋げて動きをみる
さすがに、ここで手間取りました。
そもそも知識が無さ過ぎてどうつなげてよいかすらわからなかったからです。`GPIO`や`I2C`やら`1-Wire`や、はては`SPI`などなど。
`GPIO`でLEDを光らせるくらいはすぐでしたが、何らかの数値を出力するセンサーからその値を取得する方法がうまくいきません。

色々と記事を参考にしつつ試していましたが、センサーを購入したメーカー？のサイトにちゃんと使い方の記事がありましたので、そのまま試したらうまくできました。

**1. `DS18B20温度センサー`を繋げる**
直接繋げます。接続するピンは参考にした記事の通りにDQピンをGPIO4に、VDDピンを3.3V、GNDピンをGNDに繋げました。
![image](https://qiita-image-store.s3.amazonaws.com/0/156225/96078b0f-c115-3cf9-aabe-b7d05a3e3f98.png)
なお、図は[Fritzing Download](http://fritzing.org/download/)からツールを入手して作成しました。最初配線がドラッグ＆ドロップで何も反応しないのでおかしいなと思いましたが、ファイルを新規作成したら普通に出来ました。こちらも色々と記事がありますが、見なくてもできるくらいとても簡単です。

**2. 1線通信libaryをインストールする**

```bash
sudo modprobe w1-gpio
sudo modprobe w1_therm
```

**3. /boot/config.txtを修正する**

```bash
sudo nano /boot/config.txt
```
```bash:/boot/config.txt
dtoverlay=w1-gpio
```

**4. Raspberry Piを再起動**

```bash
sudo reboot
```

**5. センサーを認識しているかの確認**

```bash
ls /sys/bus/w1/devices/
```

`28-`からはじまるものがあれば、それのはず。

**6. センサーのテスト**

```bash
cat /sys/bus/w1/devices/28-xxxx/w1_slave
```
`xxxx`の部分は環境によって異なるので、`28-`まで打ち込んだら<kbd>Tab</kbd>で補完すればよいです。

**7. Pythonで実行する**

```py:サンプルコードほぼまんま
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`の部分は書き換える。

実行結果。
![image](https://qiita-image-store.s3.amazonaws.com/0/156225/e8947a3f-6cd5-54ed-1982-0b47356928cc.png)

途中温度が変わったところは、手で覆ったり、息を吹きかけてみました。
普通の温度計と比べると、2~3度ほど高く計測されているみたいです。

こんな感じで、とりあえず最低限やってみたいことは実現できました。

たとえば、これをVPNで繋げて、温度確認できるようにしたり、赤外線送信モジュール？なりを使って、エアコンの温度調整をしたりとかやりようは色々とあるかと思います。


# 参考サイト
- [Raspberry Pi 3を買ってみた、必要な物やOSのインストールなど | 純規の暇人趣味ブログ](https://jyn.jp/raspberrypi3-getting-started/#Raspberry_Pi-2)
- [Raspberry Piで温度センサーを作動する | osoyoo.com](http://osoyoo.com/ja/2015/10/06/raspberry-pi-2-and-dh18s20-temperature-sensor-project/)