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 シールドって売ってないのかとネットで調べたんですが、1種類だけ(USBHostShield-Rev2、回路図)でしたが、スイッチサイエンスに在庫限りということで見つけました。
でも、値段が高い。(@3,685)
それに在庫限りって・・・これって、どうなの。。。
こういう USB Host Shield の需要って、あんまりないものなんですね。
ホント、この1種類しか全ピン対応品はなかったんだよね。
AliExpress や Amzon とかでも調査したんだけど、わたしが所有している I2C 端子がないものばっかり見つかるし。
この USB Host Shield を一番上にスタックするような使い方なら、このシールドでも I2C は使えるようになると思うけど、CW Keyer 基板の上にスタックするのも変だしね。
あと、わたしが持ってる赤いシールドの回路図を見てて気づいたんだけど。
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円 以上で、ショップによっては発送が中華からだったりするので、結局は時間もお金もかかるという2重苦なので、ホント注意してくださいね。
まず、基本スタイルでチェックです。
Arduino Uno と ブレッドボード + USB Host Shield mini 、そして、このスケッチでテストです。
どうして前回上手くいかなかったのか・・・
ジャンプワイヤの接触でも悪かったんでしょうか。
こういう作業、焦りは禁物ですね。
テストも上手くいったので、バニラシールドを使ってちゃんと作ることにしました。
深夜2時までやってた・・・これ、半分意地ですね。Hi
USB Host Shield mini と Reset ボタンのタクト SW 1個だけの構成です。
完成です。
すべて、表面の配線にしました。
I/O 食いで値段も 4,000円と高い USBHostShield-Rev2 より、絶対こっちの方が良いはず。
I/O は D9、D10 の2本だけなので、CW Keyer 基板と干渉することもなく、なんら影響は与えません。
それになにより、安く仕上がります。
基板、3段スタックです。
スタック(ゲタ)に使うピンソケットは、足長のピンを半分に切断するとちょうどイイ感じになります。
もちろん、LCD の表示も問題なしです。
最後に、USB キーボードでわたしのコールサイン「JH1LHV」を送出してみました。
ふ~う。
なんかホッとしました。
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 ですが・・・
まだまだ、続きますよ。