JH1LHVの雑記帳

和文電信好きなアマチュア無線家の雑記帳

スポンサーリンク

ARDUINO CW KEYER を試してみた ~その52~

今日は「K3NG Arduino CW Keyer Shield」の組み立て作業について書きます。
今回の作業で ICSP が解放され、USB キーボードが使えるようになる・・・はずです。

まずは作業の結論から

結果として、USB Host Shield を認識させ、USB キーボードを使用できるようになりました。
キーボードの入力によりモールス信号を送出できることも確認済みです。

しかしながら、USB Host Shield を重ねた状態でのみ発生する問題として、LCD に文字が表示されなくなる現象が起きています。原因としては、USB ライブラリが影響を及ぼしているのか、あるいは I2C のアドレス競合が起きているのか・・・?
(ただし、USB Host Shield 自体は基本的に ICSP で動作するものであり、I2C は関係ないはずです。)

この新たに発生した現象については、今後ゆっくり調査を進めていこうと思います。

まとめ

予期せぬ問題が発生したものの、USB Host Shield の認識に成功し、キーボードからのモールス信号送信が動作したことで、今回の作業は一定の成果を得られました。前回と今回で使った2種類の基板も正常に動作していることが確認できたので、ひとまず安心です。

作業の様子は、いつも通り写真付きでコメントを交えながらアップしていきます。この記事が何かの参考になれば幸いです!

 

必要なパーツはこれだけ!

K3NG の CW Keyer は、少ない部品で動作するのが本当に素晴らしいところです。ユニバーサル基板を使えば、手軽に組み立てることができます。

今回の基板では、抵抗とコンデンサに SMD パーツを採用しました。ただし、チップサイズは比較的大きな 1206 を使用していますので、手ハンダでも無理なく作業できます。

<今回の基板で使える、秋月電子で購入できるパーツ類(一部)>

ピン配置や形状など、間違いやすいパーツを厳選してまとめてみました。

1206 サイズのチップなので、デジタルオシロスコープまでは必要ないかもしれませんね。
ですが、私はハンダ付けをするなら、できるだけ良い環境で作業したい派です。そのため、どんなに小さなハンダ付け作業でも、事前準備だけはしっかりと行い、慎重に取り組むようにしています。

完全非磁性なピンセット
チップ抵抗を挟んだり押さえたりする際には、磁力をまったく持たない完全非磁性なピンセットがあると非常に便利です。

チップ専用のテスタは、挟むだけで値を測れるのでやっぱり便利ですね。

チップ部品の値は、取り付ける前に必ずテスタで確認するのが鉄則です。
裸眼でチップに書かれた数字を読むと、思いのほか見間違えることがありますよね。
少し手間かもしれませんが、ここは確実にテスタを使ってチェックしましょう。

 

SMD パーツを手ハンダするとき、私はこんな治具を使って基板をしっかり固定しています。


チップを手ハンダで付ける時

  1. SMD ランドの片側だけに、ちょっとだけ予備ハンダ
  2. ピンセットを使ってチップをランドに配置
  3. チップの真ん中をピンセットの先端で押さえて、予備ハンダ側にこて先を当てる
  4. 予備ハンダの反対側をしっかりハンダ付け
  5. 予備ハンダ側をしっかりハンダ付け

と、こういう感じでハンダ付けしますが、チップを押さえる治具があると結構便利で、予備ハンダすることもなく、一息でハンダ付けができます。

3Dプリンターをお持ちの方は、ぜひ一つ作って手元に置いてみてはいかがでしょうか。

というわけで、チップ以外の部品もハンダ付けして・・・無事に完成しました!

LCD の装着は、3×15mmのスペーサを使って固定します。(15mmでピッタリなんです。)

4か所です。(3mmネジだと、少々キツキツですが・・・ちゃんと入ります。)

今回は黄色の SW を使ってみました。
 

前回組み立てた mega2560 pro mini Board に、今回作成したボードを載せて、まずは動作確認を行います。


USB Host Shield(ICSP)を使用するために、K3NG の標準回路で D11 と D12 を開放しました。それに伴い、スケッチも変更する必要があります。

keyer_pin_settings.h
11 → 6 、12 → 7 に変更します。 

ゲタを履かせなくても何とか動作する範囲ではあるのですが、念のためソケットを2段にして調整しました。なお、私はピンソケット同士を接着剤で固定して、より安定するようにしています。

実際にパドルや PS/2 キーボードを接続してモールス信号を送信したり、CW デコード機能を試したりしてみました。ひと通り CW Keyer の機能をチェックしましたが、動作は問題なく良好でした。 

USB Host Shiled を試す

さて、今日の本題である「USB Host Shield」の動作確認についてお話しします。
 

と青の2種類を持ってますが、青い方は動作しませんでした。

mega2560 pro mini 単体での動作確認では問題なく動作しましたが・・・。
CW Keyer を接続すると、どうやら何らかの不具合が発生しているようです。
原因を調べることも考えましたが、赤のシールドがすんなり動作したため、これ以上深追いするのはやめることにしました。
 

Mega2560 Pro Mini 基板と CW Keyer 基板の間に、USB ホストシールドを挟みます。
実は、このように Arduino Uno 用のシールドが使えるように工夫しながら、2枚のボードを作成しています。
 


USB キーボードを接続して適当にキーを押してみたら、モールス音がちゃんと聞こえたので「よし!」と喜んだのも束の間で・・・問題が発生しました。

モールス信号の送出自体はうまくいったのですが、LCD に文字が表示されないんです。LCD の表示には I2C を使っていますが、どうやら通信がうまくいっていないようです。

そこで気になるのが、USB Host Shield です。ICSP 以外にも何か信号線を使っているのでしょうか?もしそうだとしたら、CW Keyer 側のポート構成を見直す必要があるかもしれません。

ただ、LCD は I2C 接続なので、基本的にはアドレスが衝突しなければ正常に動作するはずなんですよね。でも、もしかすると Arduino Uno の標準的な I/O ピンだけでは、必要なリソースが足りないのかもしれません。

こうなると、USB キーボードの利用自体をあきらめるべきかもしれないと思い始めています。どうしても USB キーボードにこだわる理由もないですしね。PS/2 キーボードなら、多少の当たり外れはありますが動作します。それに、Winkey として使えば、パソコンのキーボードを普通に利用できますし、そちらの方が自然な使い方とも言えます。

もしこの問題が単に I/O ピンの数だけで解決できるのだとしたら、いっそのことArduino Uno 互換にこだわらず、mega2560 pro mini 専用として基板を作り直す方が早いかもしれません。

うーん、少しずつ泥沼にハマっているような気がして、なんだか不安になってきました。。。

ー・・---
I2C アドレスだけは調査してみますが、
ひとまず、最近組み立てた2枚の基板を、最終的なバージョンとしたいと考えています。
もう、これ以上、沼に落ちるのは・・・ちょっとね。
ー・・---