スマートメーターから取得した電力消費量を可視化する (1)機器の準備

# この記事について
ロームBP35C0-T01とESP-WROOM-32を使って、スマートメーターから取得した電力量を可視化します。
今回は機器の準備です。

# 前提
* スマートメーターが使われている家に住んでいること
* Bルートサービスの申し込みが済んでおり、IDとパスワードを入手している

## Bルートサービスの申込みについて
* すでにスマートメーターが取り付けられているお家の場合は、各地域の電力会社に申し込めば無料でBルートサービス用のID・パスワードを入手することができます。
  * なお、地域の電力会社（東京電力・中部電力など）ではなく電力自由化により他社新電力系の会社から電気を買っている場合でも、Bルートの申込みは地域の電力会社宛になります。
  * 東京電力の場合、IDを郵送で、パスワードをメールで、それぞれ送ってくれます。~~なんかちぐはぐな気が。~~
  * とりあえず「Bルートサービス」でぐぐってみましょう。
* スマートメーターすら付いていない場合、電力会社に言えば交換してくれるようです。詳しくは電力会社に確認してみてください。

# 今回使用する機器
* ROHM 無線通信モジュール BP35C0-T01 https://www.amazon.co.jp/dp/B06X9FGYRB/
* BP35C0-T01用アンテナ
* ESP-WROOM-32 開発ボード (どのメーカーのものでも良し）https://www.amazon.co.jp/s?k=esp-wroom-32
* ワイヤー類

トータル1万円くらいでしょうか。  
個人的には ESP-WROOM-32(以下ESP32)よりはESP-WROOM-02(以下ESP8266)のほうが好みなのですが、今回はとある理由によりESP32を使用します。理由は後述します。

# 機器の接続
## BP35C0-T01 の仕様書を読む
とりあえず [BP35C0-T01の仕様書](https://www.rohm.co.jp/documents/11546/4947397/bp35C0-T01_hardware_spec_v100_j.pdf) を読んでおきましょう。

## BP35C0-T01 と ESP-WROOM-32 の接続
ということで、仕様書をふまえて、BP35C0-T01 と ESP-WROOM-32 を接続してみます。
＃本当は Fritzing できれいな絵を書きたかったのですが、Fritzing用のBP35C0の絵がないようなので、しかたなく手書きで...
![bp35c0-t01-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169018/805619b2-806e-c049-f1d5-6035b159a85c.png)
3V3,GND,RX,TXを接続するだけのシンプルな配線です。
BP35C0-T01のCN3(画像の一番右側の列のピン)は使用しません。
ESP32開発ボードはメーカーによりGPIOのピン配列が異なるので、適宜合わせてください。
今回はESP32のUART2(GPIO17/GPIO16)を使用します。

### メモ：なぜESP32を使用するのか？
BP35C0の仕様により、UARTの通信速度は115200bpsです。
個人的な経験上、素のArduinoやESP8266の`SoftwareSerial`では、115200bpsの通信速度ではデータの取りこぼしが発生する可能性があります。
ESP32は`HardwareSerial`を3つ持っており、これであれば115200bpsの通信速度でも対応できる、ということで、今回はESP32を使用することにしました。

### BP35C0-T01 をブレッドボードで使う技
BP35C0-T01は3列のピンが実装されているため、そのままではブレッドボードに挿せません。
しかし、前述の通り、実際には3列のうち1列のピンは使用しません。
ということで、ちょっと工夫すればブレッドボードに挿せるようになります。

こんなものを用意します。スイッチサイエンスや秋月などで売ってます。（参考→ [足の長いピンソケット](https://www.switch-science.com/catalog/1418/) ）
![2019-05-01 21.21.47.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169018/330cbb28-47d4-0399-abc9-47e404961f41.jpeg)
これを使用する2列だけに差し込めば、
![2019-05-01 21.22.18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169018/bc3297de-280a-895a-832b-c9522def8b74.jpeg)
ブレッドボードに挿せるようになります。あー便利:-)
![bp35c0-t01-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169018/d07cfdec-40bc-f7a1-e139-6eb9ac7485eb.png)

###配線例
私はこんな感じでブレッドボード上で配線しました。
![breadboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169018/223034b7-cec8-a2e0-fb4f-a7028be3b706.png)

#動作確認
Arduino IDEで以下のスケッチを作成し、ESP32に書き込みます。

```cpp:HardwareSerialTest.ino
HardwareSerial uart(2);

void setup() {
  Serial.begin(115200);
  uart.begin(115200);

  Serial.print("\n\nstart.\n");
}

void loop() {
  if (Serial.available()) {
    String in = Serial.readString();
    Serial.println(">>> " + in);
    uart.println(in);
  }
  if (uart.available()) {
    String out = uart.readString();
    Serial.println("<<< " + out);
  }
  yield();
}
```
Arduino IDEからシリアルモニタを開きます。シリアルモニタの入力欄に`SKVER`ENTERと入力し、以下のように反応が返ってくればOKです。

```
>>> SKVER
<<< EVER 1.5.2
OK
```

今回はここで一旦終了です。

#次回予告
次回は、実際にスマートメーターから電力の数値を取得します。

# ここまで読んで、「めんどくせー」と思った人は
ここに書いてあることがめんどくさいと感じた人は、[Nextdrive Cube J1](https://www.amazon.co.jp/dp/B07PY1J435/) を買いましょう。
何もしないでも、スマホの画面からスマートメーターからの電力消費量を見ることができます。
＃qiitaを読んでいる人がそんなことを考えるとは思いたくないですがｗ