はじめに
今回使ったArduino Micro 5V 16MHzに関する件と、ファームウェア関係について、失敗した話を書いていきます。
カッターナイフとか接着剤とかヤスリとか使わない方の記事です。
製作の流れ
2019年の話。1号機が失敗と判った時点で2号機について考え始めたような気がします。
- 100個以上のキースイッチを扱えるマイコンボードを選定
- ファームウェアのひな形を製作
- ビルド環境作り
- 平行してArduinoの勉強
マイコンボード選定と練習
1号機は、ありもののキーボードコントローラを使って物足りない点が出てきたため、マイコンボード+プログラム(ファームウェア)で行く事にしました。
いわゆる「自作キーボード」の場合、マイコンボードに「Arduino Pro Micro」が使われる事が多いようです。私の場合、Arduino Pro Microでは信号のピンが足りません。21本以上必要です。
Arduino Pro Microを2個とかASOOVU USBとか調べましたが、私には無理そうでした。さらに調べた結果、Arduino Microというのがピンも多くて使えそうな感じです。
これを使うには、入門としてLEDチカチカ点滅 等の練習するといいみたい。ネットの他、図書館でArduino関係の本を借りて読んだりしながら、必要な機材を購入しました。
- Arduino Micro 5V 16MHz
- ブレッドボード
- タクトスイッチ
- フリスク基板(フリスクのケースに収まる小さな基板)
- 抵抗、LED、ジャンパワイヤ
このほか、開発環境としてArduino IDEをインストールします。
インストールは問題なかったと思いますが、シリアルポートを選択できなかったのがかなり手こずったような。デバイスマネージャを調べても変化無しだったり。そのうち認識するようにはなりましたが、手順とかは忘れてしまいました……。
とりあえずブレッドボード上に回路を組んで、いろいろやっておりました。
ファームウェアのひな形製作→わからん
Arduino Microはまぁなんとかなるとして(?)、ファームウェアを作らないといけません。物理配置からして他のとは違うので、流用するのは難しそうです。かといって一から作るのはもっと大変というか私には無理でしょう。
検索しまくって検討した結果、以下の手順でとりあえずやってみる事に。この時点でキーマトリックスまで完成しています。
- Keyboard Layout Editorでレイアウトを作る
- Keyboard Firmware BuilderにRawデータを渡してファームウェアを作る。
Keyboard Layout Editor
Keyboard Layout Editorと次のKeyboard Firmware Builderは、2019年当時のスクリーンショットはないので、保存しているRawDATAを使って2020年6月に作業をした時のスクリーンショットを使っています。そのため、サイトのデザインが2019年当時と違っているかもしれません。
ただ、内容は似た感じでした。
作ってみました。45度の回転は、PageUPとPageDOWNを使った気がしますがもう覚えていません。
できたら「Raw data」タブからテキストのデータをコピーして、適当な名前で保存。右上からJSONファイルも念のため保存。
ところがこれ、次の日にKeyboard Layout Editorに読み込んで作業しようとしたら、エラーが出ました。これで作ってこれで保存したのに? エラーの内容もよくわからず、結局3回作り直す事に。
これで進めます。
Keyboard Firmware Builder
Raw dataを白いところにペーストして、下の「Import」をクリックすると、キーと配線図が描かれます。JSONファイルは上の「Upload」から読み込ませられたような。
配線図はでましたが、真ん中のテンキー部分がよく判りません。
下を見ると、「Rows」「Columns」の値が9と23。これってキーマトリクスの段(列)と行になるのかな。そう思いながら図を見ると、上と左の数字と配線の意味がわかってきました。とするとピンの数が32本いることに。多過ぎです。
ピンの数を減らしました。テンキー部分以外も判らなくなりました。
とりあえず隣の「PINS」タブをみてみます。
上のATmega32U4はArduino MicroのマイコンなのでこれはOK。下にはLEDのピン指定があります。カナも指定できるのね。
で、真ん中にはRowsとColumnsのピンを指定するようですが……。B0とかC0とかD0って何?
Arduino Microのピン付近に印字されている文字や、販売のページのピン配置図には、0~13やAがつく数字はありますが、B、C、Dから始まる数字はありません。これは弱った。
ビルド環境作り→エラー多発
ファームウェアはまぁなんとかなるとして(?)、ビルド環境というのを作ってみようと思いました。
ビルド環境って何? と思いましたが、テキスト形式のソースをマイコンが解釈できるバイナリ形式にコンパイルする……作業の高級版だろうと、その程度の認識でやってみます。
MSYS2というのをインストールするみたい。やってみたのですが、エラー多発で終了しました。
結局、2ヶ月後に新しいインストーラで試したところ、動きました。私の環境によるものだったんでしょうか。
インストーラを起動→インストールフォルダを選択→スタートメニューのショートカットを選択→インストール開始。
この後いろいろありますが、その辺は次の「ソフト編」で書きます。
黒画面のターミナルを操作。選択肢がでたら「y」を選んで進むという事でそうしていましたが……。
(a/c/f/N)だそうです。NはNoだろうから違うとしても、他は何なんだろう。
これはASCII.jpのカスタムキーマップで自作キーボードを自分の分身とする (1/4)に書かれていましたが、allを意味する「a」でいいみたいですね。
とりあえず、これはなんとかなったみたいです。
Arduinoの勉強→(私には)回復不能な失敗
Arduino MicroでLチカ関係の回路を組み、いろいろやった後、タクトスイッチを使ったキー入力の実験をしました。この辺は、オリジナルキーボードを作ってみる まとめ - ゆかりメモの、その4「Arduino入門編」以降を主に参考にしています。
割と順調にいってたと思うのですが、いろいろ試そうと改造しまくった結果、何を間違ったのか「A」を延々打ち出すだけ(それだけだと思うのですが、もはや判らないという)のができました。Arduino IDEのエディタやテキストエディタを見ると、「A」がずら~っと書かれていきます。止め方が判らず、ググって調べようとしたら、Firefoxがフリーズしていました。
- Firefoxがフリーズ→タスクマネージャから停止して起動→Firefoxがセーフモードで起動→しかし動かず
- Vivaldiは起動しない
- Windowsを再起動しようとスタートメニューを出そうとすると、OpenShellは落ちていた
Arduino Microのリセットボタンを押すと数秒ほど止まるので、その隙にArduino IDEで他のスケッチを書き込めばいいらしいのですが、書き込みでエラーが出ます。
結果
- 100個以上のキースイッチを扱えるマイコンボードを選定
- たぶんOK
- ファームウェアのひな形を製作
- ピンの名称が不明
- ビルド環境作り
- たぶんOK
- 平行してArduinoの勉強
- 使えないものになってしまった
肝心のArduino Microが使えなくなり、私にはこれ以上どうしようもできず、停止状態に。このまま2019年が終わり、2020年に入ります。
文書更新履歴
- 2020年06月20日
- このページを公開。