M5Stack:CardKB ファームウェア更新

購入時のカードキーボードのファームウェアにバグがあったので、バグ対応された最新版に更新します。

更新前は、ループにdelay(1000)入れた状態で、こんなでした。


ファームウェアはM5StackのGitHubで公開されていました。

M5-ProductExampleCodes/Unit/CARDKB/firmware_328p/CardKeyBoard/CardKeyBoard.ino

ファームウェア更新には、キーボード下部に付いているスルーホール端子を用います。
端子の並びは、M5Stack公式さんから情報提供いただきました。

左から、5V / RST / SCK / MISO / MOSI / GND

書き込み先のボードは Arduino Pro 8MHz を選べばよいとのこと。


この端子に接続するためには、ピンをはんだ付けする必要があるのかなー、って思ってたのですが、テストワイヤーという便利なものがありました。バネが付いてて、はんだ付けなしで接続することが可能です。


秋月電子通商:スルホール用テストワイヤ TP-200 (10本入)
http://akizukidenshi.com/catalog/g/gC-09830/

バネ付き端子が両側のものと、片側のものがあるので気を付けてください。
僕はArduinoと接続するので、片側は通常のピンになっているのを選びました。

テストワイヤー便利なのですが、何度も抜き差ししてると、バネがヘタッてきたり、スルーホールの方がダメージを受けたりするみたいです。

JO3GBD:スルーホール用テストワイヤを使ってみました
http://jo3gbd.blog.shinobi.jp/Entry/653/

ちょくちょく使うなら、素直にピンを生やすか、ICクリップみたいなのを用いるのがいいかもですね。僕は、たまーのファームウェア更新に使うだけなのでそんなに気にしないことにします。


書き込みは、他のArduino端末をISP書き込み装置にすることで行います。
Arduino学習に使っていたMEGA2560に活躍の時が!

まずは、Arduino を書き込み装置にするためのスケッチを書き込みます。

スケッチ例から「11.ArduinoISP」を選択。これはふつうに書き込めばOK。

Arduinoと書き込み対象ボードを接続します。

こちらのページに、各種ボードでの接続例が解説されていました。

DEKOのアヤシいお部屋。:Arduino ブートローダーを書き込む (AVR)
https://ht-deko.com/arduino/bootloader.html

うちの場合はArduino MEGA2560なので、接続はこう。

MEGA2560 CardKB
GND GND
52 SCK
50 MISO
51 MOSI
10 RST
5V VCC

プスッと配線。

Arduino UnoやMega 2560など一部ボードでは、自動リセット回路を無効にするため、Arduino as ISP にした後で、RESET<->GND 間に 10μF程度のコンデンサを入れる必要があります。


ちょうど10uFのコンデンサがありました!

接続完了!接続が終わったら、CardKBファームウェアのスケッチを開きます。

書き込み対象にボード「Arduino Pro or Pro Mini」、プロセッサ「ATmega328P(3.3V,8MHz)」を選択。

書き込み装置に「Arduino as ISP」を選択。

やはり、最初の1回目は緊張しますね…。

「書き込み装置を使って書き込む」を選んで書き込み開始。(「マイコンボードに書き込む」の方を選ばないように!)

ピカー。すごい光る。しばらくすると、書き込み完了!

確認してみたところ動作問題なし!OKです!

ついでに、Sym+”.”で”>”が入力できない現象も対応しました。ファームウェアの「Sym」押下時の「.」のマッピングを変更。

変更前:{ '.', '.', '.', '<', '>', 174, 174},//.
変更後:{ '.', '.', '.', '>', '>', 174, 174},//.

これで再度ファームウェア更新。

バッチリ!


ファームウェア書き込み終わったら、書き込み装置の設定を「AVRISP mkII」など普段使っているものに戻すのを忘れないでね!


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