ラズパイでオフィス環境をセンシングしてグラフ化する【ハード準備編】(2/4)

[ラズパイでオフィス環境をセンシングしてグラフ化する](https://qiita.com/tnagao3000/private/8ccebfb955f42d8138a3)のハード準備編です。

この記事では次の作業を行います。

- [ラズパイにsshでログインできるようにする](#%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E3%81%ABssh%E3%81%A7%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B)
- [ラズパイのGPIOピンを設定する](#%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E3%81%AEgpio%E3%83%94%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B)
- [BME280をつなぐ](#bme280%E3%82%92%E3%81%A4%E3%81%AA%E3%81%90)
- [TSL2561をつなぐ](#tsl2561%E3%82%92%E3%81%A4%E3%81%AA%E3%81%90)
- [MH-Z19をつなぐ](#mh-z19%E3%82%92%E3%81%A4%E3%81%AA%E3%81%90)

## ラズパイにsshでログインできるようにする

HDMIモニターでの作業は辛いため、まずはPCからsshログインできるようにします。
### パスワードを設定する

piとrootのパスワードを設定します。
piの初期パスは raspberry です。

```bash
pi@raspberrypi:~ $ passwd
pi 用にパスワードを変更中
現在の UNIX パスワード:
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ sudo passwd
新しい UNIX パスワードを入力してください:
(以下略)
```

### WiFiにつなぐ
画面右上のプルダウンから選択し、接続します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/32fd335c-b09b-6f6c-aeee-7d3b7b4af8d7.png)

### ssh接続を許可する
画面右上のメニューから 設定 → RaspberryPiの設定 → インターフェース を選択してsshを有効にします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/c31acaa3-b878-954b-baac-4e8280894db8.png)

### ホスト名を設定する
複数のラズパイがあるとワケが分からなくなるのでホスト名を設定します。
先のssh接続と同様に RaspberryPiの設定 → システム で行います。

### ログイン可能なユーザーをpiに絞る
念のためsshd_configにAllowUsersを追記します。

```bash
root@raspi-is:~#  grep AllowUsers  /etc/ssh/sshd_config 
AllowUsers pi
root@raspi-is:~#  systemctl reload ssh
root@raspi-is:~# 
```

## ラズパイのGPIOピンを設定する

今回使用するセンサーはI2CまたはUARTでラズパイに接続します。
ラズパイ側でこれらを使用可能にします。

### ラズパイのピン配列と今回使用するピンについて

設定を行う前にラズパイのピン配列について確認します。
公式が分かりづらかったので別のところから引用させて頂きます。

次の通りです。
https://pc.watch.impress.co.jp/docs/column/nishikawa/1006048.html

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/1dfe1aa9-1254-b999-6cc9-6b237d9ffe15.png)

今回使用するセンサーとは次の通りつなぎます。

|センサー|接続方法|I2C信号線 (SDA,SCL)|UART信号線 (TX,RX)|3.3V電源|5V電源|GND|
|:--|:--|:--:|:--:|:--:|:--:|:--:|
|BME280<br>TSL2561|I2C|○||○||○|
|MH-Z19|UART||○||○|○|
基本的にはそれぞれのセンサーに信号線２本と電源とGNDの計４本ずつがつながっているかたちになります。

### ラズパイでI2Cを有効にする
設定はGUIの RaspberryPiの設定 か、もしくはCUIの raspi-config で行います。
GUIの RaspberryPiの設定 であれば、インターフェースタブでI2Cの有効無効が指定できます。

CUIはraspi-configを起動し 5 Interfacing Options → P5 I2C で有効無効が指定できます。
次の通り。

```bash
pi@raspi-is:~ $ sudo raspi-config
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/c52977aa-4f83-b25b-05b6-78de301a1305.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/11bf4423-15d9-eb85-a7ed-98eb90fe95d4.png)

### ラズパイでUARTを有効にする
同様にraspi-configで設定します。
次の通り。

5 Interfacing Options → P6 Serial → (serialからログイン？) <いいえ>を選択 → (ポート有効？) <はい>を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/4b8ada8d-e868-ff9e-89b1-0c57fcfdcb0e.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/9daeec4b-8982-5e99-07a6-cfb46c40684c.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/55b89063-228c-112f-1ff2-ef22bfe94fd9.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/0f3b2fb0-8c7e-53a4-5572-13215783d171.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/fcb6b210-f239-9430-fcab-175d13e3941e.png)

その後 serial-getty@ttyS0.service が有効ならば無効にします。

```bash
root@raspi-is:~# systemctl status serial-getty@ttyS0.service
● serial-getty@ttyS0.service - Serial Getty on ttyS0
   Loaded: loaded (/lib/systemd/system/serial-getty@.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-12-21 04:29:57 UTC; 4s ago
     Docs: man:agetty(8)
           man:systemd-getty-generator(8)
           http://0pointer.de/blog/projects/serial-console.html
 Main PID: 19561 (agetty)
   CGroup: /system.slice/system-serial\x2dgetty.slice/serial-getty@ttyS0.service
           └─19561 /sbin/agetty --keep-baud 115200,38400,9600 ttyS0 vt220

12月 21 04:29:57 raspi-yh systemd[1]: Started Serial Getty on ttyS0.
root@raspi-is:~# 
root@raspi-is:~# systemctl stop serial-getty@ttyS0.service
root@raspi-is:~# systemctl disable serial-getty@ttyS0.service
Removed /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service.
```

## BME280をつなぐ
BME280は温度、湿度、気圧が計測できるセンサーです。
http://akizukidenshi.com/catalog/g/gK-09421
http://akizukidenshi.com/download/ds/akizuki/AE-BME280_manu_v1.1.pdf

電源電圧は1.71～3.6Vで、I2CまたはSPIで通信できます。
今回はI2C(アドレスは0x76)になるよう、次の通り接続します。

|センサー側ピン|ラズパイ側ピン|補足|
|:--|:--|:--|
|(1) VDD(電源+)|(pin01)<br>3.3V電源|1.71～3.6V|
|(2) GND|(pin09) GND||
|(3) CSB(チップ選択)|(pin01)<br>3.3V電源|I2CとSPIの選択。<br>I2CならJ3をジャンパするか、こことVDDを接続。|
|(4) SDI(データ入力)|(pin03) SDA1|信号線|
|(5) SDO(データ出力)|(pin09) GND|I2Cでセンサーを識別するアドレスを選択。<br>GNDをつなぐとデフォルト[0x76]。|
|(6) SCK(クロック入力)|(pin05) SCL1|信号線|


|センサー側ジャンパ|状態|補足|
|:--|:--|:--|
|J1|オープン|ラズパイで対応|
|J2|オープン|ラズパイで対応|
|J3|オープン|CSBで対応|

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/5edb7936-3ffb-92ce-8444-9b81be177ce6.png)

正しく接続出来るとi2cdetectでアドレスが出てきます。

```bash
pi@raspi-is:~ $ 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: -- -- -- -- -- -- 76 --                         
```

## TSL2561をつなぐ
TSL2561は照度が計測できるセンサーです。
http://akizukidenshi.com/catalog/g/gM-08219
https://learn.adafruit.com/tsl2561?view=all

次のドキュメントを参考にI2C(アドレスは0x39)で接続します。
https://learn.adafruit.com/tsl2561?view=all#wiring-up-the-sensor

|センサー側ピン|ラズパイ側ピン|補足|
|:--|:--|:--|
|Vin|(pin01) 3.3V電源||
|GND|(pin09) GND||
|3vo|未接続||
|Addr|未接続|I2Cアドレスが選択できる。<br>未接続ならデフォルト[0x39]。|
|Int|未接続||
|SDA|(pin03) SDA1|信号線|
|SCL|(pin05) SCL1|信号線|


![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/dd49c3c1-170d-64c7-7c12-f465cc59a227.png)

正しく接続出来るとi2cdetectでアドレス(39)が出てきます。

```bash
pi@raspi-is:~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- 76 --                         
```

## MH-Z19をつなぐ
MH-Z19はco2濃度が計測できるセンサーです。
https://ja.aliexpress.com/item/1PCS-module-MH-Z19-infrared-co2-sensor-for-co2-monitor-Free-shipping/32371956420.html
http://www.winsen-sensor.com/e/search/result/?searchid=745
http://www.winsen-sensor.com/d/files/PDF/Infrared%20Gas%20Sensor/NDIR%20CO2%20SENSOR/MH-Z19%20CO2%20Ver1.0.pdf
http://www.winsen-sensor.com/d/files/infrared-gas-sensor/mh-z19b-co2-ver1_0.pdf

ECサイトにはMH-Z19と書いてありましたが、届いたものにはMH-Z19Bと記載されていました。
ドキュメントを見比べるとMH-Z19Bではコマンドが増えてるようです。

このセンサーからはPWMまたはUARTで値が取れます。
今回はUARTを使います。

|センサー側ピン|ラズパイ側ピン|補足|
|:--|:--|:--|
|Pin1 Vout|未接続||
|Pin2 UART(RXD)|(pin08) TXD0|信号線|
|Pin3 UART(TXD)|(pin10) RXD0|信号線|
|Pin4 SR|未接続|Reserved|
|Pin5 HD|未接続||
|Pin6 Vin|(pin02) 5V電源||
|Pin7 GND|(pin06) GND||
|Pin8 AOT|未接続|Reserved|
|Pin9 PWM|未接続||

![image.png](https://qiita-image-store.s3.amazonaws.com/0/26808/3a8811c0-bea4-bdab-cc82-bdc29f70f984.png)

以上で接続完了です。

次は [ラズパイでオフィス環境をセンシングしてグラフ化する【センサー値取得編】(3/4)](https://qiita.com/tnagao3000/private/b453811224caab9eb315) です。