M5StackにGROVE端子で接続する小型キーボードが発売されました。
M5Stack Official CardKB Mini Keyboard
$2.8!安いです!早速購入しました。
送料の方が高いので、ついでに欲しかったパーツも合わせて。ピアノキーボードが存在感ありますね…。(2台のM5Stackは、もとから持ってたやつです。)
AliExpressで 2018/12/27に発注、2019/1/5に発送、2019/1/15に受け取りでした。
シンプル。むき出しで無骨。Twitterで事前に製品紹介されてた時「M5Stackみたいに、何かケースに入れて発売するのかな?」とちょっと思ってたのですが、そんなことはなかった。でも、そのおかげで超低価格です!
接続はGROVEケーブル一本です。
カードキーボードのケース作ってる方が!/ frame and key-top for M5Stack CardKB by n602 – Thingiverse https://t.co/7a8OW6LdhJ
— Nochi (@shikarunochi) 2019年1月17日
早くも、3Dプリントでケース作ってる方がいますね。発売からわずか数日で作ってるのすごい。
接続はI2C。M5Stack FACESのキーボードと扱い方は基本的には同じです。
違う点として、FACESのキーボードは入力発生時に割り込みで通知してくれる仕組みが付いてます。これはI2C接続とは別の接続(G5)で行ってるので、CardKBでは実現できない機能です。
CardKBでは、キー押下時のキーボード側からの通知は来ないので、ループを回しておいて定期的にキーボードから値を取得する必要があります。
M5StackのGitHubに、CardKBのサンプルプログラムがありました。
M5-ProductExampleCodes/Unit/CARDKB/Arduino/CardKBTestM5/CardKBTestM5.ino
動かしてみます。
M5Stack I2C Keyboard、「>」の入力ができません…。
Syn+「,」とSyn+「.」が、両方「<」に…! pic.twitter.com/xviQj5eJCr— Nochi (@shikarunochi) 2019年1月15日
SHIFT / Sym / Fn はダブルクリックでモードロックされます。この状態なら「>」が入力可能でした! pic.twitter.com/qpnzec7H9G
— Nochi (@shikarunochi) 2019年1月15日
SHIFT / Sym(記号)/ fn はトグルキー。2度押しすれば機能ロックされます。どの状態にあるかは、LEDの色で確認できます。
各キーで入力される内容は公式GitHubにありました。(なぜかExcelファイル)
僕に届いたCardKBは、ファームウェアにバグがあって、キー入力した後、10ms以内に取得処理を行わないと、キー値が取れない状態になってました。
工夫すれば使えないとは無いのですが、delay 10msで入力取得のループを回し続けなければならなくて厳しい。先ほどのサンプルプログラムの delay を1000にしてみると、こういう感じ。
ちなみに、delay 1000でこんなでした。28秒ぐらいのところで入力成功してますw
requestFromの戻りもチェック入れた状態なので、現状は手詰まりですー。 pic.twitter.com/y9CZYsNarE— Nochi (@shikarunochi) 2019年1月21日
キー取得タイミングがちょうど合えば取得可能なんですけどもツライ。
キー取得以外の処理が10ms以上かかる事は、ふつうにありえますので、このままだと使うのは難しいですね。
すでにこのバグは修正されてて、ファームウェアが更新されています。
M5-ProductExampleCodes/Unit/CARDKB/firmware_328p/
僕もファームウェア更新に挑戦してみました。詳細はこちら。
M5Stack:CardKB ファームウェア更新
http://shikarunochi.matrix.jp/?p=2910
delay(1000)でも入力問題なし!
バッチリだ!
(入力の遅延が起きてるのは、想定通りの遅延です。) pic.twitter.com/3whMfjnUo0— Nochi (@shikarunochi) 2019年1月25日
無事、更新できたので、動作バッチリです!
MZ-700エミュレータに組み込んでみました。
コマンド入力アドベンチャーゲームならプレイ可能です。キーリピートは効かないので、アクションゲームはしんどいですね。(そもそもこのキーボードでアクションゲームは無理と思いますけれどw) pic.twitter.com/SM4CsyvqOp
— Nochi (@shikarunochi) 2019年1月22日
GROVE HUBを用いて、キーボードとジョイスティックを同時接続。プログラムでは、アドレス指定によってどの機器と通信するか選択します。
キー取得とジョイスティック取得の処理を別スレッドで走らせていたため、衝突が起きてリセット発生してしまってました。単体ロジックだと問題ないのに、なんで落ちるのかわからずに悩んだ…。I2Cへのアクセスは同じスレッドで行うようにしましょう。
組み込み機器だとあんまりスレッド作りまくることは無いと思いますが、念のため。
小型のキーボードを見ると、どうしてもSL-Cザウルスのことを思い出さずには居られないよね。
シャープ~!もういちど、こういうの作って~!たのむ~!
このエミュレータが実行可能なのは、2019/01/28 時点では M5Stack FIRE のみです!
Amazonリンク貼りつつ、なんですけど、海外からの通販に抵抗が無い場合は、本家M5Stack の AliExpress で購入してみるのもいいかと思います。販売されている商品の種類も多くて、価格も少し安めです。ただし、到着まで半月~1ヶ月ぐらいかかります。