JH1LHVの雑記帳

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

スポンサーリンク

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

最近取り組んでいた USB Host Shield に関する実験ですが、思い切って USB マイクロコントローラチップを mega2560 pro mini の基板に直接組み込んでしまうのもありかなと考えています。

f:id:JH1LHV:20200506152519j:plain

この CH552G というコントローラは、1個あたり約30円と非常に低コストで手に入るため、安価に実装が可能です。

さっそく AliExpress で注文しました。届いたらですが、うまく動作することを確認した上で、mega2560 pro mini 基板に組み込めたらいいなぁ、などと思っています。

それから、先日作成した USB Host Shield についてですが、ワイヤレスキーボードが使えることが分かりました。これは予想外の成果で、まさか対応できるとは思っていなかったので驚きです。

Logicool などのワイヤレスキーボードが問題なく使えると、本当に嬉しいですよね。

もうこうなると、今度はパドル操作も少し離れた場所から試してみたくなりませんか?

f:id:JH1LHV:20200506161514j:plain

BLE(Bluetooth Low Energy)に対応した ESP32 を2つ使用して、サーバーとクライアントの構成にすることで実現しそうです。

そこで、最近話題の開発環境「Atom」を使ってBLEの実験を始めました。
今日は、ESP32 のサンプルプログラムを動かしてみたり、サーバー側の実装について検討していました。



このプロジェクトもそうですが、思いつきで手を付けて、そのまま放置してしまっているものがたくさんあります。ただ、そういう自由さも趣味の醍醐味ですよね。

それぞれのプロジェクトは、気長にゆっくり進めていこうと思っています。あちこち寄り道しながらの進行になりますが、それもまた楽しみ方の一つです。(ちょっと迷走気味ですが。。。)

 

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

USB Host Shield を使うと I2C が使えなくなる原因がようやく判明しました。

この問題、しばらく放置しようかなと思っていたんですが、やっぱり気になってしまって・・・気が付いたら深夜2時まで試行錯誤していました。

それで判明した結果なのですが・・・正直、とても恥ずかしい話です。
実は、この「USB Host Shield」には、そもそも I2C 端子が存在しなかったんです。

こういった仕様については、作業前にしっかり確認しておくべきですよね。でも、まったく気付かずここまで作業してしまいました。反省です。

Arduino Uno R3 ピン配置についてソース

私が所有している2種類のUSB Host Shieldは、Arduino Unoが初期に販売された頃の古い仕様に合わせたものでした。

現在主流のArduino UnoのバージョンはR3ですが、こうしたシールドは需要が少ないのか、R3に完全対応している製品はなかなか見かけません。

そこで、Arduino Uno R3 の全てのピンに対応した USB Host Shield がないかとネットで調べてみたところ、1種類だけ見つけました。それが「USBHostShield-Rev2回路図付き)」です。この製品はスイッチサイエンスで販売されていましたが、「在庫限り」とのことでした。

ただし、値段が少々高めで、税込み3,685円。(在庫限りというのも少し気になります。)

こうした USB Host Shield の需要はあまり多くないようで、全ピン対応品はこの1種類しか見つかりませんでした。他にも AliExpress や Amazon で調査しましたが、私が持っているものと同じように、I2C 端子がない製品ばかりでした。

このシールドを利用するなら・・・

この USB Host Shield を Arduino の一番上にスタックして使うのであれば、I2C を利用することは可能だと思いますが、この Keyer の仕様上、一番上に USB Host Shield をスタックするのは絶対に変ですからね。

気づいた点

また、私が持っている赤いシールドの回路図を確認してみたところ、D7 ~ D13 の7つのピンを使用していることがわかりました。この点についても、実際の運用時には考慮が必要です。

これも問題があります。

 

この「D7」ですが、これは CW Keyer の送信機2側に接続される I/O ポートです。
(すでに他の I/O ポートがすべて使用中で、空きがありません。)

そのため、このシールドを使用すると、送信機2側の I/O ポートは利用できなくなります。


所有する USB Host Shield の問題点

  • Arduino Uno R3 のソケット全ピンに対応しない(スタックで I2C は使えない)
     → スイッチサイエンスで売ってる在庫限りのシールドなら対応可
  • 動作に必要な I/O 数が多い

という、2つの問題を解決する必要があるということです。

ということで、以下、Mini USB Host Shield を使って、この2点の問題を解決しました。

 

Mini USB Host Shield で Uno シールドを作る


以前、動作しなくてそのまま放置していた「GAOHOU USB Host Shield」を、今回改めて試してみたところ、無事に動作確認ができました。どうやら、問題は私の使い方にあったようです。

この「USB Host Shield mini」についてですが、以前 AliExpress で急いで2個注文したものの、今のところ全く届く気配がありません。本来なら届いた製品と比較しながら調査を進める予定だったのですが、気がつけば「USB Host Shield」沼に片足を突っ込んでしまい、何とか解決しようと再挑戦してみることにしました。

最初は壊れているのでは?と思ったこともありましたが、まあ、そう簡単に壊れるものでもないはずです。実は前に試したとき、薄々「自分の使い方に問題があるのでは」と感じていたんですよね。そこで今回は落ち着いてじっくり取り組むことにしました。

