FM TOWNS に Bluetooth 入力を追加する-試作からPCB作成

スケッチ試作

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 Express1スイッチサイエンス
10kΩ抵抗3秋月電子通商
amazonでも買うとしたらこれかな
20kΩ抵抗3秋月電子通商
D-sub9ピンメスコネクタとケーブル
マウス、ジョイパッドポート用
2ebay
HR212-10LP-8P
キーボード用コネクタ
ケーブルはCat5のEthenetケーブルを流用
1DigiKey
理想ダイオード回路1スイッチサイエンス
リセッタブルヒューズ1秋月電子通商
amazonで買うとしたらこれかな
SN74AHCT125N4DigiKey
ICソケット(無くても良い)4秋月電子通商
amazonで買うとしたらこれかな
パスコン用コンデンサ4秋月電子通商
電源系コンデンサ1秋月電子通商
Dサブコネクター 25P オス 基板取付用
固定用2.6mmネジとナットも
1秋月電子通商
Dサブコネクター 25P・メス1秋月電子通商
amazonのこれを買えばよかった
Dサブコネクター用シェル 25P1秋月電子通商
amazonのこれを買えばよかった
プラスチックスペーサー 3mm系必要数分秋月電子通商

結果

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください