らんらん技術日記

日々の学習メモに

Bluetooth meshを試してみたい part1

前回までの話

Bluetooth meshを手元で動かしてみたい!」心に宿った熱い衝動を抑えることができず、Laird社BL654USBドングルを購入することにした。物品は無事届き、ここからが本番である。BLE meshを動作させることはできるのか!? それともただのガラクタとなってしまうのか!?

環境構築の概要

BL654が手元に届いたので、Lairdのドキュメントを参考に動作環境を整えます。ドキュメント類はLairdのHPから手に入ります。
https://connectivity.lairdtech.com/wireless-modules/bluetooth-modules/bluetooth-5-modules/bl654-usb-adapter
BLE meshのデモアプリケーションは次のpdfに記載されています。
BLE Mesh – BL654 smartBASIC Implementation .pdf

なんかいろいろ書かれていますが、ざっくりと以下の手順を踏めば良さそうです。

  1. BL654モジュールを最低3台揃える
  2. BL654のファームウェアをMesh対応のものに更新する
  3. 各BL654にSmartBasicアプリケーションをダウンロードする

順を追って各手順を説明していきます。

BL654モジュールを最低3台揃える

DigiKeyか何かで購入しましょう。
ドキュメントを読んでいたら3台用意する理由を少しだけ理解できました。1台目はSniffer、2台目はCliant、3台目はServerとして異なる役割を与えるためです。SnifferはBLE meshのパケットをモニタするためのツールですが・・・CliantとSeverの意味はよくわかりませんw
というわけで、入手したBL654 USBドングルにラベルを貼ってみました。
f:id:yukirunrun:20190130010531j:plain

BL654のファームウェアをMesh対応のものに更新する

LairdのHPから以下のソフトウエアをダウンロードします。
BL654 Firmware_For_Upgrade_v29_1_1_14-MESH211-14_r2
ダウンロードする際に「会社名・職種」を聞かれましたが、「なし・趣味」で乗り切りました。

ダウンロードした中にファームウエアアップグレード用の実行ファイルがあるので実行。後はダイアログに沿って、BL654のファームウエアを更新します。
f:id:yukirunrun:20190130194437p:plain
上のスクショは成功している様子です。条件によっては失敗することもありますが、公式のドキュメントを参考に乗り切りましょう。
話が前後しますが、LairdのBLEモジュールはSmart Basicという言語をサポートしています。Smart Basicで書かれたプログラムをコンパイルし、バイナリファイルをBLEモジュールに書き込むことで、BLEモジュールはプログラム通りに動きます。私はあまりSmart Basicに興味はないのですが・・・これはC言語というよりは、JAVAのようなイメージです。というのもBL654はNordic社のnRF52840を内蔵しており、さらにnRF52840はCPUとしてARMのCortex-M4を採用しています。Cortex-M4はCやC++から生成した機械語で動くことを考えると、Smart Basicから機械語を生成しているとは考えにくい。UARTで書き込みできるのも変だし。それならば、Smart BasicはLairdが提供する仮想マシン上で動く言語なのだろうと想像するわけです。
話を戻します。ファームウエアアップグレードをすると、Smart Basicのコンパイラも新しく用意が必要です。ダウンロードしたフォルダにコンパイラも同梱されているのですが、それをUwTerminalXというツールと同階層のcompilerフォルダに配置しましょう。私はそれに気づくまでSmart Basicの書き込みに何度も失敗し、手順を間違ったのかと思っていました・・・。
ちなみにUwTerminalXはGithubから手に入ります。必須ツールなのでダウンロードしてください。SSL版がおすすめです。
Releases · LairdCP/UwTerminalX · GitHub

各BL654にSmartBasicアプリケーションをダウンロードする

BLE mesh用のソースコードは、ダウンロードしたフォルダ内に同梱されています。
Sniffer用:$autorun$.mesh.sniff.sb
・Server用:$autorun$.mesh.light.switch.proxy.server.sb
・Client用:$autorun$.mesh.light.switch.proxy.client.sb
さっそくUwTerminalXを使って、こいつらを書き込んでいきましょう。

・・・って、ちょっと待ったーーーー!!!!

Lairdから提供されているソースコードは、BL654のdevelopmentkits用に書かれています。私が用意したのはBL654のUSBドングルです。BL654モジュールへの書き込みは成功すると思いますが、周りの回路構成が異なるため、起動後に異常動作を引き起こす可能性があります。念のため回路調査をし、必要に応じてソースコードを変更することにします。

続けたいところですが、長くなりそうなので今回はここで区切ります。次こそは動作させます!