さて、この「GAOHOU USB Host Shield」ですが、中華製で価格はおよそ400円程度と非常にリーズナブルです。国内でスイッチサイエンスが取り扱っている在庫限りの製品と比べると、その価格は約1/10。コストを抑えたい方には魅力的な選択肢になります。

Amazon では転売業者が1,000円以上の価格を設定していることがあります。また、ショップによっては発送元が中国である場合もあり、その結果、商品の到着に時間がかかるうえに費用も高くついてしまいます。このような状況を避けるためにも、十分注意してください。

まず、基本のセットスタイルでチェックします。
Arduino Uno、ブレッドボード、USB Host Shield mini を使い、このスケッチでテストを行います。 

前回上手くいかなかった原因は何だったのでしょうか・・・
ジャンプワイヤの接触が悪かった可能性も考えられます・・・
こういった作業では、焦らず丁寧に進めることが大切です。

テストがうまくいったので、本番用にバニラシールドを使ってしっかりと組み立てることにしました。
気づけば深夜2時まで作業していました・・・これ、半分は意地ですね。Hi

構成は、USB Host Shield mini とリセットボタン用のタクトスイッチ1つだけというシンプルなものです。

 

完成しました!
すべての配線は表側実装で行いました。

I/Oのピン数を多く使う上に、価格も4,000円と高めな USBHostShield-Rev2 より、こちらの方が断然おすすめです。

f:id:JH1LHV:20200502150822j:plain


I/O 端子は D9 と D10 の2本だけを使用するため、CW Keyer 基板と干渉することはなく、動作に影響を与える心配もありません。さらに、コストを抑えて手軽に作れるのも大きな魅力です。

基板は3段のスタック構造になっています。
スタック(ゲタ)として使用するピンソケットは、足の長いピンを半分に切断すると、ちょうど良い長さになります。

もちろん、LCD の表示も問題ありません。
 

最後に、USB キーボードを使って自分のコールサイン「JH1LHV」を送出してみました。
※ USB キーボードを接続する場合は、電源容量の関係から mega2560 から電源を取らずに、外部電源を使用することをお勧めします。

ほっと一安心です。
「USB キーボード全盛の時代に使えないのは何だか気になるなぁ」と思っていたので、これで肩の荷が下りた気分です。Hi

パソコンを繋がず、キーボード単独で CW を送信するなんて、実際にはあまりやる人はいないだろうなとも思っています。

普通はパソコンを使って、WinKey などで操作しますよね。

 

■ ■ ■

 

Arduino CW Keyer に関するネタをあれこれと、気づけば6年近く続けてきました。しかし最近、「もう Arduino Uno 互換にこだわり続ける必要はないんじゃないか」と強く感じています。

6年前に始めた当初は、「Arduino Uno 互換で作っておけば、これから登場する様々な Uno シールドがそのまま使えるだろう」と考えて、あえて Uno 互換にこだわっていました。ですが、時代は進み、マイコンの性能も向上し、形状も変化しています。

そんな中、この CW Keyer も次のステップに進む時が来たのではないでしょうか。具体的には、mega2560 pro mini の機能をフルに活用した新しい形へと進化させるべきだと考えています。

例えば、mega2560 pro mini に移行することで、I/O ピンが許す限りメモリボタンや接続できる送信機の数を増やすことが可能になります。さらに、両面基板1枚に USB Host Shield mini を最初から組み込む設計にすれば、よりスッキリした構成が実現できます。

加えて、ケーシングにも配慮して、イヤホンジャックや LCD の I2C 端子など、外部に出す必要のあるコネクタ類をきちんと配置することも必要です。こうしたアップデートを考えると、本当に夢が広がります。

ということで、6年続けてきた Arduino CW Keyer のプロジェクトですが、これからも新しいアイデアを取り入れながら進化を続けていきます。

今後の展開をお楽しみに!

 

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枚の基板を、最終的なバージョンとしたいと考えています。
もう、これ以上、沼に落ちるのは・・・ちょっとね。
ー・・---

 

ARDUINO CW KEYER を試してみた ~その51~ (Mega2560 Pro Mini ボード)

今日は mega2560 pro mini Board の組み立てです。
K3NG の Keyer で、USB キーボードが使えるようにする試みになります。

必要な部品は主にピンソケットだけなので、ハンダ付け作業を連続して進めるだけで完了します。

作業の重要なポイントは、ソケットのハンダ付けです。
特に、マイコンボードの細ピンヘッダと基板側の丸ピンソケットは、必ずまっすぐ取り付けるように注意してください。
ピンの数が多いため、少しでもズレると接続に支障が出る可能性があります。慎重に作業を進めることが大切です。

mega2560 Pro Mini マイコンのピン付けには、付属の太いピンヘッダではなく、別途用意した細いピンヘッダを使用します。

マイコンのピンが斜めにならないようにするため、ブレッドボードを使ってハンダ付けを行います。この部分のハンダ付け作業は、特に慎重に進めることが大切です。

今回の基板変更のポイントです。

USB Host Shield を使用して USB キーボードを接続できるようにするため、ICSP 端子(2 × 3)を生かしました。

