かんたんUSBホストとは
文字通り簡単にUSBホスト機能を実現するためのモジュールです。
ArduinoなどのマイコンボードでUSBホスト(USB機器に対する「親」)を実現するためには、ちょっと工夫が必要です。
よく目にするのはUSB Host Shieldを使う作例です。
USB Host Shieldは汎用的なUSBホストを実現するためのモジュールで、様々な用途で利用できる反面、使い方が簡単とは言えません。
一方で今回紹介する「かんたんUSBホスト」はUSB接続のキーボードの制御に特化することで非常に簡単に利用できるのが特徴です。
(かんたんUSBホストの作者さんとは、知り合いで、実は以前に「かんたんUSBホスト」を頂いたのです。と言っても1年以上前のことで、折角頂いたのに「積み基板」となってしまっておりました・・、積んではいかんですね、ほかにも結構積んでいるので順番に試食していこうと思います。)
使い方
かんたんUSBホストは様々なオプションがあり、細かく制御することもできますが、まずはじめとしては、一番簡単な方法を見てみましょう。
GNDとVCCとVBUS、TX→RXの4つの配線をするだけです。
これでArduinoのシリアル入力として簡単USBホストを利用することができます。
Arduinoは書き込みにシリアル入力を利用するので、Arduinoを書き込む際はTX→RXの配線を一時的に抜く必要があることに注意してください。 (SoftwareSerialなどでArduinoのハードウェアシリアルとは違うピンを利用してかんたんUSBホストと接続することで、この問題は解消できます。)
あとは簡単USBホストにキーボードを接続し9600bpsでシリアルポートを読み取れば、押したキーのキーコードが取得できます。
簡易ワープロを作ってみる
さて、実際の動作を試しがてら、ちょっとした作品を作ってみましょう。
作ったのはキーボードから入力した文字をディスプレイに表示する、というまぁ、これだけなんですが、いうなれば「簡易ワープロ」です。
ディスプレイとして利用するのは、たまたま家にあった、ちょっと大きめのOLEDです。
大きさの割には解像度は128x64とかわいらしく、ノスタルジックな見た目となっています。
「かんたんUSBホスト」を使って簡易ワープロを組んでみた。
— ina_ani@2歳児のパパ (@ina_ani) 2022年7月24日
名前通りものすごく簡単に作れた。
—-
かんたんUSBホストはこちら↓https://t.co/J5IzjaRWsJ pic.twitter.com/jlmSvhmVQC
この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に関する開発周りの知見を惜しげもなく公開されており、こちらの資料も必見です。
まとめ
かんたんUSBホストは、Arduinoでキーボード入力をサポートしたいときには非常に有用なモジュールです。
USB、キーボード周りの面倒な処理のほとんどをこのモジュールが処理してくれるため、Arduino側に余計な実装をする必要がなく、省メモリ、省実装コストを実現できます。
気になった方はスイッチサイエンス、BOOTHなどで購入できます。(同人ハードウェアの為、在庫はそんなにないかもしれません、気になったときが買い時ですよ!)