Arduino USB Host Shield で USB キーボードを使う試み。
この K1NG の CW Keyer は、PS/2 キーボードが使える仕様になってますが、かなりのクセありで、使えるキーボードがとても少ないのが難点です。
ということで、マイコンボードも mega2560 になったことだし、メモリ容量も気にすることもなくなったので、Arduino Uno のシールドの USB Host Shield でも使ってみようかと、いろいろやってみました。
最初に結論から。
mega2560 と USB Host Shield のインターフェースは SPI 通信なんですが、すでにこの端子は送信機の CW ジャックの接続で使われているため、このままでは動作しません。
SPI (SS、MOSI、MISO、CLK)で使う、D10 ~ D13 を空ける必要があります。
https://radioartisan.files.wordpress.com/2011/03/k3ng-keyer-schematic-2012052101.png
K1NG の回路では、SPI 端子を送信機の接続に割り当てています。
わたしの回路でも、K1NG と同じ D11(MOSI)、D12(MISO)を送信機へ接続しているので、USB Host Shield を使うためには、この D11 と D12 を解放させる必要があります。
Mega2560 Pro Mini ボードで、USB Host Shield は使えるか?
そもそも、mega2560 で USB Host Shield は使えるのか、検証です。
さて、USB キーボードは使えるのでしょうか。
Arduino Uno の SPI は、D10(SS)、D11(MOSI)、D12(MISO)、D13(CK)を使いますが、mega2560 では、ここに SPI 信号は出てないので、SPI と D11~D13 でジャンパする必要があります。
手持ちの3種の USB Host Shield で試してみました。
Mega2560 Pro Mini ボードに、USB Host Shield を重ねます。
mega2560 は、四角で囲んだ専用の SPI と、丸で囲んだ D50 ~ D52 と、2カ所に SPI は出てることになってるんですが、専用 SPI の方じゃないとダメでした。
mega2560 の SPI に L型のピンヘッダを付けちゃったので、USB Host Shield とジャンパ線で接続しました。
SPI の通信は D50 ~ D52 を使えばいいと思い、基板も作ったんですが・・・
この端子じゃダメだったとは・・・
確認するまで、けっこうハマりました。。。
USB キーボードの接続試験では、ここのスケッチを使いました。
ちゃんと動作することを確認しました。
GAOHOU Mini USB Host Shield は・・・ダメでした。
オシロで確認したら、最初のクロックが出てないし。。。
物理的に壊れているのか、それともただの使い方の問題なのか・・・
今、AliExpress に2個ほど注文してるので、到着したら再チャレンジしてみようかと思います。
ちなみに、大きい方の2つは、どちらもちゃんと動作しました。
ということで、USB キーボードが使えるように、CW Keyer メイン基板の IO 割り当てを見直して、新たに基板を発注したいと思います。
あ~ぁ、こういうことばっかりして・・・・連休が終わっちゃいました。。。トホホ。