正直なところ、USB キーボードを使わない場合は、これまでの基板でも十分に対応できます。そのため、このような変更を加える必要はないかもしれません。
しかし、K3NG のスケッチ自体が USB キーボードに対応しているにもかかわらず、それを活用できない状態というのが、どうしても気になってしまいます。

2.1mmのDCジャックを使用する場合は、この秋月電子の細いピンのタイプでなければ基板に合わないことがあるため注意してください。

三端子レギュレータには、8V・1.5A 対応の TO-252 パッケージ品を使用しました。

実は、少し改良を加えた v1.1(USBシールドには非対応)という基板も作成していました。
そのため、基板は合計で3回作り直したことになります。
現在、この v1.2 が最新バージョンとなっています。

今回作成した基板に Arduino Uno 用の USB Host Shield を直接差し込むことで、USB キーボードを使用できるようになります。

この基板は USB Host Shield を直接接続できるように設計を変更したため、もし Shield が正しく認識されなければ困るところでしたが、無事に認識してくれました。

前回使用したサンプルプログラムを動かしてみました。
USBキーボードのキーを押すと、それに応じてターミナルに文字(アスキーコード)が表示されました。


今回作成したボードに、以前作成したCW Keyer基板を重ねてみました。
予想通りですが、LCDに「K3NG Keyer hi」という文字がしっかり表示されました。動作確認も問題ありません。

次回は、残りのもう1枚の基板である CW Keyer 本体を作成する予定です。

さらに、この2枚の基板の間に USB Host Shield を挟み込む形で接続し、USB キーボードを使用して CW Keyer として動作させられるか試してみたいと思います。どんな結果になるか楽しみです。

それでは、次回をお楽しみに!

 

ARDUINO CW KEYER を試してみた ~その50~ (Mega2560 Pro Mini ボード)

今回は、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 キーボードの接続試験では、ここのスケッチを使いました。

f:id:JH1LHV:20200322182056j:plain
ちゃんと動作することを確認しました。

f:id:JH1LHV:20200322183039j:plain

GAOHOU Mini USB Host Shield、やっぱり動きませんでした。
2020/05/02 GAOHOU Mini USB Host Shield の動作確認ができました。)

オシロスコープで確認したところ、最初のクロック信号が出ていないことを確認しました。これが物理的な故障なのか、それとも単に使い方に問題があるだけなのかはわかりません。現在、AliExpressで同じ製品を2つ注文中なので、到着次第もう一度試してみる予定です。

ちなみに、大きいタイプの USB Host Shield は、どちらも問題なく動作しました。

さて、USB キーボードを使用できるようにするために、CW Keyer のメイン基板に割り当てている IO を見直す必要があります。再設計した基板を新たに発注するつもりです。

いやはや、こんな作業ばかりしていたら、気づけば連休が終わってしまいました。
トホホ。

 

ARDUINO CW KEYER を試してみた ~その49~ (Mega2560 Pro Mini ボード)

前回の製作ミスを修正。
外部電源用の三端子レギュレータを 5V(取付けミス)から 8V のものに変更しました。

7805 → 7808 に変更。

前回の製作で誤って取り付けてしまった TO-252 パッケージのレギュレータ IC「7805」を取り外し、代わりに同じ形状の「7808」を取り付けました。

このような3本の端子にハンダが盛られている表面実装パーツを取り外す際は、ホットエアガンを使うと簡単に作業できます。

ハンダ吸取り線を使って少しずつハンダを取っていると、なかなか部品が外れず、うまくいかないことがあります。さらに、無理に作業を続けると基板のパターンを剥がしてしまう可能性もあり、最悪の場合、修理不能になってしまいます。こういったリスクを避けるためにも、ホットエアガンを使った熱風での除去作業をおすすめします。効率も良く、作業がスムーズに進みます。
 

(SMD パーツの取り外し方)

  1. 耐熱テープで保護
    取り外す 7805 の周辺を耐熱テープを使って保護します。
  2. フラックスを塗布
    3カ所のハンダ部分にフラックスをたっぷりと塗ります。
  3. ホットエアガンで熱風を当てる
    温度を 370℃ 程度に設定して、ハンダの色が光沢のある銀色になるまで熱風を当てる。
  4. パーツを取り外す
    ハンダが完全に溶けたところで、ピンセットを使って摘まみだします。

 

パーツを取り外した直後。
残った残骸ハンダは、吸取り線でキレイにします。

ランドに再度フラックスを塗って、交換パーツの 7808 を取り付けます。
最後に、基板に残ったフラックスを、フラッククリーナでキレイに洗い流して終了です。
 


前回の失敗は、Mega2560 Pro Mini の Vin 端子に必要な電圧が 7~12V だったのに対し、間違えて 7805 レギュレーターで 5V を供給してしまったことが原因でした。

その結果、マイコンボードの +5V 出力端子に実際には 3.7V しか出力されず、接続していた LCD(液晶ディスプレイ)の動作電圧を下回ってしまい、うまく駆動できなくなりました。LCD は暗く点灯するだけで、そこでようやくミスに気づいた次第です・・・反省です。

