raspberry pi zeroで温度・湿度・気圧を測定する

raspberry pi zero wh買ってみたもののOSインストールしただけで放置状態だったので、
部屋のコンデションを測定してみようかと。

## 必要なもの
* raspberry pi zero wh
![001.png](https://qiita-image-store.s3.amazonaws.com/0/37576/c4ae136e-ce28-fbff-c857-169f59f7ab31.png)

* [HiLetgo® BME280 温度 湿度 気圧 センサー](https://www.amazon.co.jp/gp/product/B01M98R905/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1)
![002.png](https://qiita-image-store.s3.amazonaws.com/0/37576/3dd8b445-c3bd-351d-63e1-7ea2d40ab9c0.png)

* [ELEGOO 50 PCS オスメスジャンパーワイヤ200mm (無料 170 タイポイント ブレッドボード)](https://www.amazon.co.jp/gp/product/B06ZZXH4XT/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1)
![003.png](https://qiita-image-store.s3.amazonaws.com/0/37576/9bfbdd7c-81bb-7b73-1354-37618189396e.png)

* 電源など

※前提
raspberry piには、OSがインストールされ、sshとかネットワークの設定が完了していること。

## まずは配線
|sym|   |pin|
|:-:|:-:|:-:|
|VCC| → |11|
|GND| → |6|
|SCL| → |5|
|SDA| → |3|
|CSB| → |17|
|SDO| → |6 or 14|


pin番号はこの向きで

![004.png](https://qiita-image-store.s3.amazonaws.com/0/37576/958e4ed2-e031-120b-4dda-525ac5ea30a1.png)


| | | | | | | | | | |
|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
| 2 | 4 | 6 | 8 |10 |12 |14 |16 |18 |20 |
| 1 | 3 | 5 | 7 | 9 |11 |13 |15 |17 |19 |


って感じになっています。

ブレッドボードで配線。
![005.png](https://qiita-image-store.s3.amazonaws.com/0/37576/5119464c-fb5e-5596-dcda-ac231ca9d667.png)

とりあえず、動作確認だけであれば、はんだ付けはしなくても大丈夫。

## raspberry pi zero

### I2C用モジュールの有効化
```bash
$ sudo raspi-config
```

｢3 interfacing options｣を選択
![img1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37576/b53ffb4c-a91b-7c15-15dd-f0c1c66e8f6f.png)

｢I5 I2C｣を選択
![img2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37576/ea308df7-2051-c3d2-a8e8-62996da5b4a2.png)

｢Yes｣を選択
![img3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37576/eb4d349c-323f-3071-ce13-bc3fee49226c.png)

｢Ok｣を選択
![img4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37576/2f32ecef-16e1-57eb-6b90-5c4fdbc14b97.png)

あとはメニューを閉じて完了。
※メニューに関してはOSのバージョンによって違うので注意です。

### インストール
```bash
$ sudo apt-get install i2c-tools
$ sudo apt-get install python3-smbus
```

### 動作確認
```bash
$ sudo i2cdetect -y 1
```

接触不良だと何も出てこない。

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

きちんと接続されていると

```
     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 --   
```

スイッチサイエンスさんがサンプルプログラムを公開しています。
[bme280_sample.py](https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py)

適当なディレクトリで

```bash
$ curl -L -O https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py
```

とりあえず、実行してみる。とpythonのバージョン違いでエラーになります。
```bash
$ python bme280_sample.py
  File "/home/Workspace/bme280_sample.py", line 95
    print "pressure : %7.2f hPa" % (pressure/100)
          ^
SyntaxError: invalid syntax

```

printを括弧で囲みます。(３箇所)
```diff
- print "pressure : %7.2f hPa" % (pressure/100)
+ print("pressure : %7.2f hPa" % (pressure/100))
```

で実行すると、またエラー
```bash
$ python bme280_sample.py
Traceback (most recent call last):
  File "/home/Workspace/bme280_sample2.py", line 3, in <module>
    from smbus2 import SMBus
ModuleNotFoundError: No module named 'smbus2'
```

エラーとなるので修正:3行目

```diff
- from smbus2 import SMBus
+ from smbus import SMBus
```

ふたたび、実行。
```bash
$ python bme280_sample.py
temp : 28.97  ℃
pressure : 1011.68 hPa
hum :  57.37 ％
```

とりあえず、値が取れているので、今回はここまで。
次回は、この値をどっかに保存しようかと思います。


## 参考
http://tk-thunder.hateblo.jp/entry/2018/02/04/210650
https://qiita.com/kamujun/items/51f85339bfd582b27752
http://kashiwamochi-raspi.blogspot.com/2016/10/blog-post_19.html