EZ-BLEでI2C to BLEを試す

今回はCypressのEZ-BLEモジュールでI2C→BLE変換を試してみたいと思います。

EZ-BLEモジュール用プロジェクトの作成

I2C→BLE変換プロジェクトはCypress公式のPSoC-4-BLEのサンプルプロジェクトとして公開されています。
PSoC-4-BLE/100_Projects_in_100_Days/Day035_I2C_BLE_Bridge at master · cypresssemiconductorco/PSoC-4-BLE · GitHub
今回はこれをCYBLE-022001-00用にビルドして用いました。

I2C_BLE_Bridgeサンプルロジェクトを開き、プロジェクトのデバイスを変更します。
プロジェクトを右クリック→Device Selector
からCYBLE-022001-00を選択しました。

次にこちらを参考に、コンポーネントをアップデートしたり、Bootloadableを追加したりします。
必要に応じてピン配置を変える必要もあります。
EZ-BLE PRoC を使ってみる - たるたるソース

ビルドがうまく行ったら書き込みEZ-BLEモジュールの準備は完了です。

PCとの接続

PCとの接続方法はI2C_BLE_BridgeプロジェクトのドキュメントP5~7に書いてあるため省略します。
PSoC-4-BLE/I2C-BLE Peripheral.pdf at master · cypresssemiconductorco/PSoC-4-BLE · GitHub

ドキュメントのFigure 8 Enabling notificationsの画面が表示されればそれ以降はやらなくてOKです。
この画面に受信したデータが表示されます。

EZ-BLEにI2C信号を入力する

今回はI2Cのテスト信号としてESP32を用いました。
I2Cの信号が出ればなんでもOKです。

I2C_BLE_BridgeプロジェクトのI2Cモジュールのプロパティを見ると、slave addressは0x08になっています。
なので、0x08を送ってから送りたいデータを送ればOKです。

ESP32で使用したソースコードはこちらです。

#include <Wire.h>

void setup() {
  int SDA = 25;
  int SCL = 26;

  Wire.begin(SDA, SCL);
}

byte val = 0;

void loop() {
  Wire.beginTransmission(0x08);
  Wire.write(val);
  Wire.endTransmission(true);

  val++;
  delay(20);
}

実際に通信してみる

受信したデータはCySmartの画面から見れます。青いところが受信したデータです。
f:id:taltalp:20170926232257p:plain
通信中のI2C信号も見てみました。 ちゃんとACKが返ってきています。
f:id:taltalp:20170926232335p:plain