そこで、今回は 7808 レギュレーターに交換して、8V を供給するように修正しました。その結果、LCD も本来の明るさを取り戻し、無事に正常動作するようになりました。

 

ARDUINO CW KEYER を試してみた ~その48~ (Mega2560 Pro Mini ボード)

本日、Mega2560 Pro Mini を搭載した Arduino 互換ボードを組み立てました!
作業中に写真を何枚か撮影しましたので、その様子をシェアしたいと思います。

Arduino Unoと互換性のあるピン配列を採用し、さらに外部電源にも対応できるようにしたため、必要なパーツは非常に少なく、構成もシンプルです。

ハンダ付け作業を始める前に、必要なパーツをこのように揃えておくと、その後の作業をスムーズに進められます。

一度でうまく動作するか分からなかったため、丸ピン IC ソケットを使い、取り外しができるように工夫しました。(Mega2560 Pro Mini ボードを取り外すことがなければ、基板に直付けの方が素早く完成させることができます。)

ソケットを取り付ける際には、裏返したときに位置がずれないよう、耐熱テープで固定してからハンダ付けしました。

今回の CW Keyer で使わないピンのところには、丸ピン IC ソケットは取り付けませんでした。また、ピンソケットについても同様に、耐熱テープで固定してからハンダ付けしました。

Mega2560 Pro Mini 本体にピンを取り付ける際は、ハンダ付けする前にブレッドボードを使ってピンをしっかり固定すると、ハンダ付け後にピンがズレるのを防げます。

Mega2560 Pro Miniボードのピン配置は、2.54mmピッチの整数倍ではありません。そのため、ブレッドボードに全てのピンを挿して一度にハンダ付けすることはできません。ハンダ付けは片側ずつ行う必要があります。

ハンダ付けしない側の下には、使用しないピンソケットを敷くと、ボードが水平になり、安定した状態で作業がしやすくなります。

反対側も同じように水平をとりながら、耐熱テープで固定します。

こんな感じです。

この「Mega2560 Pro Mini」ボードはピンの数が多いため、ハンダ付けの際に少しでも傾いてしまうと、後でソケットに正しく挿せなくなることがあります。最悪の場合、ピンが折れてしまうこともあります。

そのため、ピン付けを行う際は、細心の注意を払って慎重に作業することが重要です。

