2015年8月13日木曜日

新キーボード プロジェクト? - Bluetooth LE版の開発

今回はBluetooth Low Energy(BLE)版のNISSEの開発のお話です。下の写真が、開発中のBLE版のNISSEになります。青いリングのついた透明のドームの中にBLEのアンテナが出ています。その右の方にある白色のボタンが電源ボタンになります。

開発中のBLE版のNISSE。

去年、Bluetooth 2.0のモジュールで実験を行った時は、
  • 電池が持たない(要毎日充電)、
  • 利用したモジュールにあらかじめプログラムされているファームウェアの制約で、どうやらUSBのキーコードが0x65より大きなキーを使えない、
という問題がありました。

その後一気に広まってきた感じもあるBluetooth 4.0のBLEでは、もともと省電力化が目的ということで、電池についての心配はなさそうてす。そこで今回は、Nordic nRF51822ベースのホシデンのHRM1026 BLEモジュールを使って実験を進めてみました。

制御基板


下の写真が今回開発したBLE版NISSEの制御基板です。中央上部にある、青色の9.6mm x 16.1mmという小さなモジュールがHRM1026です。USB版のNISSEの制御基板と入れ換えると、BLE版のNISSEになる、という構成です(電池蓋や電源ボタンの部分でアルミ筐体も一部変更が必要になります)。

BLE版NISSEの制御基板

nRF51822は、ARM Cortex-M0のCPUコアとBLEのトランシーバーを組み合わせたSoCです。HRM1026は、nRF51822にアンテナやクリスタル(16MHzと32.768kHzの両方とも)を組み合わせたモジュールです。GPIOも計30端子あるということで、キーボードなどはこのモジュール一つで作れるようになっています。実際、今回の基板はNISSEの制御基板のサイズに合わせて作ってあるので、部品面はかなり余裕があります(背面には、単3電池2本用の電池ケースと電源スイッチが付いています)。

HRM1026まわりの回路図

HRM1026は、モジュールの背面にはんだバンプが38端子ある仕様です。そのため制御基板への実装は、電子工作ではお約束な感じもあるArduinoで温度を制御したオーブン トースターを使いました。今回部品がほとんど表面実装タイプになっているのはそのためです。

オーブン トースターでリフローが終わったときの様子

制御基板へのファームウェアの書き込みには、CMSIS-DAPデバッグアダプタのTSUBOLink-IIを使っています(本来はHRM1026の前に製品化されたHRM1017用ということのようです)。TSUBOLink-IIは、ファームウェアの書き込だけでなく、gdbでのデバッグに使ったり、制御基板のUARTと繋いでUART-USBブリッジとしても使えます(かなり便利です)。

ファームウェア


TSUBOLink-IIということでファームウェアはmbed?と思われた方もいらっしゃるかもしれませんが、今回はキーボードのファームウェアのサンプルも提供されていることから、NordicのnRF51 SDKを使っています。

基本的な機能については、USB版のNISSEとTRONかなや親指シフト入力などのサポートも含めてほぼ同じですが、以下の機能が増えています:
  • FN-1, FN-2, FN-3でターゲットの切り替え
  • FN-ESCで再ペアリング
  • ESCを押しながら電源onでキーボードのリセット(ボンディング情報の全消去)
ペアリング中は、NISSEの赤緑青3色のLEDが、それぞれターゲット1, 2, 3に対応して点滅するようになっていて、どのターゲットを使おうとしているかわかるようになっています。

BLEでは、ボンディング(セキュアにリンクしたペアリング)済みのターゲットについては、特定のどれかを指定して接続することができるようになっています(ホワイトリスト機能と呼ばれています)。そのため複数のターゲットを切り替えて使う、という機能はわりと手軽に実装できます。

意外と面倒なのは、それぞれのターゲットと順にボンディングを作っていく部分です。1台目のボンディングが終わって、2台目という場面で、1台目のbluetoothがonのままだと、2台目とボンディングする前にまず1台目が先にリンクを確立してしまうので、いつまでたっても2台目と接続できないという問題が起きたりします。ここは一度1台目のbluetoothをoffにしてもらえればいいという話もあったりするのですが、今回はNRF51 SDKのデバイスマネージャーにパッチを当てて使い勝手を良くしてあります。

すでにこの原稿もBLE版のNISSEで書いていたりしていますが、ファームウェアについては今後も開発を進めていく予定です。このあたりは、USB版と同じような形です。また、いまのところファームウェアの書き換えには、TSUBOLink-IIのようなCMSIS-DAPデバッグアダプタが別途必要になります。

まとめ


今回のBLE版NISSEの実験機では、これまでのところ下記のBluetooth 4.0に対応した機器で基本的な動作を確認できています:
  • Apple iPhone 5s / iOS 8.4
  • DELL XPS 12 / Windows 8.1
  • ASUS VivoTab Note 8 / Windows 8.1
  • PLANEX BT-Micro4 (USBアダプタ) / Fedora 22 WORKSTATION
Bluetooth 4.0より前の、Bluetooth 2.0等のインターフェイスしか持っていないパソコンなどではBLEは使えないという点には注意してください。

BLE版の開発にあたって、これまでの流れはざっくりとは下のような感じでした:
  • 7/01 TSUBOLink-IIとHRM 1017モジュールピッチ変換基板をオーダー。
    •     HRM 1017を使った予備実験でキーボードとしての機能を確認。
    •     HRM 1026用の制御基板をKiCadで設計。
  • 7/20 HRM 1026とHRM 1026用の基板をオーダー。
  • 7/22 リフローオーブントースターを組み上げる。 :-)
    •     リフローオーブンのPID制御の調整など。
  • 7/29 実験機を組み上げる(部材到着待ちでした)。
    •     ファームウェアの開発を本格的に進める。
先月から実験を開始したBLE版のNISSEになりますが、nRF51 SDKの更新頻度も意外と早く、開発にあたってはファームウェア開発の割合が意外と大きい印象です。

なお、一般向けのBLE版NISSEの製品化についてはいまのところ未定です。2014年2月からBluetoothの製品での使用に多少費用がかかるようになっているので、BLE版のNISSEが製品化されれば欲しいという方は、ぜひ『申し込みフォーム』の備考欄に「NISSE BLE版希望です」と書いて送信してください。ある程度の生産数が見込めるようであれば受注を開始する予定です。(実際に受注を開始した場合、生産数にもよりますが価格はUSB版から最大1万円アップくらいになりそうです。)



0 件のコメント:

コメントを投稿