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の画面から見れます。青いところが受信したデータです。
通信中のI2C信号も見てみました。 ちゃんとACKが返ってきています。