ハンダ付けがすべて完了しました。
今回の製作は使用するパーツが少ないため、短時間で作業が終わります。
なお、電解コンデンサには背の低いルビコン製を使用しています。(100uF MH510uF MH7

<あとになってミスに気づきました。。。トホホ。。。>
Mega2560 Pro Mini ボードの Vin 端子は、7~12V の入力が必要で、わたしは思い込みのまま、5V の三端子レギュレーターを付けてしまいました。

このままでは、外部電源を使ったときにパワー不足になります。
今、手持ちパーツはないので何もできませんが、その内、8V のレギュレータに交換したいと思います。

今回取り付けた丸ピンソケットに、Mega2560 Pro Mini ボードを無事に挿し込むことができました。
今回は自作した KiCad のフットプリントを使っていたため、きちんとサイズが合うかどうか心配していましたが、ピッタリで安心しました。

Mega2560 Pro Miniボードを基板に直接取り付けなかったため、ピンソケットよりもわずかに高くなってしまいました。(これは想定内ではありますが。)

AVR マイコンの ATmega1284 は、通常ファームウェアを書き込む手間がかかるため、少し扱いが難しいですよね。でも、今回ご紹介するこのボードは、初めから Arduino IDE に対応しているので、手軽に開発を始められるのが嬉しいところです。 

ピンソケットを2段に重ねてゲタを履かせます。
 

足長のピンを半分に切断して、挿した時にピッタリ合うようにします。 

ピンの足を半分の長さにすることで、接合部分がこのようにぴったりと合います。
ピンソケットに高さのバリエーションがあれば便利ですが、そういったものは市販されていないようです。

重ねたピンソケットの接続部分を接着剤を使ってしっかり固定するといいかもしれません。

とりあえず、スペーサで足を付けておきます。

こんな感じです。

最後に、今回組み立てた Arduino 互換ボードに、これまで使っていた CW Keyer ボードを挿し込んで(重ねて)終了となります。

横から見ると、こんな感じです。

(動作確認)

  1. パソコンの USB ポートにボードを接続します。
  2. 今回作成したボードの電源 LEDが赤く点灯します。
  3. Arduino IDE で、「K3NG Arduino CW Keyer」のスケッチを書き込みます。
  4. スケッチの書き込み終了でプログラムは自動で起動し、モールス音で「HI」が流れると同時に、LCD には「K3NG Arduino CW Keyer」と表示されました。

今日はここまで作業を進めましたが、問題なく正常に動作してくれました。

それにしても、パーツの準備やハンダ付け、最後のモールス確認を終えるより、このブログを書く時間の方が長くかかってしまいました。。。

 

ARDUINO CW KEYER を試してみた ~その47~ (Mega2560 Pro Mini ボード)

新型コロナ騒動のさなか、渦中の中華に発注していた基板が本日到着しました。
2月7日に OCS 配送オプションを付けての製造依頼だったんですが、思いのほか早い到着で驚いてます。


2月26日に「出荷済み」のメールを受け取ったのですが、なんと数日で荷物が到着しました。これは一体どういうことなのでしょうか。

新型コロナウイルスの感染拡大により、中国全域で貨物輸送が遅延していると聞いていました。そのため、今回の荷物もいつ届くか分からないと半ば諦めていたんです。ところが予想に反して、こんなにも早く手元に届くなんて本当に驚きです。

ちなみに、今回の荷物は深浅(シンセン)から発送されてきました。


中華から届いた荷物、大丈夫なの?

中華製の部品が届くと気になるのが、「これって大丈夫なんだろうか?」ということ。特に、新型コロナウイルスの感染が話題になった時期は、荷物を通じた感染の可能性を心配した方も多いですよね。

テレビなどでは「衣服や物を通じて感染する可能性は事実上ない」と説明されていました。ただ、未知のウイルスについては完全に解明されているわけではないので、不安が残るのも無理はありません。

新型コロナウイルスはインフルエンザのような呼吸器感染症なので、基本的には人から人への感染が主な経路とされています。くしゃみや咳による飛沫感染が主だとされていますが、飛沫がドアノブなどの表面に付着した場合、どのくらい生存するのかも気になりますよね。

ネットで調べたところでは、専門家によると数時間程度と推測されています。ただし、荷物の場合、発送から手元に届くまでに数日以上かかるのが一般的なので、その間にウイルスが死滅している可能性が高いと言われています。

電子工作好きで中華製のパーツを頻繁に購入する私も、こういったことは気になります。でも、届いた荷物が原因で感染するリスクは極めて低いと信じて、前に進まないと趣味も楽しめませんよね。

それでも念のため、荷物が届いたらアルコール消毒などできる範囲で対策をしています。特に袋や梱包材を開ける際は慎重に行い、手洗いも徹底しています。新型コロナウイルスはまだ完全に解明されていない部分もありますが、心配しすぎず、できる限りの予防を心がけながら趣味を楽しみたいですね。

ということで、話題の中国から(日本も今、大変な状況ですね)届いた基板。
期待どおりに動作してくれるかどうかは、また明日以降に試してみます。

さて、日本列島全体がまるで新型コロナウイルスに「感染」してしまったような状況ですね。文化や教育をはじめ、さまざまな活動が一時的にストップしています。

こんなときだからこそ、無理をせず、ゆっくり休んで元気を取り戻す時間にしたいものです。

 

ARDUINO CW KEYER を試してみた ~その46~ (Mega2560 Pro Mini ボード)

Mega2560 Pro Mini の Arduino 互換ボード基板を、コロナ騒ぎで大変なことになってる・・・
そんな中華さんに発注しました。

こりゃあ、いつ届くか分からないなぁ。。。

やっつけ仕事で基板化したので、うっかりミスがありそうです。

何度か見直しはしたんですが・・・
結局、パーツの向きが逆だったとか、基板が届いてパーツの実装中に気づくこと然りで。
なかなか一発で、「ハイ、成功」とはならないんですよね。。。

基板の発注は、いつも利用している Fusion PCB にお願いしました。
サイズは ATmega1284p ボードと同じ 8cm × 8cm にしたため、基板上にかなり余裕ができています。

 

コロナの影響で、2月10日から営業再開とのことです。

特に急ぎの用件があるわけではないのですが、追加で5ドル支払うと OCS 配送が利用でき、納期が半分になるとのことだったので、どんなものか試してみようと注文してみました。

本来であれば、コロナの影響がなければ発注から1週間ほどで届くはずでした。しかし、営業再開が遅れているうえ、物流全体も正常に機能していない状況を考えると、正直なところ、いつ届くのかはわかりません。

そう考えると、今回の注文はわざわざOCS配送を選ばなくてもよかったのかもしれませんね。

それにしても、コロナの影響は日に日に深刻さを増しています。感染者数が増加の一途をたどる中、不安な日々がしばらく続きそうです。

それなら、週末の秋葉原巡りは控えた方が良さそうですね。。。

 

ARDUINO CW KEYER を試してみた ~その45~ (Mega2560 Pro Mini ボード)

Mega2560 Pro Mini ボード。
意外に大きかった。

シングルボードで作り直す前に、まずは Arduino Uno のバニラ基板を使ってバラック配線で動作確認をしようと準備してみました。しかし、予想以上に Mega2560 Pro Mini ボードのサイズが大きく、配線が難しそうだったため、この方法は急遽断念しました。

Uno のバニラ基板に重ねてみたら、こんな感じで・・・手配線は止めました。

当初、この Mega2560 Pro Mini ボード使って、CW Keyer 自体を1枚の基板にまとめる計画で進んでたんですが、ボードを並べてみたら意外に大きくことが判明し、なんやかんと弄りまわすのも、なんかムダなような気がしてきたので、これまで作ってきたボードの考えを継承する方向に切り替えることにしました。

ボードの大きさは 16×2 の LCD に合わせた、従来の大きさで続行します。
CW Keyer ボード(LCD が付いてる上に刺さってる基板)は、何もせずこのままでいきます。

下側の ATmega1284 を搭載した Arduino 互換ボードを、一から作り直します。
(ATmega1284 はブートローダの書き込みなどが必要で、使い始めるハードルが少し高かったためです。)

 

外部電源が使用できるよう、DCジャック周りの回路はそのまま残すことにしました。
また、基板には余裕のあるスペースができましたが、無理に小型化せず、これまでと同じ大きさを維持することにしました。


今日は配線作業をお休みして、Mega2560 Pro Mini ボードのフットプリントだけを描いてみました。

近日中には、ATmega1284 を使った Arduino 互換ボードと同じような形式で、Mega2560 Pro Mini を載せた Arduino 互換ボードを中華系の基板製作サービスに発注できそうです。ただし、春節が近づいているので、今注文してもいつ届くのか予想がつきません。タイミングが悪いですね。

このスタイルで動作確認が取れれば、CW Keyer 基板と、この Mega2560 Arduino 互換ボードの2種類について、追加で発注する予定です。

 

ARDUINO CW KEYER を試してみた ~その44~ (Mega2560 Pro Mini ボード)

最近、中華製の Mega2560 Pro Mini という Arduino 互換ボードが販売されているのを見つけたので、つい購入してみました。

さて、購入したからには恒例の実験です。このボードで K3NG の CW Keyer が動作するのか試してみることにしました。

とりあえず、2個買ってみました。

ボードの裏面。



Nanoと比べると、確かにこのくらいの大きさになるのも納得です。チップのサイズがほぼ2倍ですからね。ただ、秋月電子で売ってる一般的な Mega2560  と比較すると、大きさは約1/4、価格はなんと1/10と、とても手頃です。

これから主流となるボードの一つになるかもしれませんね。

(マイコンチップ単体のメモリ比較)

型式 動作電圧 I/O数 Flash SRAM EEPROM
ATMega328 2.7~5.5V 23  32K  2K  1K
ATMega1284 1.8~5.5V 32  128K  16K  4K
ATMega2560 4.5~5.5V 86  256K  8K  4K
ATMega4809 1.8~5.5V 34  48K  6K  256


さすが、ATmega2560 です。
Uno の 328 と比べると、I/O 数、メモリ容量は、もう桁違いの大きさです。
趣味の工作程度なら、もうなにも気にせず、いろんな機能がジャンジャン詰め込めそうです。

で、前回の nano every と同じ keyer_features_and_options.h の設定でコンパイルしてみました。 

 

ボードとプロセッサの設定を Mega2560 にします。

エラーもなくコンパイルが完了し、ボードへの書き込みも問題なく終わりました。

というわけで、Nano Every を使うのはひとまずおしまいにして、これからはこの Mega2560 Pro Mini ボードでいろいろと遊んでみようと思います。

さて、それでは、このマイコンボードを使って、1枚基板で動作する Arduino CW Keyer を作ることにします。

 

ARDUINO CW KEYER を試してみた ~その43~ (Arduino Nano Every)

公式の Arduino から Arduino Nano Every というマイコンが販売されたので、早速入手してみました。


Arduino Uno や Nano はフラッシュメモリの容量が小さいため、CW Keyer の機能をすべて使用するのが難しく、一部の機能を制限して使う必要がありました。しかし、新しく登場した Nano Every では、搭載されているマイコンが ATMega4809 にアップグレードされ、メモリ容量も従来機種より約 50% 増加しています。

これにより、CW Keyer の設定ファイルである "keyer_features_and_options.h" のコメントを外して多くの機能を有効化しても、メモリエラーを気にせずコンパイルできる可能性が高いと考えました。そこで、今回 Nano Every を試しに購入してみました。
  

(マイコンチップ単体のメモリ比較)

型式 動作電圧 I/O数 Flash SRAM EEPROM
ATMega328 2.7~5.5V 23  32K  2K  1K
ATMega1284 1.8~5.5V 32  128K  16K  4K
ATMega4809 1.8~5.5V 34  48K  6K  256

 


今回新たに販売された Nano ファミリーには、Wi-Fi や Bluetooth に対応したバージョンを含め、いくつかのバリエーションがあります。ただし、今回は K3NG の CW Keyer の動作確認を目的としており、無線機能を使う予定はありません。そのため、技適の届出が不要で手軽に扱えるうえ、最も安価な標準モデル「every($9.90)」を選ぶことにしました。

従来の Nano と、ピン数、配置が同じなので、これまで作ったボードの置き換えが可能です。

 

これまでの ATmega1284 と同じ keyer_features_and_options.h の設定でコンパイルしてみました。

ボードの設定を Arduino Nano Every にして、ATMEGA4809 を選択します。

コンパイルできました。

書き込みが成功しました。

とりあえず今日のところは、コンパイルが通り、書き込みができることを確認しました。 

今後はこれまでの ATmega1284 を使ったオリジナルボードから、この nano every に移行し、シングルボードに作り直していきたいと思います。

 

■ ■ ■

 

以下、今回のコンパイルで設定した keyer_features_and_options.h です。

// compile time features and options - comment or uncomment to add or delete features
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior


 #define FEATURE_COMMAND_BUTTONS
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
#define FEATURE_MEMORY_MACROS
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
// #define FEATURE_BEACON
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
// #define FEATURE_SERIAL_HELP
// #define FEATURE_HELL
#define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
// #define FEATURE_DEAD_OP_WATCHDOG
// #define FEATURE_AUTOSPACE
// #define FEATURE_FARNSWORTH
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
#define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
// #define FEATURE_LCD_SAINSMART_I2C
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
// #define FEATURE_LCD_HD44780
#define FEATURE_CW_DECODER
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
// #define FEATURE_PTT_INTERLOCK
// #define FEATURE_QLF
// #define FEATURE_EEPROM_E24C1024
// #define FEATURE_STRAIGHT_KEY
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
// #define FEATURE_PADDLE_ECHO
// #define FEATURE_STRAIGHT_KEY_ECHO
// #define FEATURE_AMERICAN_MORSE
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
// #define FEATURE_SEQUENCER    :    :  以下、修正なし

 

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

前回の記事では、USBシリアルモジュールのmicro USBコネクタ部分が壊れてしまった話を書きました。

「修復しなきゃ」と思いながらも、ここ最近は忙しくて放置状態が続いていました。ようやく時間が取れるようになり、基板も手元に残っていたので、修復ではなく、思い切って最初から作り直すことにしました。

今回は、多少手荒に扱ってもコネクタ部分が壊れないように工夫を加えながら作成したので、その記録をまとめてみます。

 

f:id:JH1LHV:20190526155640j:plain

中華製で@100円程度のシリアルモジュールですが、USB ケーブルを何度も抜き差ししていたところ、とうとうコネクタ部分がポロリと外れてしまいました。

壊れた原因についてですが、これは決して中華製だから粗悪品だったというわけではありません。完全に私の使い方が悪かっただけです。

こうした背景もあって、今回は根本的な解決にはなりませんが、いくつか対策を講じながら、モジュールを一から作り直しました。
 


今回の作業では、ハンダ付けを始める前に、必要なパーツをすべて揃えておきました。

パーツを事前に並べてからハンダ付けをするのは久しぶりです。最近は、パーツケースを探りながらその都度ハンダ付けをする、いわば行き当たりばったりの作業ばかりしていました。そのせいで効率が悪く、作業がなかなか進まないことも多かったんですよね。

やはり、キットのようにパーツを揃えてから作業を始めると、ミスが減りますし、結果的に作業全体がスムーズに進みます。

・・・とはいえ、毎回こうした準備ができないのは、日頃のパーツ整理ができていないからなんです。増える一方のストックパーツをまったく整理できておらず、正直、管理が追いついていません。

今回も、たったこれだけのパーツを探して並べるのに30分ほどかかりました。パーツ管理を効率的に行う良い方法ってないものでしょうかね。

左:1作目(シリアルモジュール、USB 頭もげ)
右:2作目(頭もげ対策済み)
 

頭もげ対策 ① ~ピンソケット化~

どうせ @100 の安物モジュールです。
壊れ(もげ)たら、新しいヤツに交換すればいいんじゃないかと思いますが・・・。
モジュールの差し替えが簡単にできるように、ソケット方式に変更しました。
 

普通のピンソケットだとシールドを重ねた時にモジュールがぶつかっちゃうので、背が低い丸ピン IC 用ソケットを使いました。

このピンソケット(低メス)でもよかったのですが、ストックがありませんでした。

シリアルモジュールに普通のピンヘッダを使うと、ピンが太すぎて IC 用の丸ピンソケットに挿さらないので、抵抗やコンデンサをハンダ付けた時に出た線クズを使ってモジュールのピンにしました。

モジュールの上から廃材の線クズをしっかり挿して(ラジペン使って強く挿し込む)ハンダ付けします。

こんな感じです。

このままだとモジュールがグラつくので、こんな感じにスペーサーを接着剤で取り付けました。

頭もげ対策 ② ~シリコン接着剤で固める~

続いて。
多少の力が加わっても頭が外れないようにするために、シリコン剤を使ってしっかりと固定する方法も試してみました。



信越シリコーン 万能シーリング剤 100ml 透明 KE45T-100

このシリコン接着剤は、非常に優れた絶縁性を持っているため、電気部品の固定に最適です。また、耐熱温度は180度と高く、熱を発する部品の固定にも安心して使用できます。

一般的な接着剤と比べると価格はやや高めですが、それに見合うだけの性能がある製品だと思います。

いざというときに1本持っておくと安心できる、頼もしい小道具のひとつです。
 

爪楊枝を使って盛りました。

頭もげ対策 ③ ~USB micro 延長ケーブル~

やっぱりこの方法が、お手軽対策かな。

USB micro 延長ケーブル (20cm) を経由させることで、モジュールへのテンションを軽減させます。

ここまでやって思いましたが・・・
ピンソケット化と、この延長ケーブルだけで大丈夫な気がします。
シリコン接着剤で固めることまでは必要なかったかも。
 

最終的に、こんな感じですかね。


この「ARDUINO CW KEYER」の話題は、まだまだ続きます!
なぜなら、K3NG のキーヤーは本当に素晴らしいと思っているからです。

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

@100で中華から購入した USB シリアルモジュールの頭部分が取れてしまいました。

なんどもなんども、抜き差ししたからなぁ~。
コネクタが小さいこともあって、変なテンションがかかったみたいです。

モジュールタイプの機器って、基本的には何度も抜き差しするものではないですよね。
特に、モジュールのコネクタ部分は見た目からしても繊細で、耐久性があまり高そうには見えません。
今回の状況は、決して中華製の安価な製品だからという理由ではありません。
これは、私自身の設計思想が原因だと思っています。
 

f:id:JH1LHV:20190314210437j:plain

ケース化してこういう、しっかりした USB コネクタを使うとか・・・

f:id:JH1LHV:20190314211030j:plain
絶縁シリコンボンドで USB コネクタのハンダ部分を固めてしまうとか・・・

f:id:JH1LHV:20190314211700j:plain
それとも、こういう USB 延長ケーブルを経由させるとか・・・


・・・何か策が必要ですね。

まぁ、モジュール自体が @100 と安価なので。
モジュールを基板に直付けしないでソケットにして、壊れれたら交換するっていうのでもイイかもです。

ということで、今度の休日にでもソケット化にしようかと思います。

なにせ、ここんとこ忙しくて。。。ゆっくり時間が取れません。。。

 

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

3月は何かと忙しくて。。。趣味に没頭できません。。。

arduino cw keyer(Arduino 1284p ボード + cw keyer シールド)の消費電流を測定してみました。

Arduino CW Keyer の電源供給は、Arduino 1284P ボードのジャンパピンで「USB シリアルモジュール」か「外部入力」のどちらを使うか選択できます。

ジャンパピンを外部電源側に設定すると、USB シリアルモジュールからの 5V 電力は遮断されるため、ボードには外部から電源(DC 9V)を供給する必要があります。

この状態でパソコンとシリアルモジュールを接続しても、パソコンの USB バスパワーによりシリアルモジュールだけが動作します。そのため、CW Keyer のシリアル通信が必要な機能は引き続き利用可能です。

Arduino 1284p ボードで使用している USB シリアルモジュールは、「TZT CJMCU CP2102 MICRO USB」という製品です。価格はおよそ 100 円程度で、AliExpress から購入しました。

このモジュールの仕様をウェブで確認したところ、USB 2.0 に対応しており、取り出せる最大電流は 500mA とのことです。

ここで少し話がそれますが、こうした USB シリアルモジュールをパソコンの USB ポートに接続する際には注意が必要です。

パソコンの USB ポートには、それぞれ規格で定められた最大電流があります。このモジュールの場合も、接続するパソコンのポートが「バスパワー」で動作している場合、供給できる電流に制限がある点を意識してください。電流が足りないと、モジュールや接続しているデバイスが正しく動作しない可能性があります。

パソコン側の USB が、

  • 2.0 なら 500mA
  • 3.0 なら 900mA
  • 3.1 なら1A
  • USB Type-Cなら 1.5A
  • USB Power Delivery なら 2A

と、取り出せる Max 電流は規定されています。(電圧5Vの場合)

たとえば、現在も主流である USB 2.0 についてです。
仕様書によると、500mA の電流を取り出せるのは、パソコンの USB ポートと USB 接続した外部機器が通信してネゴシエーションが成立した場合に限られます。パソコンと機器がネゴシエーションを行わず、単に 5V 電源として使う場合は、最大で 100mA までと規定されています。この点には注意が必要です。

Arduino 1284p ボードの USB シリアルモジュールがパソコンに認識されていれば、通信が確立するまで多少のタイムラグはあるものの、500mA 近くの電流が流せる可能性が高いと思われます。

とはいえ、Arduino 1284p ボードと Arduino CW キーヤーシールドを合わせた消費電流が 500mA を超えることは、まずあり得ないでしょう。ただし、仮に 300mA を超えるような場合、突入電流の影響も考慮すると、パソコンの USB 2.0 ポートでの使用は避けた方が安全です。

 

それでは、消費電流の測定です


今回の測定では RD UM24C という中華製の USB テスターを使いました。

www.jh1lhv.tokyo


上の写真に写っている黄色い USB テスターは UM34C という、USB3.0 に対応した新しいバージョンのものです。
ただしこの UM34C ですが、bluetooth 対応のアプリが Android バージョンしかないので、実際の測定は UM24C + PC ソフト で行いました。

bluetooth 経由で PC でロギングしました。

5V 投入で、35mA です。(ただ、電源を入れた状態です。)

この時の電源側は、0.04A でした。 

PS/2 キーボードを接続すると、38mA になりました。

 

パドルを使って長点だけの連続で、41mA です。

 


パドルやキーボード操作、メモリなんかをガジャガジャ弄ってみました。
最大でも、43mA 程度の電流です。 


ということで、
この arduino cw keyer(Arduino 1284p ボード + cw keyer シールド)ですが、
パソコンの USB 2.0 ポートに繋いでも大丈夫です。

Arduino 1284p に何か電流食いのシールドでも重ねるようなら、ジャンパを外部に切り替えて対応すれば OK ということです。