M5Stack:小型キーボードユニット CardKB

M5StackにGROVE端子で接続する小型キーボードが発売されました。

M5Stack Official CardKB Mini Keyboard

$2.8!安いです!早速購入しました。

送料の方が高いので、ついでに欲しかったパーツも合わせて。ピアノキーボードが存在感ありますね…。(2台のM5Stackは、もとから持ってたやつです。)

AliExpressで 2018/12/27に発注、2019/1/5に発送、2019/1/15に受け取りでした。

シンプル。むき出しで無骨。Twitterで事前に製品紹介されてた時「M5Stackみたいに、何かケースに入れて発売するのかな?」とちょっと思ってたのですが、そんなことはなかった。でも、そのおかげで超低価格です!

接続はGROVEケーブル一本です。

早くも、3Dプリントでケース作ってる方がいますね。発売からわずか数日で作ってるのすごい。

接続はI2C。M5Stack FACESのキーボードと扱い方は基本的には同じです。
違う点として、FACESのキーボードは入力発生時に割り込みで通知してくれる仕組みが付いてます。これはI2C接続とは別の接続(G5)で行ってるので、CardKBでは実現できない機能です。

CardKBでは、キー押下時のキーボード側からの通知は来ないので、ループを回しておいて定期的にキーボードから値を取得する必要があります。


M5StackのGitHubに、CardKBのサンプルプログラムがありました。

M5-ProductExampleCodes/Unit/CARDKB/Arduino/CardKBTestM5/CardKBTestM5.ino

動かしてみます。

SHIFT / Sym(記号)/ fn はトグルキー。2度押しすれば機能ロックされます。どの状態にあるかは、LEDの色で確認できます。
各キーで入力される内容は公式GitHubにありました。(なぜかExcelファイル)

僕に届いたCardKBは、ファームウェアにバグがあって、キー入力した後、10ms以内に取得処理を行わないと、キー値が取れない状態になってました。

工夫すれば使えないとは無いのですが、delay 10msで入力取得のループを回し続けなければならなくて厳しい。先ほどのサンプルプログラムの delay を1000にしてみると、こういう感じ。

キー取得タイミングがちょうど合えば取得可能なんですけどもツライ。
キー取得以外の処理が10ms以上かかる事は、ふつうにありえますので、このままだと使うのは難しいですね。

すでにこのバグは修正されてて、ファームウェアが更新されています。

M5-ProductExampleCodes/Unit/CARDKB/firmware_328p/

僕もファームウェア更新に挑戦してみました。詳細はこちら。

M5Stack:CardKB ファームウェア更新
http://shikarunochi.matrix.jp/?p=2910

無事、更新できたので、動作バッチリです!


MZ-700エミュレータに組み込んでみました。

GROVE HUBを用いて、キーボードとジョイスティックを同時接続。プログラムでは、アドレス指定によってどの機器と通信するか選択します。


(ちょっとケーブルが長いですね…。)

キー取得とジョイスティック取得の処理を別スレッドで走らせていたため、衝突が起きてリセット発生してしまってました。単体ロジックだと問題ないのに、なんで落ちるのかわからずに悩んだ…。I2Cへのアクセスは同じスレッドで行うようにしましょう。
組み込み機器だとあんまりスレッド作りまくることは無いと思いますが、念のため。


小型のキーボードを見ると、どうしてもSL-Cザウルスのことを思い出さずには居られないよね。

シャープ~!もういちど、こういうの作って~!たのむ~!



このエミュレータが実行可能なのは、2019/01/28 時点では M5Stack FIRE のみです!


Amazonリンク貼りつつ、なんですけど、海外からの通販に抵抗が無い場合は、本家M5Stack の AliExpress で購入してみるのもいいかと思います。販売されている商品の種類も多くて、価格も少し安めです。ただし、到着まで半月~1ヶ月ぐらいかかります。