2019年3月24日日曜日

USB Keyboard Mouse 切替器の作成 (検討)

最近の PC は PS/2 の keyboard, マウスはなくなり USB ばかりになった. それはそれで良いのだが, PCが増えるとその数のキーボードとマウスが増える事になり, 机の上がどんどん狭くなる. そこで, それほど同時に使用しないキーボードとマウスを切替器によって兼用していまえば不必要なものはなくせる.

そこで今回, USB Keyboard Mouse 切替器を作成してみようと思う.

仕様

4 pcs の PC の切替 (keyboard mouse)
1 HOST (Keybpard, mouse 側)
4 DEVIE (PC側)
切り換え時に PC のenum を発生させない
(単純に DN/DP を切り換える方式でなく, 一旦それぞれのレポートを解釈する)
切替情報を出力する事で, HDMI, DP の切替を検討する

HOST CPU:   STM32F4xx (USB host, bootloader がある事  TBD)
TARGET CPU: STM32L072 x4


開発案件

HOST (keyboard, mouse接続側)
     USB DFU による update を可能な cpu を選定
     USB type A CN CPU基板の作成 (新規, TARGETの回路も入れるかは未定)
     USB host controller HID の作成 (新規)

TARGET (PCに接続)
     REF-STM32L4 基板を使用 (か?)
     USB HID の作成 (KICADKEYを流用)
     PCから TARGET CPU の update (bootloader の DFU 使用)
     PCから TARGET CPU を経由して HOST CPU の update (CDCの実装)


PCに接続する TARGET CPU の board と firm は過去の流用が可能なので, キーボード, マウスを接続する HOST CPU の開発をすればで実現できそうだ.

IMU 専用センサーハブ IMU4P の作成

近年ドローンやロボティックスで, 自立走行などで IMU を用いる事が多くなった. 金銭的コストは IMU 1 つの情報で処理した方が良いが, 複数 IMU を使用して単体ノイズをキャンセルする事を期待して金銭的コストを払っても性能を重視するアプリケーションで使用が検討される場合がある. その際, 複数の IMU は 1 つのセンサブロックとして扱える様な物を用意しておくと, 使い廻しが可能で短期に開発が可能となる. ただし, 今回は複数センサのデータを演算して結果を返すのではなく, それぞれのデータをほぼそのまま上位に転送する機器を作成する. また, 複数センサは同じ物である必要はなく, 色々なメーカーのさまざまなセンサを接続できる様にする.

IMU センサ数:                   4 pcs
センサ側インターフェイス: 4 線 SPI
上位側インターフェイス:    UART 4Mbps, 8N1
上位側プロトコル:             timestamp, count, sensor 情報, crc
                                           ハンミング符号化によりエラー訂正可能
タイムスタンプ:                   28bit 外部クロック入力
CPU:                                  STM32L072
対応 IMU:                          ADXL345, BMI160, LIS3DHH, MPU8250


今回 hardware は, STM32L4-REF に STM32L072 を載せ, STM32L4-REF と IMU を接続する為の board を作成した.

IMU4P github top                github IMU4P files
IMU4P document                github IMU4P-01 dosument
IMUMB-01 schematics       github IMUMB-01 sch