スケッチ試作
TOWNSキーボード処理
Adafruit Feather nRF52840 ExpressはUARTの機能を持っています。
キーボードの通信はそれを利用することで、所謂bit-bang処理は必要ありませんでした。
ただ最初はメイク、ブレークコードに気がついておらず反応ありませんでした。2byteペアで送ることで反応しはじめたので、一旦次の対応をすることにしました。
TOWNSマウス処理
とりあえずSTROBEが出ているポートに対してマウス移動データを送ってみたら反応があったので、ここまでで次に移ることにしました。
Bluetooth HID処理
Bluefruit52Libの以下のサンプルが参考になりました。
以下の問題に対応しました。
| 問題 | 原因 | 対応方法 |
|---|---|---|
| XBOXコントローラが動作しない | 標準実装ではアナログスティックまわりのレポートサイズは8bitだが、XBOXコントローラは16bitになっているらしく、レポート構造体がずれてHATの値が判別できない | 専用の構造体を定義する |
組み合わせ
一旦組み合わせて確認はじめましたが、以下の問題がありそれぞれ対応しました。
| 問題 | 原因 | 対応方法 |
|---|---|---|
| マウスが動かない | STROBEが出ているポートが時々変わる | TOWNS側はどちらかにSTROBEをだして、反応があるとマウスと判断する動きだと予想し、 どちらでのポートのSTROBEにも対応できるようにした |
| キーリピートが多発 | キーリリースの取りこぼしが多発 | 受信のコールバックでTOWNSまでの送信をするのではなく、受信はキューに格納するだけで、メインループでまとめて送信することで改善した(が完全では無い) |
ここまでのスケッチをgithubに格納しています。
PCB設計
回路図
ブレッドボード試作のとおりですが、ケーブル接続部分は一般的なコネクタにしたかったので、D-sub25に3つ分まとめることにしました。
キーボードは8ピン、マウスジョイパッドは9ピンですが、VCCは使わないので8ピンとして、8+8+8で24ピン分をD-sub25ピンに収めました。

基板デザイン
D-sub25コネクタを使うということで、その幅を基準にしています。
穴の位置はアクリルボードの取り付けを意識しています。

PCB設計関連のkicadデータをgithubに格納しています。
外装設計
単純にアクリル板をかぶせることにしました。
四隅を丸めて、穴をあけるだけなので、アクリ屋ドットコムさんのセミオーダー加工を利用させていただきました。
部品表
必要な部品です。
| 品目 | 数量 | 購入先リンク |
|---|---|---|
| Adafruit Feather nRF52840 Express | 1 | スイッチサイエンス |
| 10kΩ抵抗 | 3 | 秋月電子通商 amazonでも買うとしたらこれかな |
| 20kΩ抵抗 | 3 | 秋月電子通商 |
| D-sub9ピンメスコネクタとケーブル マウス、ジョイパッドポート用 | 2 | ebay |
| HR212-10LP-8P キーボード用コネクタ ケーブルはCat5のEthenetケーブルを流用 | 1 | DigiKey |
| 理想ダイオード回路 | 1 | スイッチサイエンス |
| リセッタブルヒューズ | 1 | 秋月電子通商 amazonで買うとしたらこれかな |
| SN74AHCT125N | 4 | DigiKey |
| ICソケット(無くても良い) | 4 | 秋月電子通商 amazonで買うとしたらこれかな |
| パスコン用コンデンサ | 4 | 秋月電子通商 |
| 電源系コンデンサ | 1 | 秋月電子通商 |
| Dサブコネクター 25P オス 基板取付用 固定用2.6mmネジとナットも | 1 | 秋月電子通商 |
| Dサブコネクター 25P・メス | 1 | 秋月電子通商 amazonのこれを買えばよかった |
| Dサブコネクター用シェル 25P | 1 | 秋月電子通商 amazonのこれを買えばよかった |
| プラスチックスペーサー 3mm系 | 必要数分 | 秋月電子通商 |
結果

これで、一応トラックボール付きキーボードとXBOXコントローラをTOWNSで利用することはできました。
しかし、まだ多くのキーに対応しておらず、キーリピートは時々発生するしマウスは時々ジャンプします。
気が向いたら改善していきます。






コメントを残す