かんたんUSBホストを試してみた

かんたんUSBホストとは

文字通り簡単にUSBホスト機能を実現するためのモジュールです。

かんたんUSBホスト、サポートページから抜粋

ArduinoなどのマイコンボードでUSBホスト(USB機器に対する「親」)を実現するためには、ちょっと工夫が必要です。

よく目にするのはUSB Host Shieldを使う作例です。

USB Host Shieldは汎用的なUSBホストを実現するためのモジュールで、様々な用途で利用できる反面、使い方が簡単とは言えません。

一方で今回紹介する「かんたんUSBホスト」はUSB接続のキーボードの制御に特化することで非常に簡単に利用できるのが特徴です。

(かんたんUSBホストの作者さんとは、知り合いで、実は以前に「かんたんUSBホスト」を頂いたのです。と言っても1年以上前のことで、折角頂いたのに「積み基板」となってしまっておりました・・、積んではいかんですね、ほかにも結構積んでいるので順番に試食していこうと思います。)

使い方

かんたんUSBホストは様々なオプションがあり、細かく制御することもできますが、まずはじめとしては、一番簡単な方法を見てみましょう。

GNDとVCCとVBUS、TX→RXの4つの配線をするだけです。

かんたんUSBホスト説明書より抜粋

これでArduinoのシリアル入力として簡単USBホストを利用することができます。

Arduinoは書き込みにシリアル入力を利用するので、Arduinoを書き込む際はTX→RXの配線を一時的に抜く必要があることに注意してください。 (SoftwareSerialなどでArduinoのハードウェアシリアルとは違うピンを利用してかんたんUSBホストと接続することで、この問題は解消できます。)

あとは簡単USBホストにキーボードを接続し9600bpsでシリアルポートを読み取れば、押したキーのキーコードが取得できます。

簡易ワープロを作ってみる

さて、実際の動作を試しがてら、ちょっとした作品を作ってみましょう。

作ったのはキーボードから入力した文字をディスプレイに表示する、というまぁ、これだけなんですが、いうなれば「簡易ワープロ」です。

ディスプレイとして利用するのは、たまたま家にあった、ちょっと大きめのOLEDです。

大きさの割には解像度は128x64とかわいらしく、ノスタルジックな見た目となっています。

このOLEDの制御は定番のu8g2ライブラリを利用します。

ソースコードはこんな感じです。

ほとんどがOLEDの制御コードで、かんたんUSBホストの制御は初期化と、キーの読み取りの部分だけです。

「簡易」という事で本当に最低限の動きしかしませんが、それでもここまで簡単にワープロもどきが作れるのは楽しいです。

かんたん 以外に出来る事

ここまで紹介してきたように、かんたんUSBホストは、かんたんにUSB接続のキーボード入力を得ることができますが、ほかにも様々な機能があります。

説明書から少しかいつまんで紹介すると・・

  • キー配列をJIS、USで切り替える
  • CapsLockなどを設定する
  • キーリピートの間隔を調節する
  • 特定キーの組み合わせに反応する
  • シリアル接続のボーレートの変更

他にも、制御とは関係ないところで以下のような機能も搭載しています

  • USB Hub経由でのキーボードの接続
  • 動作中のキーボードの抜き差しへの対応
  • キーリピート

USB Host Shieldとの違い

USB Host Shieldはキーボードに特化していないため、キーボード固有の処理はArduino側で実装する必要があります。CapsLockやNumLock, キーコードとASCIIコードとの変換、キーリピートの処理、などなど、実装コストも大きくなるし、Arduinoの限られたメモリを消費します。

また巷に出回っているMini USB Host Shieldはちょっと癖のある基板で、5VのArdunoで利用するためには謎の改造をする必要があったりと、使い勝手も悪いです。

そもそもUSB Host ShieldのコアとなっているMAX3421Eは、かんたんUSBホストのコアとなっているCH559と比べ高額なので、自然とそれを採用したボードの価格も高くなってしまいます。

などなど、これらの理由により、USB接続のキーボードをArduinoから利用する場合はかんたんUSBホストに軍配が上がりそうです。

一方でゲームコントローラや、Bluetoothドングル、USB-MIDIなど、キーボード以外のUSB機器を利用する場面ではUSB Host Shieldが適していることもあると思います。(CH559でもこれらに対応したファームウェアを作れば安価に対応できそうですが、作例もなく、いばらの道のように思います)

中身について

このかんたんUSBホストですが、コアとなるマイコンがCH559という、中国製のICです。

USB Host、Deviceの機能を持つ汎用マイコンにもかかわらず、比較的安価ですが、昨今の半導体不足の影響をあまり受けず、現在も簡単に入手できます。

最近半導体部不足が深刻になっており、様々な汎用ICの在庫がなくなる中、でこれらの中国製のICはアマチュア電子工作愛好家の間で、にわかに脚光を浴びています。

そんなトレンドに興味のあるMakerにとってもこのモジュールは魅力的だと思います。

かんたんUSBホストの作者の方が、CH559に関する開発周りの知見を惜しげもなく公開されており、こちらの資料も必見です。

q61.org

まとめ

かんたんUSBホストは、Arduinoでキーボード入力をサポートしたいときには非常に有用なモジュールです。

USB、キーボード周りの面倒な処理のほとんどをこのモジュールが処理してくれるため、Arduino側に余計な実装をする必要がなく、省メモリ、省実装コストを実現できます。

気になった方はスイッチサイエンス、BOOTHなどで購入できます。(同人ハードウェアの為、在庫はそんなにないかもしれません、気になったときが買い時ですよ!)

www.switch-science.com q61.booth.pm