Raspberry Pi ZeroからさくらのIoTプラットフォーム(β)へ接続する(回路接続編)

# Raspberry Pi ZeroからさくらのIoTプラットフォーム(β)へ接続する

Raspberry Pi ZeroとさくらのIoTプラットフォーム(β)をI2Cで接続し、いくつかのコマンドを実行します。
さくらのIoTプラットフォーム(β)は**Arduinoシールドボード-β版**を使用します。ブレイクアウトボード（検証ボード）を使用する場合は電圧が異なりますので注意してください。

**静電気などで回路が破壊される場合もありますので、十分に注意して作業を行ってください。**

## 仕様に関する資料

### Raspberry Pi Zero

[Raspberry Pi A+ , B+ , Zero, Pi 2 GPIO Pinout](https://www.element14.com/community/docs/DOC-80667/l/raspberry-pi-a-b-zero-pi-2-gpio-pinout)

### さくらのIoTプラットフォーム(β)

[さくらの通信モジュール（β版）SCM-LTE-Beta 製品データシート](https://iot.sakura.ad.jp/developer/pdf/sakura_module_datasheet_latest.pdf)
[さくらの通信モジュール用 Arduino シールド SCO-ARD-01 取扱説明書](https://iot.sakura.ad.jp/developer/pdf/sco-ard-01_manual.pdf)

## Raspberry Pi Zero側の準備

### OSをインストールする

[公式サイト](https://www.raspberrypi.org/downloads/raspbian/)から**RASPBIAN JESSIE LITE**をダウンロードし、SDカードにインストールしてください。
Windows環境でのインストールについては[INSTALLING OPERATING SYSTEM IMAGES USING WINDOWS](https://www.raspberrypi.org/documentation/installation/installing-images/windows.md)を参考してください。

作業ステップの例を以下に示します。

1. RASPBIAN JESSIE LITEをダウンロードする
2. ZIPファイルを7-Zipなどで解凍する
3. [Win32DiskImager](https://sourceforge.net/projects/win32diskimager/)を使ってRASPBIANをSDカードにインストールする

### I2C toolsをインストールする

Raspberry Pi ZeroにはオンボードNICが無いため、直接ネットワークに接続することができません。USBハブを介してUSB-NICを用いて接続するか、オンボードNICを有するRaspberry Pi 2にSDカードをマウントしてI2C toolsをインストールします。
RASPBIANにログインし、I2C toolsをインストールします。

I2C toolsをインストールするコマンドの例を以下に示します。

```
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install i2c-tools
sudo apt-get clean
```

Raspberry Pi 2を用いての作業ステップの例を以下に示します。

1. Raspberry Pi 2にethernetケーブル(LANケーブル)、USBキーボード、ディスプレイを接続します
2. Raspberry Pi 2にRASPBIANがインストールされたSDカードをマウントします
3. Raspberry Pi 2に電源をつなぎ、起動します
4. RASPBIANログインし、sudo apt-get install i2c-tools コマンドでI2C toolsをインストールします
5. sudo poweroff コマンドでRaspberry Pi 2の電源を切ります
6. Raspberry Pi 2からRASPBIANがインストールされたSDカードを取り外します
7. Raspberry Pi ZeroにRASPBIANがインストールされたSDカードをマウントします

## Raspberry Pi ZeroとさくらのIoTプラットフォーム(β)を結線する

それぞれのピンアサインは以下の通りです。対応するピン同士を接続してください。

|Raspberry Pi Zero|さくらのIoTプラットフォーム(β)|
|---|---|
|3.3V DC Power (PIN#01)| +3.3V |
|Ground (PIN#06)| GND |
|DC Power 5V (PIM#02)| VIN |
|GPIO03(SCL1,I2C) (PIN#05)| I2C_SCL1 |
|GPIO02(SDA1,I2C) (PIN#03)|I2C_SDA1|

結線例を以下に示します。
**結線前にRaspberry Pi Zeroの電源がオフになっている事を必ず確認してください。**
**下記配線図は念入りに確認してありますが、接続前に必ず最新のマニュアルを確認し、ピンアサインに間違いが無いかご自身で確認してください。（特に電源の接続を間違えた場合などに、回路が破壊される場合があります。）**

![スライド10.PNG](https://qiita-image-store.s3.amazonaws.com/0/151455/a890d833-c455-5198-243d-d1f41eec8591.png)

## Raspberry Pi Zero側でコマンドを発行してさくらのIoTプラットフォーム(β)との接続を確認する

結線が終わったらRaspberry Pi Zeroの電源を投入し、コマンドを実行してRaspberry Pi ZeroとさくらのIoTプラットフォーム(β)接続されていることを確認します。

![スライド8.PNG](https://qiita-image-store.s3.amazonaws.com/0/151455/291a5113-236e-7fbe-7875-f69e0ca5d67c.png)

### 接続状態の確認

```
sudo i2cdetect -y 1
```

さくらのIoTプラットフォーム(β)のみを接続している場合は **4f** と表示されます。

### 製品IDの取得

```
sudo i2cset -y 1 0x4f 0xa0 0x00 0xa0 i
sudo i2cdump -y 1 0x4f i
```

01 02 01 00 02 と表示されます。
~~マニュアルによると上記の値は以下の意味になるはずですが、パリティの値がマニュアルの記載内容と一致しないためこの部分に関しては別途確認してアップデートします。~~
確認したところ以下の値で問題ありませんでした。お騒がせしました。(2017/03/21 update)

|OK | 返信オクテット数 | 製品ID(固定で01 00) | パリティ|
|---|---|---|---|
|01 | 02 | 01 00 | 02|

## 補足

1. コマンドについては実際に投入したものを記載していますが、作業メモからの転記の段階で脱落があるかもしれません。コメントでご指摘いただければと思います。
2. ~~実際にさくらのIoTプラットフォーム(β)のクラウド側へデータを送出するためにはパリティを含めた送信コマンドが必要となりますが、前述の通りパリティの値がマニュアル記載の物と一致しなかったため、原因を確認してから後日アップデートします。~~
  1. パリティの値はマニュアルにある通り「*パリティ P の計算方法は，要求であれば Q から A (N-1)までの， 応答であれば S から D (M-1)までの値を 1オクテット単位で排他的論理和*」で間違いありませんでした。
  2. うっかり頭1オクテットを抜かして計算していたので合わなかっただけでした。お騒がせいたしました。サジェスチョンいただきました関係各位に感謝します。
3. この内容は[【超緊急開催！】さくらクラブIoT福岡 ～小笠原さんを囲んで色々聞いてみよう～【LTしたいひと募集中！】](https://saku-love.doorkeeper.jp/events/58551?utm_campaign=event_58551&utm_medium=email&utm_source=ticket)のLTセッションのものと同じ内容になります。

## 履歴
- 2017/04/20
    - さくらさんのサービス開始に伴いましてタグを変更いたしました。タグ変更リクエストをいただきありがとうございました。