【スキルアップ】BLE通信&iOSアプリを使ったシステムに挑戦(その2)

まずは段階を踏んで作っていきました。

最初はBLE nanoとiPadだけで

  • BLE nanoとiPadでBluetooth接続をできるようにする
  • BLE nanoからBLE通信でダミーのデータを送信する
  • BLE通信でダミーのデータを受信してiPad上に表示する
  • BLE nanoから周期的にデータ送信して、iPadで受信して表示する

次にDSP評価基板で

  • 可変抵抗から出力電圧をADコンバータで読み取る
  • ADコンバータで読み取った値をシリアルデータにしてUARTで送信する

さらにBLE nanoとDSP評価基板をUARTで接続できるように

  • DSP評価基板からUARTの信号線を引き出すために少し改造
  • DSP評価基板から送信したデータをBLE nanoのUARTで受信する
  • シリアルデータを分解して可変抵抗の値を取り出す

最終的にBLE nanoとiPadとDSP評価基板で、上記の機能を組み合わせて

  • 可変抵抗のつまみを回して出力電圧を変化させると、それに応じてPad上の表示値も追従させる
  • アプリにSCAN開始ボタンと切断ボタンを追加

という流れで作っていきました。

出来上がったもの

ひとまずの成果物としては以下のようなものになりました。
・システム全体
BLE1

・BLE nanoとDSP評価ボード
BLE2

・iPadのアプリ画面
BLE3

せっかくなので、動画も撮ってみました。

簡単な動作説明

BLE nano側

  • Bluetoothのペリフェラルとして動作し、可変抵抗のデータを送信するためのサービスとキャラクタリスティックを定義しています。
  • デバイスネーム及びローカルネームは「BLE TEST」としています
  • UARTから受信した4つ分の可変抵抗のデータ(1つの可変抵抗につき1byte)を一つにまとめて4byteとしてBLE通信で送信します。
  • タイマー割り込みによって、一定周期でUARTデータ受信とBLE通信でデータ送信の処理を行っています。今回は100msec周期の割り込みにしています。

iPad側

  • Bluetoothのセントラルとして動作します
  • アプリ上のボタンを押すと、Bluetooth機器のスキャン及び接続を開始します。
  • BLE nanoで設定したローカルネームのデバイスを見つけたら接続するようにしています。
  • 接続ができ、対象のサービスとキャラクタリスティックを探索します。
  • サービスとキャラクタリスティックを見つけたら、データ受信を行って受信データの値を表示します。
  • 評価ボード上の4つの可変抵抗を回すと、それぞれ0〜255の範囲で値が変化します。

DSP評価ボード側

  • 一定周期で4つの可変抵抗の出力電圧をADCで取り込み、データをバッファに保存します。
  • 取り込んだデータを読み出し、シリアルデータにしてUARTで送信します。
  • 確認用にLCDに可変抵抗の値を表示しています。

感想

まだまだシステムとしては、イマイチな部分ばかりではありますが「BLE通信を使用して任意のデータを送信、 受信データをiOSアプリ上で表示する」という大目標のシステムは作成することができました。
BLE nanoやDSPはスタンダードなC言語で、サンプルコードもありましたのでそれなりスムーズに作ることができましたが、iOSのアプリ開発(Xcode&swift)はほぼ初めてでしたのでなかなか苦労しました。
マイコンなどの組み込みファームウェアの開発とは少し毛色が違うので、画面UIの作成やswiftの文法に慣れるのと覚えるのがちょっと大変でした。
結果として、iOSアプリ開発の流れやswift言語、BLE通信の仕組みなどが少し理解できるようになったので良しとします。

今回は単に可変抵抗の値を送受信して表示するだけでしたが、これをもとにもう少し実用的なものを考えてみたいなあと思っています。